Ejemplo n.º 1
0
        internal Promotion(String[] saleList, bool isFirstPayment)
        {
            String[] lineitems;
            Decimal  quantity;
            Decimal  amount;
            Int32    pluno;
            Int32    lineno;

            this.isFirstPayment = isFirstPayment;

            soldItems = SoldItem.Initialize();

            for (int cntr = 0; cntr < saleList.Length; cntr++)
            {
                lineitems = saleList[cntr].Split(',');

                if (lineitems.Length < 2)
                {
                    continue;
                }
                try
                {
                    switch (lineitems[3])
                    {
                    case Message.SAT:
                    case Message.IPT:
                        int quantityLength = lineitems[4].IndexOf('.') + 4;
                        pluno    = Int32.Parse(lineitems[4].Substring(quantityLength, 6));
                        lineno   = Int32.Parse(lineitems[1]);
                        quantity = Decimal.Parse(lineitems[4].Substring(0, quantityLength)) / 1000;
                        amount   = Decimal.Parse(lineitems[5].Substring(2, 10)) / 100;

                        int sign = lineitems[3] == Message.SAT ? 1 : -1;

                        IProduct p = FindProductByLabel(pluno);
                        if (p == null)
                        {
                            break;
                        }

                        int categoryId = Convert.ToInt32(p.Category);

                        soldItems.Add(pluno, lineno, sign * quantity, sign * amount);
                        break;

                    case Message.NAK:
                        paymentMethod = PaymentMethods.CASH;
                        paymentType   = "NAK";
                        paymentAmount = Decimal.Parse(lineitems[5].Substring(2, 10)) / 100;
                        break;

                    case Message.KRD:
                        paymentMethod = PaymentMethods.CREDIT;
                        paymentType   = String.Format("K{0,2}", lineitems[4].Substring(lineitems[4].Length - 2, 2));
                        paymentAmount = Decimal.Parse(lineitems[5].Substring(2, 10)) / 100;
                        break;

                    case Message.CHK:
                        paymentMethod = PaymentMethods.CHECK;
                        paymentType   = "CEK";
                        paymentAmount = Decimal.Parse(lineitems[5].Substring(2, 10)) / 100;
                        break;

                    case Message.DVZ:
                        paymentMethod = PaymentMethods.FOREIGNCURRENCY;
                        paymentType   = String.Format("D{0,2}", lineitems[4].Substring(0, 1));
                        paymentAmount = Decimal.Parse(lineitems[5].Substring(2, 10)) / 100;
                        break;

                    case Message.TOP:
                        documentTotalAmount = Decimal.Parse(lineitems[5].Substring(2, 10)) / 100;
                        break;

                    case Message.END:
                        if (lineitems[4].Trim() != String.Empty)
                        {
                            promotionRange = PromotionRange.CUSTOMER;
                        }
                        customerCode = lineitems[4].Trim() + lineitems[5].Substring(0, 8).Trim();
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Settings.Log(String.Format("Hata Olustu! {0}", ex.Message));
                }
            }
            if (paymentMethod == PaymentMethods.NONE)
            {
                paymentAmount = documentTotalAmount;
            }

            /*if the no sale line for the void line*/

            //foreach (int catId in saleCategories.Keys)
            //{
            //    saleCategories[catId].ClearNonconsistentVoids();
            //}
        }
Ejemplo n.º 2
0
 public virtual bool PromotionCoverAll(PromotionRange range)
 {
     return(this.range <= range);
 }