project QadFinancials > class BVAT > method ApiCreateNonTaxable

Description

automatically create a non taxable record (input and output). Tables that are created are tVat and tVatRule


Parameters


icSourceDomainCodeinputcharacterThe domain from which the non-taxable rates will be copied.
icTargetDomainCodeinputcharacterThe domain to which the non-taxable rates will be copied.
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BMfgDomain.AdditionalUpdates


program code (program3/bvat.p)

assign 
    oiReturnStatus = -98
    viLocalReturnStatus = 0.

<Q-4 run MfgTaxCodeByTaxType (all) (Read) (NoCache)
   (input icSourceDomainCode, (DomainCode)
    input {&VATTAXTYPE-NONTAX}, (TaxType)
    output dataset tqMfgTaxCodeByTaxType) in BMfgTaxCode >

assign 
    viVatRowid = -1
    viVatRuleRowid = -1.

empty temp-table tApiVat.
empty temp-table tApiVatRule.

for each tqMfgTaxCodeByTaxType:

    do viVatType = 1 to 2: /* Input or Output */

        create tAPIVat.
        assign 
            tAPIVat.tc_Status = 'N':U 
            tAPIVat.VatIsActive = true
            tAPIVat.VatDescription = tqMfgTaxCodeByTaxType.tctx2_desc
            
            tAPIVat.tc_Rowid =  string(viVatRowid)
            viVatRowid = viVatRowid - 1
            
            tAPIVat.TxuTaxUsage = tqMfgTaxCodeByTaxType.tctx2_tax_usage
            tAPIVat.VatIsAbsorbed = tqMfgTaxCodeByTaxType.tltx2_ara_use
            tAPIVat.VatIsRetained = tqMfgTaxCodeByTaxType.tltx2_apr_use
            tAPIVat.VatCode = tqMfgTaxCodeByTaxType.tctx2_tax_code
            tAPIvat.tcDomainCode = icTargetDomainCode
            tAPIVat.VatInOut = if viVatType = 1 then "Input":U else "Output":U
            tAPIVat.VatTransactionType = if viVatType = 1 then "Purchase":U else "Sales":U
            tAPIVat.VatPercentageLevel = "None":U.
        
        if viVatType = 1 then do: 
            if tAPIVat.VatIsRetained then 
                viNumRules = 2. 
            else 
                viNumRules = 1. 
        end.
        else if viVatType = 2 then do: 
            if tAPIVat.VatIsAbsorbed then 
                viNumRules = 2. 
            else 
                viNumRules = 1. 
        end.
      
        do viVatRule = 1 to viNumRules:

            create tAPIVatRule.
            assign 
                tAPIVatRule.tc_ParentRowId = tAPIVat.tc_Rowid
                
                tAPIVatRule.tc_Rowid = string(viVatRuleRowid)
                viVatRuleRowid = viVatRuleRowid - 1

                tAPIVatRule.tc_Status = 'N':U
                tAPIVatRule.VatRuleBaseFull = "Full":U 
                tAPIVatRule.VatRuleSequence = viVatRule
                tAPIVatRule.VatRuleIsPosting = false  
                tAPIVatRule.VatRuleRef1 = "Initial":U   
                tAPIVatRule.VatRuleOperator = "*":U
                tAPIVatRule.VatRuleUsage = "none":U  
                tAPIVatRule.VatRuleRounding = "norounding":U 
                tAPIVatRule.VatRuleIsPassBaseValue = False 
                tAPIVatRule.VatRuleIsDelayed = False   
                tAPIVatRule.VatRuleValue = 0  
                tAPIVatRule.VatRuleDelayCorrection = 0 
                tAPIVatRule.InvoiceGLProfile_ID = 0     
                tAPIVatRule.CreditNoteGLProfile_ID = 0     
                tAPIVatRule.DelayedGLProfile_ID = 0
                tAPIVatRule.VatPercent_ID = 0

                tAPIVatRule.tcInvoiceVatGroupCode =  
                    if viVatRule = 1 then (
                        if viVatType = 1 then 
                            if tqMfgTaxCodeByTaxType.tctx2_voc_tx_grp = "":U 
                            then {&VATTAXTYPE-NONTAX}
                            else tqMfgTaxCodeByTaxType.tctx2_voc_tx_grp
                        else 
                            if tqMfgTaxCodeByTaxType.tctx2_inv_tx_grp = "":U 
                            then {&VATTAXTYPE-NONTAX}
                            else tqMfgTaxCodeByTaxType.tctx2_inv_tx_grp 
                    ) else "":U

                tAPIVatRule.tcCreditNoteVatGroupCode =  
                    if viVatRule = 1 then (
                        if viVatType = 1 then 
                            if tqMfgTaxCodeByTaxType.tctx2_cr_voc_tx_grp = "":U
                            then {&VATTAXTYPE-NONTAX}
                            else tqMfgTaxCodeByTaxType.tctx2_cr_voc_tx_grp
                        else 
                            if tqMfgTaxCodeByTaxType.tctx2_cn_tx_grp = "":U
                            then {&VATTAXTYPE-NONTAX}
                            else tqMfgTaxCodeByTaxType.tctx2_cn_tx_grp
                    ) else "":U

                tAPIVatRule.tcRetainedVoucherVatGroup =   
                         if viVatType = 1 and viVatRule = 2 then 
                             tqMfgTaxCodeByTaxType.tctx2_ret_voc_tx_grp else "":U

                tAPIVatRule.tcRetainedCVoucherVatGroupCode = 
                         if viVatType = 1 and viVatRule = 2 then 
                             tqMfgTaxCodeByTaxType.tctx2_ret_cr_voc_tx_grp else "":U

                tAPIVatRule.tcAbsorbedInvVatGroupCode =  
                         if viVatType = 2 and viVatRule = 2 then 
                             tqMfgTaxCodeByTaxType.tctx2_ab_inv_tx_grp else "":U

                tAPIVatRule.tcAbsorbedCreditNVatGroupCode =  
                         if viVatType = 2 and viVatRule = 2 then 
                             tqMfgTaxCodeByTaxType.tctx2_ab_cn_tx_grp else "":U.
        end.
    end.

end.

find first tApiVat no-error.

if available tApiVat then do:

    <M-7 run ApiStdMaintainTT
       (input  tApiVat (tApiVat), 
        input  tApiVatRule (tApiVatRule), 
        input  {&DAEMONACTION-SAVE} (icAction), 
        input  yes (ilAtomicCommit), 
        output vcLstPrimKey (ocLstPrimKey), 
        output vcLstReturn (ocLstReturn), 
        output vcLstRowid (ocLstRowid), 
        output viFcReturnSuper (oiReturnStatus)) in BVAT>

    if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

end.

assign oiReturnStatus = viLocalReturnStatus.


Sample code: how to call this method through RPCRequestService (QXtend Inbound)

define temp-table ttContext no-undo
    field propertyQualifier as character
    field propertyName as character
    field propertyValue as character
    index entityContext is primary unique
        propertyQualifier
        propertyName
    index propertyQualifier
        propertyQualifier.

define dataset dsContext for ttContext.

define variable vhContextDS as handle no-undo.
define variable vhExceptionDS as handle no-undo.
define variable vhServer as handle no-undo.
define variable vhInputDS as handle no-undo.
define variable vhInputOutputDS as handle no-undo.
define variable vhOutputDS as handle no-undo.
define variable vhParameter as handle no-undo.

/* Create context */
create ttContext.
assign ttContext.propertyName = "programName"
       ttContext.propertyValue = "BVAT".
create ttContext.
assign ttContext.propertyName = "methodName"
       ttContext.propertyValue = "ApiCreateNonTaxable".
create ttContext.
assign ttContext.propertyName = "applicationId"
       ttContext.propertyValue = "fin".
create ttContext.
assign ttContext.propertyName = "entity"
       ttContext.propertyValue = "1000".
create ttContext.
assign ttContext.propertyName = "userName"
       ttContext.propertyValue = "mfg".
create ttContext.
assign ttContext.propertyName = "password"
       ttContext.propertyValue = "".

/* Create input dataset */
create dataset vhInputDS.
vhInputDS:read-xmlschema("file", "xml/bvat.apicreatenontaxable.i.xsd", ?).
vhParameter = vhInputDS:get-buffer-handle("tParameterI").
vhParameter:buffer-create().
assign vhParameter::icSourceDomainCode = <parameter value>
       vhParameter::icTargetDomainCode = <parameter value>.

/* Connect the AppServer */
create server vhServer.
vhServer:connect("-URL <appserver-url>").

if not vhServer:connected()
then do:
    message "Could not connect AppServer" view-as alert-box error title "Error".
    return.
end.

/* Run */
assign vhContextDS = dataset dsContext:handle.

run program/rpcrequestservice.p on vhServer
    (input-output dataset-handle vhContextDS by-reference,
           output dataset-handle vhExceptionDS,
     input        dataset-handle vhInputDS by-reference,
     input-output dataset-handle vhInputOutputDS by-reference,
           output dataset-handle vhOutputDS).

/* Handle output however you want, in this example, we dump it to xml */
if valid-handle(vhExceptionDS)
then vhExceptionDS:write-xml("file", "Exceptions.xml", true).

if valid-handle(vhOutputDS)
then vhOutputDS:write-xml("file", "Output.xml", true).

/* Cleanup */
vhServer:disconnect().
assign vhServer = ?.

if valid-handle(vhInputDS)
then delete object vhInputDS.

if valid-handle(vhOutputDS)
then delete object vhOutputDS.

if valid-handle(vhExceptionDS)
then delete object vhExceptionDS.