通过DI-API用帐户付款的收款

2020-08-24 11:01发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,专家!

我正在尝试使用DI-API为SAP B1(Hana 9.20.210 PL11)做一个插件。 在此插件中,我要添加"收款汇票草稿"并选择"发票,日记帐分录和贷方通知单"文档。 只需在" oPaymentsDrafts"对象上的"发票"字段即可。

我还想设置付款方式,因为有时我会用支票付款,有时用现金付款。 也很容易,没问题。

问题出在什么时候我需要在帐户上添加付款。 有人告诉我,当您增加的金额大于总金额时,超出的金额即为"帐户付款"。

好吧,我尝试收款10美元,并付了15美元,它奏效了。 我做了同样的事情,但是10美元现在是一张发票,并且可以用。 但是,如果同时我想支付15美元作为支票,帐户上的付款将变为空白,多余的5美元将变为负数的"到期应付"字段。

由于我无法控制"帐户付款"字段,因此无法正确执行。

这是我的代码的摘录:

 paymentSAP = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPaymentsDrafts);
 paymentSAP.DocObjectCode = SAPbobsCOM.BoPaymentsObjectType.bopot_IncomingPayments;

 paymentSAP.CardCode = payment.cardCode;
                     切换(payment.paymentMode)
                     {
                         case PaymentModeType.cash://Pago en efectivo
                             如果(payment.docTotal> 0)
                             {
                                 paymentSAP.CashSum = payment.docTotal;
                                 paymentSAP.CashAccount = payment.bankCode;
                                 paymentSAP.TaxDate = payment.checkDueDate;
                             }


                             打破;
                         case PaymentModeType.check://帕果检查
                             paymentSAP.Checks.CheckSum = payment.docTotal;
                             paymentSAP.Checks.Details = payment.checkNumber;
                             paymentSAP.Checks.DueDate = payment.checkDueDate;

                             BPPaymentModelpaymentInfo = SAPBPPaymentInfo.GetBPPaymentInfo(oCompany,payment.cardCode);
                             paymentSAP.Checks.CheckAccount = paymentInfo.CCCAccount;
                             paymentSAP.Checks.BankCode = paymentInfo.CCCBankCode;
                             paymentSAP.Checks.Branch = paymentInfo.CCCBranch;
                             paymentSAP.Checks.AccounttNum = paymentInfo.CCCAccount;

                             打破;
                     }


                    //为任何发票设置其余值
                     为(int i = 0; i  0)
                             paymentSAP.Invoices.Add();

                         开关(payment.invoicesList [i] .docType)
                         {
                             案例TipoDocumentoEnum.Abono:
                                 paymentSAP.Invoices.InvoiceType = BoRcptInvTypes.it_CredItnote;
                                 paymentSAP.Invoices.DocEntry = int.Parse(payment.invoicesList [i] .invoiceID);
                                 打破;
                             案例TipoDocumentoEnum.Asiento:
                                 paymentSAP.Invoices.InvoiceType = BoRcptInvTypes.it_JournalEntry;
                                 paymentSAP.Invoices.DocEntry = payment.invoicesList [i] .invoiceID;
                                 paymentSAP.Invoices.DocLine = payment.invoicesList [i] .invoiceLine;
                                 打破;
                            
                             默认:
                                 paymentSAP.Invoices.InvoiceType = BoRcptInvTypes.it_Invoice;
                                 paymentSAP.Invoices.DocEntry = int.Parse(payment.invoicesList [i] .invoiceID);
                                 打破;
                         }


                         paymentSAP.Invoices.SumApplied = payment.invoicesList [i] .paid;
                     }

                     paymentSAP.Add();
                     oCompany.GetLastError(out iError,out _error);
 

正如我说的那样,如果我不使用现金或支票字段,或者我不向payaseSAP.Invoice添加任何东西,那笔额外的5美元将转到"帐户付款"中,但不会同时使用。

在程序上,我必须激活"帐户付款"复选框,但是在DI-API上,我不知道。

我在寻找答案,但发现的所有问题都没有答案。

我做错了什么? 谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,专家!

我正在尝试使用DI-API为SAP B1(Hana 9.20.210 PL11)做一个插件。 在此插件中,我要添加"收款汇票草稿"并选择"发票,日记帐分录和贷方通知单"文档。 只需在" oPaymentsDrafts"对象上的"发票"字段即可。

我还想设置付款方式,因为有时我会用支票付款,有时用现金付款。 也很容易,没问题。

问题出在什么时候我需要在帐户上添加付款。 有人告诉我,当您增加的金额大于总金额时,超出的金额即为"帐户付款"。

好吧,我尝试收款10美元,并付了15美元,它奏效了。 我做了同样的事情,但是10美元现在是一张发票,并且可以用。 但是,如果同时我想支付15美元作为支票,帐户上的付款将变为空白,多余的5美元将变为负数的"到期应付"字段。

由于我无法控制"帐户付款"字段,因此无法正确执行。

这是我的代码的摘录:

 paymentSAP = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPaymentsDrafts);
 paymentSAP.DocObjectCode = SAPbobsCOM.BoPaymentsObjectType.bopot_IncomingPayments;

 paymentSAP.CardCode = payment.cardCode;
                     切换(payment.paymentMode)
                     {
                         case PaymentModeType.cash://Pago en efectivo
                             如果(payment.docTotal> 0)
                             {
                                 paymentSAP.CashSum = payment.docTotal;
                                 paymentSAP.CashAccount = payment.bankCode;
                                 paymentSAP.TaxDate = payment.checkDueDate;
                             }


                             打破;
                         case PaymentModeType.check://帕果检查
                             paymentSAP.Checks.CheckSum = payment.docTotal;
                             paymentSAP.Checks.Details = payment.checkNumber;
                             paymentSAP.Checks.DueDate = payment.checkDueDate;

                             BPPaymentModelpaymentInfo = SAPBPPaymentInfo.GetBPPaymentInfo(oCompany,payment.cardCode);
                             paymentSAP.Checks.CheckAccount = paymentInfo.CCCAccount;
                             paymentSAP.Checks.BankCode = paymentInfo.CCCBankCode;
                             paymentSAP.Checks.Branch = paymentInfo.CCCBranch;
                             paymentSAP.Checks.AccounttNum = paymentInfo.CCCAccount;

                             打破;
                     }


                    //为任何发票设置其余值
                     为(int i = 0; i  0)
                             paymentSAP.Invoices.Add();

                         开关(payment.invoicesList [i] .docType)
                         {
                             案例TipoDocumentoEnum.Abono:
                                 paymentSAP.Invoices.InvoiceType = BoRcptInvTypes.it_CredItnote;
                                 paymentSAP.Invoices.DocEntry = int.Parse(payment.invoicesList [i] .invoiceID);
                                 打破;
                             案例TipoDocumentoEnum.Asiento:
                                 paymentSAP.Invoices.InvoiceType = BoRcptInvTypes.it_JournalEntry;
                                 paymentSAP.Invoices.DocEntry = payment.invoicesList [i] .invoiceID;
                                 paymentSAP.Invoices.DocLine = payment.invoicesList [i] .invoiceLine;
                                 打破;
                            
                             默认:
                                 paymentSAP.Invoices.InvoiceType = BoRcptInvTypes.it_Invoice;
                                 paymentSAP.Invoices.DocEntry = int.Parse(payment.invoicesList [i] .invoiceID);
                                 打破;
                         }


                         paymentSAP.Invoices.SumApplied = payment.invoicesList [i] .paid;
                     }

                     paymentSAP.Add();
                     oCompany.GetLastError(out iError,out _error);
 

正如我说的那样,如果我不使用现金或支票字段,或者我不向payaseSAP.Invoice添加任何东西,那笔额外的5美元将转到"帐户付款"中,但不会同时使用。

在程序上,我必须激活"帐户付款"复选框,但是在DI-API上,我不知道。

我在寻找答案,但发现的所有问题都没有答案。

我做错了什么? 谢谢。

付费偷看设置
发送
3条回答
灬番茄
1楼-- · 2020-08-24 11:30

您好 ManuelGarcía

您是否提到了此讨论?我认为您在项目代码中缺少以下行:

  vPay.DocTypte = SAPbobsCOM.BoRcptTypes.rAccount; 

希望有帮助!

亲切的问候,

ANKIT CHAUHAN

SAP Business One支持

SC_Yao
2楼-- · 2020-08-24 11:24

很抱歉碰到这个线程,但是我没有解决这个问题, =" nofollow" hraf=" https://people.sap.com/ankit.chauhan1"> ANKIT CHAUHAN 答案也不起作用。

还有更多可以尝试的想法吗?

谢谢。

Haoba3210
3楼-- · 2020-08-24 11:32

是的,我尝试过,因为我之前看到过这个问题,所以将以下代码添加到我的代码中:

 if(Math.Round(documentsTotals,2)== Math.Round(payment.docTotal,2))
                         paymentSAP.CardCode = payment.cardCode;
                     其他
                     {
                        //Pago a cuenta
                         paymentSAP.CardCode = cardCodeBankAccount;
                         paymentSAP.DocTypte = BoRcptTypes.rAccount;
                         paymentSAP.AccountPayments.SumPaid = payment.docTotal;
                         paymentSAP.AccountPayments.AccountCode = cardCodeBankAccount;
                     }
 

即使只使用DocTypte行,也给我一个-10错误:无法使用帐户[ORCT.DocType] [??? 3524-88]付款来支付发票。

我现在正在做的是保存文档的收款,然后仅使用"帐户付款"额进行另一笔收款,但是我被告知要在同一文档中将这两项都加入。

一周热门 更多>