Отменить общую сумму округления / A/R счета — фактуры-итого документа, поле не может быть обновлено (odbc -1029) SAP B1

#sapb1 #sap-business-one-di-api #sap-business-bydesign

Вопрос:

Я пытаюсь отменить автоматический раунд общей суммы в A/R RESERVEI NVOICE b1 в дополнительном расширении.

Ошибка возникает после:

 txtDocTotalAfterDiscountFreightCharge.Active = true;
txtDocTotalAfterDiscountFreightCharge.String = total.ToString();
 

с этой ошибкой: Только если я отменю раунд на A/R RESERVEI NVOICE.

 A/R invoice - document total, field cannot be updated (odbc -1029)
 

для счета-фактуры A/R это работает хорошо.

 [BasicSapForm(Consts.FORM_RESERVE_INVOICE)]
[BasicSapForm(Consts.FORM_INVOICE)]
 class OinvListener : SapDocumentsForm
    {
        public OinvListener(string uniqueId, object extraInfo)
            : base(uniqueId, extraInfo)
        {
        }


        public override void Init()
        {
        }


        [BasicSapEvent(SAPbouiCOM.BoEventTypes.et_FORM_DATA_UPDATE, "", true)]
        [BasicSapEvent(SAPbouiCOM.BoEventTypes.et_FORM_DATA_ADD, "", true)]
        private bool BeforeFormAdd(SAPbouiCOM.BusinessObjectInfo pVal)
        {
            if (MO_ModuleManager.Common.B1Starter.userModules.ContainsKey(ModuleInfo.Code))
            {
                if (MO_ModuleManager.Common.B1Starter.userModules.ContainsKey(ModuleInfo.SubCode2))
                {
                    di.BusinessPartners diBp = SapUtils.GetDiObjectByFormTypeAndKey                            (Consts.FORM_BP, txtCardCode.String) as di.BusinessPartners;
                    if (diBp.UserFields.Fields.Item("U_RoundAum").Value.ToString() == "N")
                    {
                        double total = TypeUtils.ExtractDouble
(txtDocTotalAfterDiscountFreightCharge.String);
                        ui.EditText txtDisc = mForm.Items.Item("42").Specific as ui.EditText;
                        if (false == string.IsNullOrEmpty(txtDisc.String))
                            total  = TypeUtils.ExtractDouble(txtDisc.String);
                        try
                        {
                            txtDocTotalAfterDiscountFreightCharge.Active = true;
                            txtDocTotalAfterDiscountFreightCharge.String = total.ToString();
                        }
                       catch {  }
                    }
                }
            }
            return true;
        }
    }
 

Комментарии:

1. Некоторые поля в счете-фактуре A / R не могут быть обновлены после добавления документа.