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
icSourceDomainCode | input | character | The domain from which the non-taxable rates will be copied. |
icTargetDomainCode | input | character | The domain to which the non-taxable rates will be copied. |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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.