1

これが私がやりたいことです:

特定のサブシステム (SAP など) に基づく POS システムがありますが、別のサブシステム (MS Dynamics など) に切り替える必要があります。

ユーザーが 1 つまたは複数の支払いモード (現金、デビット、VISA など)で請求書を支払うことができる新しい支払いウィンドウを作成したいと考えています。

SO、存在する別の PaymentMode の ENUM を作成します (..)。これにより、列挙型が同じである必要があるため、あるサブシステム (SAP) から別の (Dynamics) に簡単に切り替えることができます。

Public enum PaymentMode
{
    AccountReceivable = 0,
    Cash = 1,
    Debit = 2,
    Check = 3,
    GiftCertificate = 4,
    Other_01 = 10, //depend on the sub-system...may be VISA/AMEX/MasterCard...
    Other_02 = 11, //depend on the sub-system...may be VISA/AMEX/MasterCard...
    Other_03 = 12, //depend on the sub-system...may be VISA/AMEX/MasterCard...
    Other_04 = 13  //depend on the sub-system...may be VISA/AMEX/MasterCard...
} 

また、実際の顧客の支払いを表すクラスがあります。

public class Payment
{
    public PaymentMode PaymentMode {get;set;} //here is my enum.  
    public double dbl_Amount {get; set;}
    public Datetime date_Payment {get; set;}
}

次に、これがあれば、請求書などに支払いを追加するのがきれいで簡単であることがわかります。

   double dbl_TotalAmountToPay = 399,41;

   //can accept a multi-payment for a single invoice..
   List<Payment> myWholePayments = new List<Payment>();

   //FIRST PAYMENT
   Payment myFirstPayment  = new Payment; 
   myFirstPayment.PaymentMode = PaymentMode.Cash;
   myFirstPayment.dbl_Amount = 100;
   myWholePayments.add(myFirstPayment);

   //SECOND PAYMENT
   Payment mySecondPayment  = new Payment;
   mySecondPayment.PaymentMode = PaymentMode.Other_02; //based on the name shown on the button pressed (visa/AMEX...)
   mySecondPayment.dbl_Amount = 299.41;
   myWholePayments.add(mySecondPayment);

次に、支払いリストを簡単に移動し、グリッドに表示することもできます...

これが私の質問です(はい、最後に):

  1. ENUM が本当に静的ではないという事実 (月など) に基づいて、ENUM の使用を試みるのは間違っていますか?

  2. あるシステム/顧客から変更される可能性があるという事実に基づいて、支払いタイプの名前を表示するにはどうすればよいですか (クレジットカード名は SAP システムのマネージャーによって書かれています)。PaymentMode.Other_01 は、あるシステムでは「VISA」、別のシステムでは「AMEX」という名前にすることができます。

    私の翻訳者にも同じ質問が適用されます(ENUMをエンドシステムコードに変換します)。SAP では、「CASH」支払いモードは 0 の整数になります。Dynamics では、GUID {3131-3-b;ablabla} です。どうすればそれを優雅に翻訳できますか?

金曜日の午後です...そこに愚かさがあったらごめんなさい... :|

4

2 に答える 2

0

私はこのアプローチに行くと思います:

public enum PaymentMode
{
    AccountReceivable = 0,
    Cash = 1,
    Debit = 2,
    Check = 3,
    GiftCertificate = 4,
    Visa = 5,
    Amex = 6,
    MasterCard = 7,
    Other = 20,
}

そして、単にボタン 1、2、3、4 を値Other_010203、にマッピングする代わりに04、適切な支払いタイプにマッピングするために、異なるキー レイアウトごとにいくつかのコードを設定します。例えば

public class Layout1 : LayoutBase
{
    public override PaymentMode GetPaymentType(int key)
    {
        switch (key)
        {
            case 1:
                return PaymentMode.Visa;
            // others...
        }
    }
}
public class Layout2 : LayoutBase
{
    public override PaymentMode GetPaymentType(int key)
    {
        switch (key)
        {
            case 1:
                return PaymentMode.MasterCard;
            // others...
        }
    }
}

CASHまた、GUID または で表される問題については0、コードでも処理できると思います。

public class DynamicsLayout : LayoutBase
{
    public override PaymentMode GetPaymentType(object raw)
    {
        if (raw is string && raw.ToString() == "{3131-3-b;ablabla}")
            return PaymentMode.Cash;
        // others
    }
}
于 2013-09-27T17:52:22.173 に答える