销售模块主要的业务表及其关系(来源未知)

来源:互联网 发布:2017网络信息安全考试 编辑:程序博客网 时间:2024/04/30 20:00

销售模块有很多的业务表,下图是一个简单的概括,不全面,而且没有涉及到Project,但涵盖了主要的一些表。希望对理解销售模块功能的实现逻辑和开发有帮助。由于我个人AX经验也不足,难免有什么纰漏,还请不吝指教。

 

SO TRANS

Step4, 5, 6:

 

当对于一个或多个SO(Sales Order)做一个Confirmation单时,如果不存在汇总,每一个SO都单独拥有一个Confirmation单,那么,每一个SO都对应会生成一条CustConfirmJour,而CustConfrimJour和SO之间的关系是通过一条CustConfirSalesLink来连接的。每一条要做confirmation的SOLine会对应有一条CustConfirmTrans记录。

 

如果存在汇总,如:

SO

InvoiceAccount

SO000001

C00001

SO000002

C00001

SO000003

C00002

当我们在做confirmation时,以InvoiceAccount来对SO进行汇总,那么就会生成如下:

SO

InvoiceAccount

CustConfirmJour

CustConfirmSalesLink

SO000001

C00001

A journal with salesId = SO000001

New sales link with salesId = SO000001 and origSalesId = SO000001

SO000002

C00001

New sales link with salesId = SO000001 and origSalesId = SO000002

SO000003

C00002

A journal with salesId = SO000002

New sales link with salesId = SO000002 and origSalesId = SO000003

如果SO的Line如下:

SO

Line

CustConfirmTrans

SO000001

Line1

Trans with SalesId = SO000001 and origSalesId = SO000001

Line2

Trans with SalesId = SO000001 and origSalesId = SO000001

SO000002

Line1

Trans with SalesId = SO000001 and origSalesId = SO000002

SO000003

Line1

Trans with SalesId = SO000003 and origSalesId = SO000003

 

在过账Confirmation, picking slip, packing slip, invoice时,会有一些中间表来辅助过账,这些表大多以模块+Parm开头。如在过账Invoice时,会有这样一些表:

Table Name

Description

SalesParmUpdate

每次过账时,会新生成一个ParmId,过账过程中用到的所有中间表都会包含这个ParmId,也就是说用ParmId可以区分同一批次过账的所有记录

SalesParmTable

当多个SO汇总过账时会选其中一个SO作为头,SalesParmTable会对应这个作为头的SO。如果不存在汇总,那么SalesParmTable直接对应相应的SO

SalesParmSubTable

当多个SO被汇总过账时,所有被汇总的SO都会对应有一条SalesParmSubTable来映射到原始的SO

SalesParmLine

当多个SO汇总过账时,这些SO下的所有Line都会以SalesParmLine被映射到那个作为头的SO上,并通过origSalesId和其原始的SO关联。

SalesParmSubLine

当多个SO汇总过账时,SalesParmSubLine会将所有这些SO下的Line映射到其原始的SO上,并与SalesParmLine关联

 

Step 13, 14, 15:

 

当过账Invoice时,每一条SalesParmTable会对应生成一条CustInvoiceJour, 每一天SalesParmLine会对应生成一条CustInvoiceTrans。CustInvoiceSalesLink将在CustInvoiceJour与其所涉及到的所有SO直接建立一个关联。

与此同时,会生成记帐凭证,记录在LedgerTrans表中。

 

CustInvoiceJour相当于销售日记账,同时在过账时,客户明细账会被写入到CustTrans。而与客户有关的没有被结算的交易则会被写到CustTransOpen表中,并且CustTrans和CustTransOpen直接会建立关联。

如果对应某一笔交易,我们有一个收款计划,比如六个月收完,那么根据这个收款计划,会为计划中的每一次还款建一条CustTransOpen.

 

所以,CustTrans与CustTransOpen之间是1:N的关系。

 

Step 19, 20, 21:

 

在结算时需要选择我们的付款时用于结算那一笔交易,这个时候我们是将我们的付款日记账与未结束交易进行关联,也即CustTransOpen和LedgerJournalTrans。

LedgerJournalTrans上有一个字段Invoice,它表示所要结算的发票号,如果一条LedgerJournalTrans同时用于结算多个发票(通过Mark要结算的记录便可)时,你会发现Invoice变为’*’号。

LedgerJournalTrans与CustTransOpen之间的结算与被结算关系是通过一个中间表SpecTrans来完成的,具体对应关系请参考图中的表关系。当Mark一条CustTransOpen到LedgerJournalTrans时,先查找SpecTrans确认该CustTransOpen没有被其他付款所结算,然后新建一条SpecTrans表示要用这笔付款结算该交易。如果同时结算多个CustTransOpen,那么就产生对应多的SpecTrans。如果取消对某条CustTransOpen的Mark,对应的SpecTrans也会被删除掉。

 

Step 22, 23, 24:

 

当过账某一笔付款日志时,那么新建记账凭证(LedgerTrans),付款交易被写入到CustTrans中,这条新的付款交易用于结算在销售过账是生成的那条CustTrans,它们之间结算与被结算的关系被保存在CustSettlement表中。结算之后,删除掉对应的CustTransOpen(应为CustTransOpen本身就是用来记录需要被结算的交易,当交易被结算后自然要删除的)。同时也删除对应的SpecTrans。

0 0