Relation between Child and Parent Customers!
Recently I had a task (Report) To filter on the customer and get the Data from the customer and the Data of the Parent Customers! The Invoice account in a customer is the Parent Customer.
Here is the code (in the process report)
public void processReport()
{
SalesLine salesLine;
LogisticsPostalAddress logisticsPostalAddress;
CustTable custTable,custTable1,custTable2 ;
CustAccount custAccount ;
ItemGroupId itemGroupId ;
InventLocationId inventLocationId,warehouse ;
CustInvoiceAccount InvoiceAccount ;
InventTable inventTable ;
InventDim inventDim ;
SalesStatus salesStatus ;
SIGSalesPerson salesperson ;
SIGSalesTerritory salesterritory ;
CreatedDateTime fromdate , todate ;
DirPersonName dirPersonName ;
SIGSalesTerritoriesAddressRel sigSalesTerritoriesAddressRel ;
SIGSalesTerritories sigSalesTerritories ;
DirPartyTable dirPartyTable ;
DirPartyRelationship dirPartyRelationship ;
int first ;
SigSalesOrderContractClass sigSalesOrderContractClass = this.parmDataContract() as SigSalesOrderContractClass ;
Query query = this.parmQuery() ;
custAccount = sigSalesOrderContractClass.parmCustAccount() ;
itemGroupId = sigSalesOrderContractClass.parmItemGroupId() ;
inventLocationId = sigSalesOrderContractClass.parmInventLocationId() ;
salesStatus = sigSalesOrderContractClass.parmSalesStatus() ;
salesperson = sigSalesOrderContractClass.parmName() ;
salesterritory = sigSalesOrderContractClass.parmSalesTerritory() ;
fromdate = sigSalesOrderContractClass.parmFromDate() ;
todate = sigSalesOrderContractClass.parmToDate() ;
while select * from salesLine
where (!custAccount || salesLine.CustAccount == custAccount )
&& (!salesStatus || salesLine.SalesStatus == salesStatus)
&& (!fromdate ||salesLine.createdDateTime >= fromdate )
&& (!todate || salesLine.createdDateTime <= todate )
{
inventTable = InventTable::find(salesLine.ItemId) ;
inventDim = InventDim::find(salesLine.InventDimId) ;
custTable = CustTable::find(salesLine.CustAccount) ;
select * from dirPersonName
join sigSalesTerritoriesAddressRel
where dirPersonName.RecId == sigSalesTerritoriesAddressRel.SalesPerson
&& sigSalesTerritoriesAddressRel.CustAccount == salesLine.CustAccount ;
select * from sigSalesTerritories
join sigSalesTerritoriesAddressRel
where sigSalesTerritories.SalesTerritoryId == sigSalesTerritoriesAddressRel.SalesTerritoryId
&& sigSalesTerritoriesAddressRel.CustAccount == salesLine.CustAccount ;
if((!itemGroupId || inventTable.itemGroupId() == itemGroupId) &&
(!inventLocationId || inventDim.InventLocationId == inventLocationId) &&
(!salesperson || dirPersonName.FirstName == salesperson ) &&
(!salesterritory || sigSalesTerritories.Name == salesterritory))
{
// Select the Data
sigSalesOrderReportTmpTbl.CustAccount = salesLine.CustAccount;
sigSalesOrderReportTmpTbl.DeliveryName = salesLine.DeliveryName;
sigSalesOrderReportTmpTbl.ItemID = salesLine.ItemID;
sigSalesOrderReportTmpTbl.Name = Salesline.Name;
sigSalesOrderReportTmpTbl.SalesQty = salesLine.SalesQty;
sigSalesOrderReportTmpTbl.SalesPrice = salesLine.SalesPrice;
sigSalesOrderReportTmpTbl.lineamount = salesLine.lineAmount;
sigSalesOrderReportTmpTbl.LineDiscount = salesLine.LineDisc ;
sigSalesOrderReportTmpTbl.Margin = sigSalesOrderReportTmpTbl.lineamount - salesLine.CostPrice;
sigSalesOrderReportTmpTbl.MarginPercentage = ((salesLine.SalesQty*(salesLine.SalesPrice - salesLine.CostPrice))/minOne(salesLine.LineAmount))*100;
select * from custTable where custTable.AccountNum == salesLine.CustAccount ;
logisticsPostalAddress = DirParty::primaryPostalAddress(custTable.Party) ;
sigSalesOrderReportTmpTbl.Location = logisticsPostalAddress.City;
sigSalesOrderReportTmpTbl.PostalCode = logisticsPostalAddress.ZipCode;
sigSalesOrderReportTmpTbl.InvoiceAccount = custTable.InvoiceAccount ;
sigSalesOrderReportTmpTbl.insert();
}
if(custTable.InvoiceAccount)
{
// Select the Data
sigSalesOrderReportTmpTbl.CustAccount = custTable.InvoiceAccount;
sigSalesOrderReportTmpTbl.DeliveryName = CustTable::find(custTable.InvoiceAccount).name();
sigSalesOrderReportTmpTbl.ItemID = salesLine.ItemID;
sigSalesOrderReportTmpTbl.Name = Salesline.Name;
sigSalesOrderReportTmpTbl.SalesQty = salesLine.SalesQty;
sigSalesOrderReportTmpTbl.SalesPrice = salesLine.SalesPrice;
sigSalesOrderReportTmpTbl.lineamount = salesLine.lineAmount;
sigSalesOrderReportTmpTbl.LineDiscount = salesLine.LineDisc ;
sigSalesOrderReportTmpTbl.Margin = sigSalesOrderReportTmpTbl.lineamount - salesLine.CostPrice;
sigSalesOrderReportTmpTbl.MarginPercentage = ((salesLine.SalesQty*(salesLine.SalesPrice - salesLine.CostPrice))/minOne(salesLine.LineAmount))*100;
select * from custTable where custTable.AccountNum == salesLine.CustAccount ;
logisticsPostalAddress = DirParty::primaryPostalAddress(custTable.Party) ;
sigSalesOrderReportTmpTbl.Location = logisticsPostalAddress.City;
sigSalesOrderReportTmpTbl.PostalCode = logisticsPostalAddress.ZipCode;
sigSalesOrderReportTmpTbl.InvoiceAccount = custTable.InvoiceAccount ;
sigSalesOrderReportTmpTbl.insert();
}
}
}
Here is the code (in the process report)
public void processReport()
{
SalesLine salesLine;
LogisticsPostalAddress logisticsPostalAddress;
CustTable custTable,custTable1,custTable2 ;
CustAccount custAccount ;
ItemGroupId itemGroupId ;
InventLocationId inventLocationId,warehouse ;
CustInvoiceAccount InvoiceAccount ;
InventTable inventTable ;
InventDim inventDim ;
SalesStatus salesStatus ;
SIGSalesPerson salesperson ;
SIGSalesTerritory salesterritory ;
CreatedDateTime fromdate , todate ;
DirPersonName dirPersonName ;
SIGSalesTerritoriesAddressRel sigSalesTerritoriesAddressRel ;
SIGSalesTerritories sigSalesTerritories ;
DirPartyTable dirPartyTable ;
DirPartyRelationship dirPartyRelationship ;
int first ;
SigSalesOrderContractClass sigSalesOrderContractClass = this.parmDataContract() as SigSalesOrderContractClass ;
Query query = this.parmQuery() ;
custAccount = sigSalesOrderContractClass.parmCustAccount() ;
itemGroupId = sigSalesOrderContractClass.parmItemGroupId() ;
inventLocationId = sigSalesOrderContractClass.parmInventLocationId() ;
salesStatus = sigSalesOrderContractClass.parmSalesStatus() ;
salesperson = sigSalesOrderContractClass.parmName() ;
salesterritory = sigSalesOrderContractClass.parmSalesTerritory() ;
fromdate = sigSalesOrderContractClass.parmFromDate() ;
todate = sigSalesOrderContractClass.parmToDate() ;
while select * from salesLine
where (!custAccount || salesLine.CustAccount == custAccount )
&& (!salesStatus || salesLine.SalesStatus == salesStatus)
&& (!fromdate ||salesLine.createdDateTime >= fromdate )
&& (!todate || salesLine.createdDateTime <= todate )
{
inventTable = InventTable::find(salesLine.ItemId) ;
inventDim = InventDim::find(salesLine.InventDimId) ;
custTable = CustTable::find(salesLine.CustAccount) ;
select * from dirPersonName
join sigSalesTerritoriesAddressRel
where dirPersonName.RecId == sigSalesTerritoriesAddressRel.SalesPerson
&& sigSalesTerritoriesAddressRel.CustAccount == salesLine.CustAccount ;
select * from sigSalesTerritories
join sigSalesTerritoriesAddressRel
where sigSalesTerritories.SalesTerritoryId == sigSalesTerritoriesAddressRel.SalesTerritoryId
&& sigSalesTerritoriesAddressRel.CustAccount == salesLine.CustAccount ;
if((!itemGroupId || inventTable.itemGroupId() == itemGroupId) &&
(!inventLocationId || inventDim.InventLocationId == inventLocationId) &&
(!salesperson || dirPersonName.FirstName == salesperson ) &&
(!salesterritory || sigSalesTerritories.Name == salesterritory))
{
// Select the Data
sigSalesOrderReportTmpTbl.CustAccount = salesLine.CustAccount;
sigSalesOrderReportTmpTbl.DeliveryName = salesLine.DeliveryName;
sigSalesOrderReportTmpTbl.ItemID = salesLine.ItemID;
sigSalesOrderReportTmpTbl.Name = Salesline.Name;
sigSalesOrderReportTmpTbl.SalesQty = salesLine.SalesQty;
sigSalesOrderReportTmpTbl.SalesPrice = salesLine.SalesPrice;
sigSalesOrderReportTmpTbl.lineamount = salesLine.lineAmount;
sigSalesOrderReportTmpTbl.LineDiscount = salesLine.LineDisc ;
sigSalesOrderReportTmpTbl.Margin = sigSalesOrderReportTmpTbl.lineamount - salesLine.CostPrice;
sigSalesOrderReportTmpTbl.MarginPercentage = ((salesLine.SalesQty*(salesLine.SalesPrice - salesLine.CostPrice))/minOne(salesLine.LineAmount))*100;
select * from custTable where custTable.AccountNum == salesLine.CustAccount ;
logisticsPostalAddress = DirParty::primaryPostalAddress(custTable.Party) ;
sigSalesOrderReportTmpTbl.Location = logisticsPostalAddress.City;
sigSalesOrderReportTmpTbl.PostalCode = logisticsPostalAddress.ZipCode;
sigSalesOrderReportTmpTbl.InvoiceAccount = custTable.InvoiceAccount ;
sigSalesOrderReportTmpTbl.insert();
}
if(custTable.InvoiceAccount)
{
// Select the Data
sigSalesOrderReportTmpTbl.CustAccount = custTable.InvoiceAccount;
sigSalesOrderReportTmpTbl.DeliveryName = CustTable::find(custTable.InvoiceAccount).name();
sigSalesOrderReportTmpTbl.ItemID = salesLine.ItemID;
sigSalesOrderReportTmpTbl.Name = Salesline.Name;
sigSalesOrderReportTmpTbl.SalesQty = salesLine.SalesQty;
sigSalesOrderReportTmpTbl.SalesPrice = salesLine.SalesPrice;
sigSalesOrderReportTmpTbl.lineamount = salesLine.lineAmount;
sigSalesOrderReportTmpTbl.LineDiscount = salesLine.LineDisc ;
sigSalesOrderReportTmpTbl.Margin = sigSalesOrderReportTmpTbl.lineamount - salesLine.CostPrice;
sigSalesOrderReportTmpTbl.MarginPercentage = ((salesLine.SalesQty*(salesLine.SalesPrice - salesLine.CostPrice))/minOne(salesLine.LineAmount))*100;
select * from custTable where custTable.AccountNum == salesLine.CustAccount ;
logisticsPostalAddress = DirParty::primaryPostalAddress(custTable.Party) ;
sigSalesOrderReportTmpTbl.Location = logisticsPostalAddress.City;
sigSalesOrderReportTmpTbl.PostalCode = logisticsPostalAddress.ZipCode;
sigSalesOrderReportTmpTbl.InvoiceAccount = custTable.InvoiceAccount ;
sigSalesOrderReportTmpTbl.insert();
}
}
}
Comments
Post a Comment