Description
Method that returns the default for a certain PO
Parameters
icCInvoiceTcRowid | input | character | Rowid of the current invoice |
icPODomain | input | character | Domain of the PO |
icPONbr | input | character | Number of the PO |
icCInvoiceType | input | character | Invoice Type |
itCInvoicePostingDate | input | date | Posting Date of the invoice |
itCInvoiceDate | input | date | Date of the invoice |
icOwnVatCurrencyCode | input | character | Own Vat Currency Code |
itCInvoiceTaxPointDate | input | date | Tax Point Date Of the Invoice |
idCInvoiceOriginalTC | input | decimal | Original Invoice Amount TC |
iiCInvoicePostingYear | input | integer | Year of the Invoice |
icCInvoiceJournalCode | input | character | Daybook code of the invoice |
iiCInvoiceVoucher | input | integer | Voucher |
ocPOSupplierCode | output | character | |
ocPOCurrencyCode | output | character | Currency-code of the PO |
ocPOPaymentConditionCode | output | character | Payment-condition-code of the PO |
ocBusinessRelationCode | output | character | Business Relation |
ocBusinessRelationName1 | output | character | Name of the Business Relation |
ocCInvoiceCreditorVatNumber | output | character | Supplier Tax Number |
ocReasonAllocationStatus | output | character | Allocation status of invoice status code |
ocReasonCode | output | character | Invoice Status Code |
olCInvoiceIsTaxable | output | logical | IS Taxable |
olCInvoiceIsInvoiceApproved | output | logical | Is Invoice Approved ? |
olCInvoiceIsLockPayment | output | logical | IS Lock Payment |
olCInvoiceIsLogisticMatching | output | logical | IS Logistic Matching |
ocCreditorTaxClass | output | character | Tax Class of the supplier |
ocCreditorTaxUsage | output | character | Tax Usage of the supplier |
ocCreditorTaxZone | output | character | Tax Zone of the supplier |
oiCreditorCnControlGLProfileId | output | integer | CN Control GL Profile Id |
oiCreditorInvControlGLProfileId | output | integer | Inv Control GL Profile Id |
oiCreditorDivisionProfileId | output | integer | Sub-Account profile Id |
olCreditorIsIndividualPayment | output | logical | Is Individual Payment ? |
ocCredVatNumberCountryCode | output | character | Country Code of the supplier tax number |
ocTransactionStartCountryCode | output | character | Country Code of the transaction start |
oiShipFromAddressId | output | integer | Ship From Address ID |
olControlGLIsDivisionAccount | output | logical | Is Control Account a Division Account ? |
ocDivisionCode | output | character | Sub-Account |
ocCostCentreCode | output | character | Cost Centre |
ocProjectCode | output | character | Project Code |
ocBLWIGroupCode | output | character | BLWI Group Code |
odCInvoiceExchangeRate | output | decimal | Exchange rate |
odCInvoiceRateScale | output | decimal | Rate Scale |
otCInvoiceDueDate | output | date | Due Date |
otCInvoiceDiscountDueDate | output | date | Discount Due Date |
ocMFJournalCode | output | character | MF DayBook |
odCInvoiceVatExchangeRate | output | decimal | Tax Exchange Rate |
odCInvoiceVatRateScale | output | decimal | Tax Rate Scale |
ocPurchaseTypeCode | output | character | Purchase Type Code |
oiCreditorId | output | integer | Supplier Id |
olBusinessRelationIsInterco | output | logical | Is Interco Business Relation ? |
ocBusinessRelationICCode | output | character | IC Code Of Business Relation |
olCountryIsEUCountry | output | logical | Is EU Country ? |
ocJournalCode | output | character | DayBook |
ocDaybookSet | output | character | |
ocSite | output | character | |
oiCInvoiceVoucher | output | integer | Voucher |
olCInvoiceIsInitialStatus | output | logical | IS Initial Status ? |
ocShipToBusinessRelationCode | output | character | Business relation code of the ship to |
ocShipToAddressTypeCode | output | character | Address type code of the ship to |
ocShipToAddressStreet1 | output | character | Street 1 of Ship To |
ocShipToAddressStreet2 | output | character | Street 2 of Ship To |
ocShipToAddressStreet3 | output | character | Street 3 of Ship To Address |
ocShipToAddressZip | output | character | Zip of the Ship To |
ocShipToAddressCity | output | character | City of the Ship To |
ocShipToAddressState | output | character | State of the Ship To |
ocShipToCountryCode | output | character | Country Code of Ship To |
olShipToCountryIsEUCountry | output | logical | is ship to country an eu country ? |
ocShipToTxzTaxZone | output | character | Tax zone of ship-to should be used when selecting Purchase Order |
ocRoleName | output | character | This parameter is not set anywhere in the business logic currently. It was added to enable NI Customizations default it per customer's specification. May be added to standard product in the future |
olCreditorIsWHT | output | logical | |
ocDefaultWHTCode | output | character | Default WHT Code for supplier based on the current domain |
ocWHTType | output | character | |
ocWHTDesc | output | character | |
odWHTPct | output | decimal | |
odWHTPctRecv | output | decimal | |
ocWHTGLCode | output | character | |
ocWHTDivisionCode | output | character | |
odCInvoiceCCExchangeRate | output | decimal | |
odCInvoiceCCRateScale | output | decimal | |
oiShipToAddressId | output | integer | Ship To Address ID |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program3/bcinvoice.p)
/* ================== */
/* Exception hanlding */
/* ================== */
assign oiReturnStatus = -98.
/* ======================================================================= */
/* Validate input; when information is missing then raise error and return */
/* ======================================================================= */
if icCInvoiceTcRowid = "":U or
icCInvoiceTcRowid = ? or
icPODomain = "":U or
icPODomain = ? or
icPONbr = "":U or
icPONbr = ?
then do :
assign oiReturnStatus = -3
vcMessage = trim(substitute(#T-4'Defaulting based upon purchase order: missing elementary information. PO domain: &1, PO number: &2, Invoice: &3':255(69408)T-4#,icPODomain,icPONbr,icCInvoiceTcRowid)).
<M-2 run SetMessage
(input vcMessage (icMessage),
input ' ':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input ' ':U (icRowid),
input 'QadFin-8062':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
Return.
end. /* if icCInvoiceTcRowid = "":U or */
/* ===================================================================== */
/* Find the PO and return the supplier, currency and pay-cond when found */
/* When information is incorrect then raise error and return */
/* ===================================================================== */
<Q-1 run PurchaseOrderByDomainNbrVend (all) (Read) (NoCache)
(input icPODomain, (DomainCode)
input icPONbr, (PONbr)
input ?, (POVendor)
input ?, (POCurrency)
input ?, (POType)
output dataset tqPurchaseOrderByDomainNbrVend) in BMfgPO >
find tqPurchaseOrderByDomainNbrVend
no-error.
if not available tqPurchaseOrderByDomainNbrVend
then do :
assign oiReturnStatus = -3
vcMessage = trim(substitute(#T-6'Cannot find the purchase order based upon the PO domain (&1) and the PO number (&2).':255(69409)T-6#,icPODomain,icPONbr,icCInvoiceTcRowid)).
<M-5 run SetMessage
(input vcMessage (icMessage),
input ' ':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input ' ':U (icRowid),
input 'QadFin-8063':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
Return.
end. /* if not available tqPurchaseOrderByDomainNbrVend */
assign ocPOSupplierCode = tqPurchaseOrderByDomainNbrVend.tcpo_vend
ocPOCurrencyCode = tqPurchaseOrderByDomainNbrVend.tcpo_curr
ocPOPaymentConditionCode = tqPurchaseOrderByDomainNbrVend.tcpo_cr_terms.
if ocPOSupplierCode <> "":U and ocPOSupplierCode <> ?
then do:
<M-7 run DefaultValuesSupplier
(input ? (icPoNbr),
input-output ocPOSupplierCode (bcCreditorCode),
input icCInvoiceType (icCInvoiceType),
input itCInvoicePostingDate (itCInvoicePostingDate),
input itCInvoiceDate (itCInvoiceDate),
input icOwnVatCurrencyCode (icOwnVatCurrencyCode),
input itCInvoiceTaxPointDate (itCInvoiceTaxPointDate),
input icCInvoiceTcRowid (icCInvoiceRowID),
input idCInvoiceOriginalTC (idCInvoiceOriginalTC),
input iiCInvoicePostingYear (iiCInvoicePostingYear),
input icCInvoiceJournalCode (icCInvoiceJournalCode),
input iiCInvoiceVoucher (iiCInvoiceVoucher),
output ocBusinessRelationCode (ocBusinessRelationCode),
output ocBusinessRelationName1 (ocBusinessRelationName1),
output ocCInvoiceCreditorVatNumber (ocCInvoiceCreditorVatNumber),
output vcCurrencyCode (ocCurrencyCode),
output vcPaymentConditionCode (ocNormalPaymentConditionCode),
output vcDummy (ocNormalPaymentConditionType),
output ocReasonAllocationStatus (ocReasonAllocationStatus),
output ocReasonCode (ocReasonCode),
output olCInvoiceIsTaxable (olCInvoiceIsTaxable),
output olCInvoiceIsInvoiceApproved (olCInvoiceIsInvoiceApproved),
output olCInvoiceIsLockPayment (olCInvoiceIsLockPayment),
output olCInvoiceIsLogisticMatching (olCInvoiceIsLogisticMatching),
output ocCreditorTaxClass (ocCreditorTaxClass),
output ocCreditorTaxUsage (ocCreditorTaxUsage),
output ocCreditorTaxZone (ocCreditorTaxZone),
output oiCreditorCnControlGLProfileId (oiCreditorCnControlGLProfileId),
output oiCreditorInvControlGLProfileId (oiCreditorInvControlGLProfileId),
output oiCreditorDivisionProfileId (oiCreditorDivisionProfileId),
output olCreditorIsIndividualPayment (olCreditorIsIndividualPayment),
output ocCredVatNumberCountryCode (ocCredVatNumberCountryCode),
output ocTransactionStartCountryCode (ocTransactionStartCountryCode),
output oiShipFromAddressId (oiShipFromAddressId),
output olControlGLIsDivisionAccount (olControlGLIsDivisionAccount),
output ocDivisionCode (ocDivisionCode),
output ocCostCentreCode (ocCostCentreCode),
output ocProjectCode (ocProjectCode),
output ocBLWIGroupCode (ocBLWIGroupCode),
output odCInvoiceExchangeRate (odCInvoiceExchangeRate),
output odCInvoiceRateScale (odCInvoiceRateScale),
output otCInvoiceDueDate (otCInvoiceDueDate),
output otCInvoiceDiscountDueDate (otCInvoiceDiscountDueDate),
output ocMFJournalCode (ocMFJournalCode),
output odCInvoiceVatExchangeRate (odCInvoiceVatExchangeRate),
output odCInvoiceVatRateScale (odCInvoiceVatRateScale),
output ocPurchaseTypeCode (ocPurchaseTypeCode),
output oiCreditorId (oiCreditorId),
output olBusinessRelationIsInterco (olBusinessRelationIsInterco),
output ocBusinessRelationICCode (ocBusinessRelationICCode),
output olCountryIsEUCountry (olCountryIsEUCountry),
output ocJournalCode (ocJournalCode),
output ocDaybookSet (ocDaybookSet),
output ocSite (ocSite),
output tCInvoiceStage (tApiCInvoiceStage),
output oiCInvoiceVoucher (oiCInvoiceVoucher),
output olCInvoiceIsInitialStatus (olCInvoiceIsInitialStatus),
output ocRoleName (ocRoleName),
output olCreditorIsWHT (olCreditorIsWHT),
output ocDefaultWHTCode (ocDefaultWHTCode),
output ocWHTType (ocWHTType),
output ocWHTDesc (ocWHTDesc),
output odWHTPct (odWHTPct),
output odWHTPctRecv (odWHTPctRecv),
output ocWHTGLCode (ocWHTGLCode),
output ocWHTDivisionCode (ocWHTDivisionCode),
output vcDummy (ocControlGLCode),
output viDummy (oiControlGLID),
output odCInvoiceCCExchangeRate (odCInvoiceCCExchangeRate),
output odCInvoiceCCRateScale (odCInvoiceCCRateScale),
output viDummy (oiBusinessRelationID),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
assign vcJournalCode = ocJournalCode.
end.
if vcPaymentConditionCode <> ocPOPaymentConditionCode and
(ocPOPaymentConditionCode <> "":U or
ocPOPaymentConditionCode <> ?)
then do:
<M-98 run DefaultValuesPaymentCondition
(input ocPOPaymentConditionCode (icPaymentConditionCode),
input ? (iiPaymentConditionID),
input itCInvoiceDate (itCInvoiceDate),
input icCInvoiceTcRowid (icCInvoiceRowID),
input idCInvoiceOriginalTC (idCInvoiceOriginalTC),
input vcCurrencyCode (icCurrencyCode),
input ? (ilCInvoiceIsTaxExcluded),
input ? (icPaymentConditionPaymentType),
input ? (icPaymentConditionPeriodType),
input ? (itPaymentConditionBaseDate),
input ? (iiPaymentConditionDaysMonths),
input ? (iiPaymentConditionSupplDays),
input ? (iiPaymentConditionBaseDays),
input ? (iiPaymentConditionDueDays),
input ? (icPaymentConditionDescript),
input ? (idPaymentConditionPercentage),
input ? (icPaymentConditionPdtypediscount),
input ? (iiPaymentConditionDayMthsDisc),
input ? (iiPaymentConditionSupDaysDisc),
output vcDummy (ocPaymentConditionPaymentType),
output otCInvoiceDueDate (otCInvoiceDueDate),
output otCInvoiceDiscountDueDate (otCInvoiceDiscountDueDate),
output tCInvoiceStage (tApiCInvoiceStage),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
end. /* if vcPaymentConditionCode */
if tqPurchaseOrderByDomainNbrVend.tcpo_ship <> "":U and tqPurchaseOrderByDomainNbrVend.tcpo_ship <> ?
then do:
<Q-8 run AdMstrByAddress (all) (Read) (NoCache)
(input tqPurchaseOrderByDomainNbrVend.tcpo_domain, (Domain)
input tqPurchaseOrderByDomainNbrVend.tcpo_ship, (Code)
output dataset tqAdMstrByAddress) in BMfgAddress >
find first tqAdMstrByAddress where
tqAdMstrByAddress.tcad_domain = tqPurchaseOrderByDomainNbrVend.tcpo_domain and
tqAdMstrByAddress.tcad_addr = tqPurchaseOrderByDomainNbrVend.tcpo_ship
no-lock no-error.
if available tqAdMstrByAddress
then assign ocShipToBusinessRelationCode = tqAdMstrByAddress.tcBusinessRelationCode
ocShipToAddressTypeCode = tqAdMstrByAddress.tcAddressTypeCode
ocShipToAddressStreet1 = tqAdMstrByAddress.tcAddressStreet1
ocShipToAddressStreet2 = tqAdMstrByAddress.tcAddressStreet2
ocShipToAddressStreet3 = tqAdMstrByAddress.tcAddressStreet3
ocShipToAddressZip = tqAdMstrByAddress.tcAddressZip
ocShipToAddressCity = tqAdMstrByAddress.tcAddressCity
ocShipToAddressState = tqAdMstrByAddress.tcAddressState
ocShipToCountryCode = tqAdMstrByAddress.tcCountryCode
olShipToCountryIsEUCountry = tqAdMstrByAddress.tlCountryIsEUCountry
ocShipToTxzTaxZone = tqAdMstrByAddress.tcTxzTaxZone
oiShipToAddressId = tqAdMstrByAddress.tiAddress_ID.
end.
if tqPurchaseOrderByDomainNbrVend.tcpo_daybookset <> "":U and tqPurchaseOrderByDomainNbrVend.tcpo_daybookset <> ?
then do:
assign ocDaybookSet = tqPurchaseOrderByDomainNbrVend.tcpo_daybookset
ocSite = tqPurchaseOrderByDomainNbrVend.tcpo_site.
<M-9 run DefaultValuesDaybookSetCodeSite
(input icCInvoiceTcRowid (icCInvoiceRowID),
input icCInvoiceType (icInvoiceType),
input olCInvoiceIsInitialStatus (ilCInvoiceIsInitialStatus),
input-output ocDaybookSet (bcDaybookSetCode),
input-output ocSite (bcSite),
input true (ilUpdateDaybookAndVoucher),
input-output ocJournalCode (bcDaybook),
input-output oiCInvoiceVoucher (biVoucher),
input iiCInvoicePostingYear (iiOldCInvoicePostingYear),
input vcJournalCode (icOldJournalCode),
input tCInvoice.CInvoiceVoucher (iiOldCInvoiceVoucher),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
end.
/* ================== */
/* Exception handling */
/* ================== */
if oiReturnStatus = -98 then assign oiReturnStatus = 0.