Description
This method creates the ad_mstr records in MFG/PRO for suppliers.
Parameters
| tCreditorsToUpdate | input | temp-table | temp-table that contains all the new/updated creditors |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program1/bmfgaddress.p)
assign oiReturnStatus = -98.
<M-11 run ClearData (output viFcReturnSuper (oiReturnStatus)) in BMfgAddress>
/* clear the tAddress */
empty temp-table tAddress.
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then Return.
/* Start the queries */
<Q-12 run AddressByType (Start) in BBusinessRelation >
<Q-15 run CompanyBySharedSet (Start) in BCompany >
<Q-26 run AdMstrByDomainByCode
(Start) in BMfgAddress >
Creditors:
for each tCreditorsToUpdate
where tCreditorsToUpdate.tc_Status = "N":U or
tCreditorsToUpdate.tc_Status = "C":U or
tCreditorsToUpdate.tc_Status = "D":U:
empty temp-table tAddress.
/* Select the HEADOFFICE address */
<Q-9 run AddressByType (all) (Read) (NoCache)
(input tCreditorsToUpdate.BusinessRelation_ID, (BusinessRelationID)
input 'HEADOFFICE':U, (AddressType)
output dataset tqAddressByType) in BBusinessRelation >
/* Copy the resultset into the Address Temp-table */
/* Using the tqAddressByType temptable to populate the ad_mstr does not work */
for each tqAddressByType :
create tAddress.
assign tAddress.Address_ID = tqAddressByType.tiAddress_ID
tAddress.AddressStreet1 = tqAddressByType.tcAddressStreet1
tAddress.AddressStreet2 = tqAddressByType.tcAddressStreet2
tAddress.AddressStreet3 = tqAddressByType.tcAddressStreet3
tAddress.AddressZip = tqAddressByType.tcAddressZip
tAddress.AddressCity = tqAddressByType.tcAddressCity
tAddress.AddressTelephone = tqAddressByType.tcAddressTelephone
tAddress.AddressEMail = tqAddressByType.tcAddressEMail
tAddress.AddressWebSite = tqAddressByType.tcAddressWebSite
tAddress.AddressFax = tqAddressByType.tcAddressFax
tAddress.Country_ID = tqAddressByType.tiCountry_ID
tAddress.BusinessRelation_ID = tqAddressByType.tiBusinessRelation_ID
tAddress.AddressType_ID = tqAddressByType.tiAddressType_ID
tAddress.Lng_ID = tqAddressByType.tiLng_ID
tAddress.State_ID = tqAddressByType.tiState_ID
tAddress.County_ID = tqAddressByType.tiCounty_ID
tAddress.AddressPostalAddress1 = tqAddressByType.tcAddressPostalAddress1
tAddress.AddressPostalAddress2 = tqAddressByType.tcAddressPostalAddress2
tAddress.AddressIsSendToPostal = tqAddressByType.tlAddressIsSendToPostal
tAddress.AddressState = tqAddressByType.tcAddressState
tAddress.AddressPostalZip = tqAddressByType.tcAddressPostalZip
tAddress.AddressPostalCity = tqAddressByType.tcAddressPostalCity
tAddress.AddressCounty = tqAddressByType.tcAddressCounty
tAddress.AddressLogicKeyString = tqAddressByType.tcAddressLogicKeyString
tAddress.tcCountyCode = tqAddressByType.tcCountyCode
tAddress.tcStateCode = tqAddressByType.tcStateCode
tAddress.tcCountryCode = tqAddressByType.tcCountryCode
tAddress.tcAddressTypeCode = tqAddressByType.tcAddressTypeCode
tAddress.tcLngCode = tqAddressByType.tcLngCode
tAddress.AddressName = tqAddressByType.tcAddressName
tAddress.AddressSearchName = tqAddressByType.tcAddressSearchName
tAddress.tcLngCode = tqAddressByType.tcLngCode
tAddress.LastModifiedDate = tqAddressByType.ttLastModifiedDate
tAddress.LastModifiedTime = tqAddressByType.tiLastModifiedTime
tAddress.LastModifiedUser = tqAddressByType.tcLastModifiedUser
tAddress.AddressIsTaxable = tqAddressByType.tlAddressIsTaxable
tAddress.AddressIsTaxInCity = tqAddressByType.tlAddressIsTaxInCity
tAddress.AddressTaxIDFederal = tqAddressByType.tcAddressTaxIDFederal
tAddress.AddressTaxIDState = tqAddressByType.tcAddressTaxIDState
tAddress.AddressTaxIDMisc1 = tqAddressByType.tcAddressTaxIDMisc1
tAddress.AddressTaxIDMisc2 = tqAddressByType.tcAddressTaxIDMisc2
tAddress.AddressTaxIDMisc3 = tqAddressByType.tcAddressTaxIDMisc3
tAddress.TxzTaxZone = tqAddressByType.tcTxzTaxZone
tAddress.TxclTaxCls = tqAddressByType.tcTxclTaxCls
tAddress.TxuTaxUsage = tqAddressByType.tcTxuTaxUsage
tAddress.AddressIsTaxIncluded = tqAddressByType.tlAddressIsTaxIncluded
tAddress.AddressFormat = tqAddressByType.tiAddressFormat.
assign tAddress.tcCoCNumber = tCreditorsToUpdate.CreditorCocNumber
tAddress.tc_status = tCreditorsToUpdate.tc_status
tAddress.tc_rowid = string(tqAddressByType.tiAddress_ID).
end.
/* Store the CreditorCode into a variable, it will be populated in ad_addr */
assign
vcRelationCode = tCreditorsToUpdate.CreditorCode
vcRelationType = "supplier":U.
/* Addresses are system wide date, so we need to use the SystemWideToMfg pattern.
* However, we are processing Creditors, which use the SharedSetToMfg pattern.
* We need to copy the address information (system wide data) to all domains where the
* creditor is added. To achieve this we determine all the companies that uses the creditor
* shared set, get the domains and for each domain we run MaintainData and follow
* the SystemWideToMFG pattern.
*/
<Q-4 run CompanyBySharedSet (all) (Read) (NoCache)
(input '', (CompanyId)
input tCreditorsToUpdate.SharedSet_ID, (SharedSetId)
output dataset tqCompanyBySharedSet) in BCompany >
/*
* Process the Financial Data into each of the domains returned by the above query.
*/
/* Check if we need to replicate to one domain or to all */
<I-23 {bFcOpenInstance
&CLASS = "Session"}>
<M-24 run GetCharacterValue
(input 'ProcessSharedSetToMFGDomainCode':U (icName),
output vcProcessSharedSetToMFGDomain (ocValue),
output viSessionReturnStatus (oiReturnStatus)) in Session>
<I-25 {bFcCloseInstance
&CLASS = "Session"}>
DomainLoop:
for each tqCompanyBySharedSet where
tqCompanyBySharedSet.tlDomainPropertyIsSetupCompl = true
break by tqCompanyBySharedSet.tcDomainCode:
if not first-of(tqCompanyBySharedSet.tcDomainCode) then
next DomainLoop.
/* save the domain code which is currently being processed */
assign vcDomain = tqCompanyBySharedSet.tcDomainCode.
if viSessionReturnStatus <> 0
then assign oiReturnStatus = viSessionReturnStatus.
if viSessionReturnStatus < 0
then do :
leave Creditors.
end. /* if viFcReturnSuper < 0 */
if vcProcessSharedSetToMFGDomain <> '':U and
vcProcessSharedSetToMFGDomain <> ? and
vcProcessSharedSetToMFGDomain <> tqCompanyBySharedSet.tcDomainCode
then next DomainLoop.
if tCreditorsToUpdate.tc_Status = "N":U
then do:
/* check if address already exists */
<Q-31 run AdMstrByDomainByCode (all) (Read) (NoCache)
(input vcDomain, (Domain)
input tCreditorsToUpdate.CreditorCode, (Code)
output dataset tqAdMstrByDomainByCode) in BMfgAddress >
for first tqAdMstrByDomainByCode:
/* Address already exists so do'nt update */
next DomainLoop.
end.
end. /* end new creditor */
if tCreditorsToUpdate.tc_Status = "D":U
then do:
/* check if address already exists */
<Q-32 run AddressListDetailByDomainCode (all) (Read) (NoCache)
(input tCreditorsToUpdate.CreditorCode, (AddressCode)
input vcDomain, (domain)
output dataset tqAddressListDetailByDomainCode) in BMfgAddressListDetail >
for first tqAddressListDetailByDomainCode
where tqAddressListDetailByDomainCode.tcls_addr = tCreditorsToUpdate.CreditorCode
and tqAddressListDetailByDomainCode.tcls_domain = vcDomain
and tqAddressListDetailByDomainCode.tcls_type <> "supplier":U:
next domainloop.
end.
end. /* end new debtor */
/* update the MFG/PRO record */
<M-14 run ProcessMaintainData (output viFcReturnSuper (oiReturnStatus)) in BMfgAddress>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then leave Creditors.
end.
end.
/* Stop the queries */
<Q-13 run AddressByType (Stop) in BBusinessRelation >
<Q-16 run CompanyBySharedSet (Stop) in BCompany >
<Q-27 run AdMstrByDomainByCode
(Stop) in BMfgAddress >
if oiReturnStatus = -98 or oiReturnStatus > 0
then do:
for first tAddress:
<M-17 run ProcessMaintainDataSave (output viFcReturnSuper (oiReturnStatus)) in BMfgAddress>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then Return.
end.
end.
/* ======================== */
/* Set ReturnStatus = OK */
/* ======================== */
if oiReturnStatus = -98
then assign oiReturnStatus = 0.