0

我通过使用客户端的应用程序在 Sage 200 上插入订单,C#并且APIs.

我想选中“订单付款”选项卡上的“全额付款”复选框。

在此处输入图像描述

目前,我正在设置 PaymentType 属性,该属性不起作用。

order.PaymentType = Sage.Accounting.SOP.SOPOrderPaymentTypeEnum.EnumSOPOrderPaymentTypeFull;

订单是 的一个实例 Sage.Accounting.SOP.SOPOrder

你知道我如何检查那个属性吗?

4

2 回答 2

0

以下方法应提供所需的结果。

    private static void SetPaymentWithOrder(Sage.Accounting.SOP.SOPOrder sopOrder)
    {
        // Indicate that order has payment
        sopOrder.PaymentWithOrder = true;

        // This is full payment order
        sopOrder.PaymentType = Sage.Accounting.SOP.SOPOrderPaymentTypeEnum.EnumSOPOrderPaymentTypeFull;

        // Fetch the the Payment Methods. SOPPaymentMethods contructor accepts the boolean flag whether to fetch payment methods including card processing method or not.
        Sage.Accounting.SOP.SOPPaymentMethods paymentMethodsCollection = new Sage.Accounting.SOP.SOPPaymentMethods(false);

        // Set the first payment method of the collection to the order
        sopOrder.PaymentMethod = paymentMethodsCollection.First;
    }

在此处输入图像描述

于 2016-03-16T17:28:25.643 回答
0

不知道您是否曾经设法弄清楚这一点。

不确定您是否知道这一点,但您不能修改视图表单上的销售订单,或者至少不应该尝试这样做。

使用任一输入/修改销售订单表单都可以这样做。可能发生的情况是,控件绑定的属性在您的代码运行后不会更新 UI。

您可以使用以下命令简单地强制执行此操作

获取底层绑定对象

public Sage.Accounting.SOP.SOPOrderReturn SOPOrderReturn
{
    get
    {
        //Loop over the boundobjects collection
        //check if the bound object is of the type we want - e.g. SOPOrderReturn
        //if correct type, return this object
        Sage.Common.Collections.BoundObjectCollection boundObjects = this.form.BoundObjects;

        if (boundObjects != null)
        {
            foreach (object boundObject in boundObjects)
            {
                if (boundObject is Sage.Accounting.SOP.SOPOrderReturn)
                {
                    this._sopOrderReturn = boundObject as Sage.Accounting.SOP.SOPOrderReturn;
                    break;
                }
            }
        }
        return this._sopOrderReturn;
    }
}

获取可修改表单的正确底层表单类型,暂停数据绑定,执行更改,恢复数据绑定

Sage.MMS.SOP.MaintainOrderForm maintainOrderForm = this.form.UnderlyingControl as Sage.MMS.SOP.MaintainOrderForm;

maintainOrderForm.BindingContext[this.SOPOrderReturn].SuspendBinding();
this.SOPOrderReturn.PaymentWithOrder = true;
this.SOPOrderReturn.PaymentType = Sage.Accounting.SOP.SOPOrderPaymentTypeEnum.EnumSOPOrderPaymentTypeFull;
maintainOrderForm.BindingContext[this.SOPOrderReturn].ResumeBinding();

应该做的伎俩。

于 2016-09-02T12:22:28.513 回答