public void Update(SAP_PriceList instance)
 {
     if (instance == null)
     {
         throw new ArgumentNullException();
     }
     this._repository.Update(instance);
 }
예제 #2
0
        /// <summary>
        /// if current sap price list has PR01 price,
        /// then has PR00  price ,return true
        /// then no PR00 price , return false
        /// </summary>
        /// <param name="sap_PriceList_CNY">the price list contans CNY currency </param>
        /// <param name="s"></param>
        /// <returns></returns>
        private bool IsHasNoTax(List <SAP_PriceList> sap_PriceList_CNY, SAP_PriceList s)
        {
            bool          _Has           = false;
            SAP_PriceList _Sap_PriceList = new SAP_PriceList();
            string        _TaxCondition  = s.TaxType == "PR01" ? "PR00" : "PR01";

            try
            {
                if (s.EndCustomerId != "")
                {
                    _Sap_PriceList = sap_PriceList_CNY.Where(x => x.CustomerId == s.CustomerId && x.EndCustomerId == s.EndCustomerId && x.PartNumber == s.PartNumber && x.TaxType == _TaxCondition).FirstOrDefault();
                }
                else
                {
                    _Sap_PriceList = sap_PriceList_CNY.Where(x => x.CustomerId == s.CustomerId && x.PartNumber == s.PartNumber && x.TaxType == _TaxCondition).FirstOrDefault();
                }
                _Has = _Sap_PriceList != null ? true : false;
            }
            catch (Exception ex)
            {
            }
            return(_Has);
        }
예제 #3
0
        /// <summary>
        /// get sap zsdt006 tax
        /// </summary>
        /// <param name="quotationTaxList"></param>
        /// <param name="s"></param>
        /// <returns></returns>
        private int GetTax(IList <QuotationTax> quotationTaxList, SAP_PriceList s)
        {
            int          _Tax          = 0;
            QuotationTax _QuotationTax = new QuotationTax();

            try
            {
                if (s.EndCustomerId != "")
                {
                    _QuotationTax = quotationTaxList.Where(x => x.LAEDA == s.EffectiveDate && x.KUNNR == s.CustomerId && x.KUNNR1 == s.EndCustomerId && x.MATNR == s.PartNumber).FirstOrDefault();
                }
                else
                {
                    _QuotationTax = quotationTaxList.Where(x => x.LAEDA == s.EffectiveDate && x.KUNNR == s.CustomerId && x.MATNR == s.PartNumber).FirstOrDefault();
                }
                //the price tax from tip top system is 16%
                _Tax = _QuotationTax != null?Convert.ToInt32(_QuotationTax.TAX) : 16;
            }
            catch (Exception ex)
            {
            }

            return(_Tax);
        }
예제 #4
0
        private SapMiddleData ProcessChinaPrice(SapMiddleData sapMiddleData, IList <QuotationTax> quotationTaxList)
        {
            bool _Has           = false;
            int  _Tax           = 0;
            bool _AddNoTaxPrice = true;
            List <SAP_PriceList> _Sap_PriceList_CNY  = sapMiddleData.PriceList.Where(x => x.Currency == "CNY").ToList();
            List <SAP_PriceList> _Sap_PriceList_PR00 = new List <SAP_PriceList>();
            SapMiddleData        _SapMiddleData      = new SapMiddleData();

            foreach (SAP_PriceList s in _Sap_PriceList_CNY)
            {
                _AddNoTaxPrice = s.TaxType == "PR01" ? true : false;
                //if no PR00 price
                _Has = IsHasNoTax(_Sap_PriceList_CNY, s);
                if (!_Has)
                {
                    _Tax = _AddNoTaxPrice ? GetTax(quotationTaxList, s) : 13;
                    SAP_PriceList _Sap_Price = new SAP_PriceList();
                    _Sap_Price.TaxRate = _Tax;
                    _Tax += 100;
                    _Sap_Price.CustomerId      = s.CustomerId;
                    _Sap_Price.CustomerName    = s.CustomerName;
                    _Sap_Price.EndCustomerId   = s.EndCustomerId;
                    _Sap_Price.EndCustomerName = s.EndCustomerName;
                    _Sap_Price.PartNumber      = s.PartNumber;
                    _Sap_Price.Currency        = s.Currency;
                    _Sap_Price.MOQ1            = s.MOQ1;
                    if (s.MOQ1 != null)
                    {
                        _Sap_Price.Price1 = _AddNoTaxPrice ? s.Price1 * 100 / _Tax : s.Price1 * _Tax / 100;
                        _Sap_Price.Price1 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price1), 2));
                    }
                    _Sap_Price.MOQ2 = s.MOQ2;
                    if (s.MOQ2 != null)
                    {
                        _Sap_Price.Price2 = _AddNoTaxPrice ? s.Price2 * 100 / _Tax : s.Price2 * _Tax / 100;
                        _Sap_Price.Price2 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price2), 2));
                    }
                    _Sap_Price.MOQ3 = s.MOQ3;
                    if (s.MOQ3 != null)
                    {
                        _Sap_Price.Price3 = _AddNoTaxPrice ? s.Price3 * 100 / _Tax : s.Price3 * _Tax / 100;
                        _Sap_Price.Price3 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price3), 2));
                    }
                    _Sap_Price.MOQ4 = s.MOQ4;
                    if (s.MOQ4 != null)
                    {
                        _Sap_Price.Price4 = _AddNoTaxPrice ? s.Price4 * 100 / _Tax : s.Price4 * _Tax / 100;
                        _Sap_Price.Price4 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price4), 2));
                    }
                    _Sap_Price.MOQ5 = s.MOQ5;
                    if (s.MOQ5 != null)
                    {
                        _Sap_Price.Price5 = _AddNoTaxPrice ? s.Price5 * 100 / _Tax : s.Price5 * _Tax / 100;
                        _Sap_Price.Price5 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price5), 2));
                    }
                    _Sap_Price.MOQ6 = s.MOQ6;
                    if (s.MOQ6 != null)
                    {
                        _Sap_Price.Price6 = _AddNoTaxPrice ? s.Price6 * 100 / _Tax : s.Price6 * _Tax / 100;
                        _Sap_Price.Price6 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price6), 2));
                    }
                    _Sap_Price.MOQ7 = s.MOQ7;
                    if (s.MOQ7 != null)
                    {
                        _Sap_Price.Price7 = _AddNoTaxPrice ? s.Price7 * 100 / _Tax : s.Price7 * _Tax / 100;
                        _Sap_Price.Price7 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price7), 2));
                    }
                    _Sap_Price.MOQ8 = s.MOQ8;
                    if (s.MOQ8 != null)
                    {
                        _Sap_Price.Price8 = _AddNoTaxPrice ? s.Price8 * 100 / _Tax : s.Price8 * _Tax / 100;
                        _Sap_Price.Price8 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price8), 2));
                    }
                    _Sap_Price.MOQ9 = s.MOQ9;
                    if (s.MOQ9 != null)
                    {
                        _Sap_Price.Price9 = _AddNoTaxPrice ? s.Price9 * 100 / _Tax : s.Price9 * _Tax / 100;
                        _Sap_Price.Price9 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price9), 2));
                    }
                    _Sap_Price.MOQ10 = s.MOQ10;
                    if (s.MOQ10 != null)
                    {
                        _Sap_Price.Price10 = _AddNoTaxPrice ? s.Price10 * 100 / _Tax : s.Price10 * _Tax / 100;
                        _Sap_Price.Price10 = Convert.ToDecimal(System.Math.Round(Convert.ToDouble(_Sap_Price.Price10), 2));
                    }
                    _Sap_Price.Date           = DateTime.Now.ToString("yyyyMMdd");
                    _Sap_Price.Rate           = s.Rate;
                    _Sap_Price.Per            = s.Per;
                    _Sap_Price.TaxType        = _AddNoTaxPrice ? "PR00" : "PR01";
                    _Sap_Price.TaxRate        = _Tax - 100;
                    _Sap_Price.EffectiveDate  = s.EffectiveDate;
                    _Sap_Price.InsertSapPrice = false;
                    _Sap_PriceList_PR00.Add(_Sap_Price);
                }
            }
            _SapMiddleData.PriceList = _Sap_PriceList_PR00;
            //_SapMiddleData.PriceList = _Sap_PriceList_PR00.Where(x => x.TaxRate == 13).ToList();
            return(_SapMiddleData);
        }
예제 #5
0
        public override SapMiddleData Parse(string filePath)
        {
            List <SapRate>         _SapRateList   = initSapRate();
            SapMiddleData          _SapMiddleData = new SapMiddleData();
            List <SAP_PriceList>   _SAP_PriceList = new List <SAP_PriceList>();
            IQueryable <PriceList> _PriceList;

            LinqToExcel.ExcelQueryFactory _Excel = new LinqToExcel.ExcelQueryFactory(filePath);
            _Excel.AddMapping <PriceList>(d => d.KUNNR, "KUNNR");
            _Excel.AddMapping <PriceList>(d => d.NAME1, "NAME1");
            if (base.PriceType == "終端客戶價格表A501")
            {
                _Excel.AddMapping <PriceList>(d => d.ZZENDCUST, "ZZENDCUST");
                _Excel.AddMapping <PriceList>(d => d.ZNAME1, "ZNAME1");
            }
            _Excel.AddMapping <PriceList>(d => d.MATNR, "MATNR");
            _Excel.AddMapping <PriceList>(d => d.KONWA, "KONWA");
            _Excel.AddMapping <PriceList>(d => d.KSTBM, "KSTBM");
            _Excel.AddMapping <PriceList>(d => d.KBETR, "KBETR");
            _Excel.AddMapping <PriceList>(d => d.KLFN1, "KLFN1");
            _Excel.AddMapping <PriceList>(d => d.KPEIN, "KPEIN");
            _Excel.AddMapping <PriceList>(d => d.KNUMH, "KNUMH");
            _Excel.AddMapping <PriceList>(d => d.KSCHL, "KSCHL");
            // every time get first sheet data
            _PriceList = from x in _Excel.Worksheet <PriceList>(0)
                         select x;
            int           _Start = 1, _Order = 1;
            string        _KNUMH     = "";
            SAP_PriceList _Sap_Price = new SAP_PriceList();

            foreach (PriceList c in _PriceList)
            {
                try
                {
                    int     _KSTBM = 0;
                    decimal?_KBETR = 0, _Price = 0, _UnitPrice;
                    if (c.KNUMH != _KNUMH)
                    {
                        _Order = 1;
                        if (_Start != 1)
                        {
                            _SAP_PriceList.Add(_Sap_Price);
                        }
                        _Sap_Price                 = new SAP_PriceList();
                        _KNUMH                     = c.KNUMH;//group price
                        _Sap_Price.CustomerId      = c.KUNNR;
                        _Sap_Price.CustomerName    = c.NAME1;
                        _Sap_Price.EndCustomerId   = c.ZZENDCUST;
                        _Sap_Price.EndCustomerName = c.ZNAME1;
                        _Sap_Price.PartNumber      = c.MATNR;
                        _Sap_Price.Currency        = c.KONWA;
                        _Sap_Price.Date            = DateTime.Now.Date.ToString("yyyyMMdd");
                        _Sap_Price.Rate            = Convert.ToDecimal(_SapRateList.Where(x => x.Currency == c.KONWA.Trim()).First().Rate);
                        _Sap_Price.Per             = c.KPEIN == null ? 0 : int.Parse(c.KPEIN, System.Globalization.NumberStyles.AllowThousands);
                        _Sap_Price.TaxType         = c.KSCHL;
                    }
                    _KSTBM = c.KSTBM == null ? 0 : int.Parse(c.KSTBM, System.Globalization.NumberStyles.AllowThousands);
                    if (c.KONWA == "TWD" || c.KONWA == "JPY")
                    {
                        _KBETR = Convert.ToDecimal(c.KBETR) * 100;
                    }
                    else
                    {
                        _KBETR = Convert.ToDecimal(c.KBETR);
                    }
                    _UnitPrice = Convert.ToDecimal(_KBETR / _Sap_Price.Per);
                    _Price     = _UnitPrice * _Sap_Price.Rate;
                    if (_Order == 1)
                    {
                        _Sap_Price.MOQ1   = _KSTBM;
                        _Sap_Price.Price1 = _Price;
                    }
                    else if (_Order == 2)
                    {
                        _Sap_Price.MOQ2   = _KSTBM;
                        _Sap_Price.Price2 = _Price;
                    }
                    else if (_Order == 3)
                    {
                        _Sap_Price.MOQ3   = _KSTBM;
                        _Sap_Price.Price3 = _Price;
                    }
                    else if (_Order == 4)
                    {
                        _Sap_Price.MOQ4   = _KSTBM;
                        _Sap_Price.Price4 = _Price;
                    }
                    else if (_Order == 5)
                    {
                        _Sap_Price.MOQ5   = _KSTBM;
                        _Sap_Price.Price5 = _Price;
                    }
                    else if (_Order == 6)
                    {
                        _Sap_Price.MOQ6   = _KSTBM;
                        _Sap_Price.Price6 = _Price;
                    }
                    else if (_Order == 7)
                    {
                        _Sap_Price.MOQ7   = _KSTBM;
                        _Sap_Price.Price7 = _Price;
                    }
                    else if (_Order == 8)
                    {
                        _Sap_Price.MOQ8   = _KSTBM;
                        _Sap_Price.Price8 = _Price;
                    }
                    else if (_Order == 9)
                    {
                        _Sap_Price.MOQ9   = _KSTBM;
                        _Sap_Price.Price9 = _Price;
                    }
                    else if (_Order == 10)
                    {
                        _Sap_Price.MOQ10   = _KSTBM;
                        _Sap_Price.Price10 = _Price;
                    }
                    _Order++;
                    if (_Start == _PriceList.Count())
                    {
                        _SAP_PriceList.Add(_Sap_Price);
                    }
                }
                catch (Exception ex)
                {
                    string _c = JsonConvert.SerializeObject(c);
                    this.ListError.Add(" row : " + _Start.ToString() + " , row data has error format:" + ex.Message + "\r\n data:" + _c);
                }
                _Start++;
            }
            _SapMiddleData.PriceList = _SAP_PriceList;
            return(_SapMiddleData);
        }
예제 #6
0
        public SapMiddleData Parse(DataTable dtPrice)
        {
            List <SapRate>       _SapRateList = initSapRate();
            SapMiddleData        _SapMiddleData = new SapMiddleData();
            List <SAP_PriceList> _SAP_PriceList = new List <SAP_PriceList>();
            int           _Start = 1, _Order = 1;
            string        _KNUMH = "";
            SAP_PriceList _Sap_Price = new SAP_PriceList();

            for (int i = 0; i < dtPrice.Rows.Count; i++)
            {
                try
                {
                    int     _KSTBM = 0;
                    decimal?_KBETR = 0, _Price = 0, _UnitPrice;
                    if (dtPrice.Rows[i]["KNUMH"].ToString() != _KNUMH)
                    {
                        _Order = 1;
                        if (_Start != 1)
                        {
                            _SAP_PriceList.Add(_Sap_Price);
                        }
                        _Sap_Price                 = new SAP_PriceList();
                        _KNUMH                     = dtPrice.Rows[i]["KNUMH"].ToString();//group price
                        _Sap_Price.CustomerId      = dtPrice.Rows[i]["KUNNR"].ToString();
                        _Sap_Price.CustomerName    = dtPrice.Rows[i]["NAME1"].ToString();
                        _Sap_Price.EndCustomerId   = dtPrice.Rows[i]["ZZENDCUST"].ToString();
                        _Sap_Price.EndCustomerName = dtPrice.Rows[i]["ZNAME1"].ToString();
                        _Sap_Price.PartNumber      = dtPrice.Rows[i]["MATNR"].ToString();
                        _Sap_Price.Currency        = dtPrice.Rows[i]["KONWA"].ToString();
                        _Sap_Price.Date            = DateTime.Now.Date.ToString("yyyyMMdd");
                        _Sap_Price.Rate            = Convert.ToDecimal(_SapRateList.Where(x => x.Currency == _Sap_Price.Currency.Trim()).First().Rate);
                        _Sap_Price.Per             = dtPrice.Rows[i]["KPEIN"].ToString() == "" ? 0 : int.Parse(dtPrice.Rows[i]["KPEIN"].ToString(), System.Globalization.NumberStyles.AllowThousands);
                        _Sap_Price.TaxType         = dtPrice.Rows[i]["KSCHL"].ToString();
                        _Sap_Price.EffectiveDate   = dtPrice.Rows[i]["DATAB"].ToString();
                        _Sap_Price.InsertSapPrice  = true;
                    }
                    _KSTBM = dtPrice.Rows[i]["KSTBM"].ToString() == "" ? 0 : int.Parse(dtPrice.Rows[i]["KSTBM"].ToString(), System.Globalization.NumberStyles.Float);
                    string _KONWA = dtPrice.Rows[i]["KONWA"].ToString();
                    if (_KONWA == "TWD" || _KONWA == "JPY")
                    {
                        _KBETR = Convert.ToDecimal(dtPrice.Rows[i]["KBETR"].ToString()) * 100;
                    }
                    else
                    {
                        _KBETR = Convert.ToDecimal(dtPrice.Rows[i]["KBETR"].ToString());
                    }
                    _UnitPrice = Convert.ToDecimal(_KBETR / _Sap_Price.Per);
                    _Price     = _UnitPrice * _Sap_Price.Rate;
                    if (_Order == 1)
                    {
                        _Sap_Price.MOQ1   = _KSTBM;
                        _Sap_Price.Price1 = _Price;
                    }
                    else if (_Order == 2)
                    {
                        _Sap_Price.MOQ2   = _KSTBM;
                        _Sap_Price.Price2 = _Price;
                    }
                    else if (_Order == 3)
                    {
                        _Sap_Price.MOQ3   = _KSTBM;
                        _Sap_Price.Price3 = _Price;
                    }
                    else if (_Order == 4)
                    {
                        _Sap_Price.MOQ4   = _KSTBM;
                        _Sap_Price.Price4 = _Price;
                    }
                    else if (_Order == 5)
                    {
                        _Sap_Price.MOQ5   = _KSTBM;
                        _Sap_Price.Price5 = _Price;
                    }
                    else if (_Order == 6)
                    {
                        _Sap_Price.MOQ6   = _KSTBM;
                        _Sap_Price.Price6 = _Price;
                    }
                    else if (_Order == 7)
                    {
                        _Sap_Price.MOQ7   = _KSTBM;
                        _Sap_Price.Price7 = _Price;
                    }
                    else if (_Order == 8)
                    {
                        _Sap_Price.MOQ8   = _KSTBM;
                        _Sap_Price.Price8 = _Price;
                    }
                    else if (_Order == 9)
                    {
                        _Sap_Price.MOQ9   = _KSTBM;
                        _Sap_Price.Price9 = _Price;
                    }
                    else if (_Order == 10)
                    {
                        _Sap_Price.MOQ10   = _KSTBM;
                        _Sap_Price.Price10 = _Price;
                    }
                    _Order++;
                    if (_Start == dtPrice.Rows.Count)
                    {
                        _SAP_PriceList.Add(_Sap_Price);
                    }
                }
                catch (Exception ex)
                {
                    this.ListError.Add(" row : " + _Start.ToString() + " , row data has error format:" + ex.Message + "\r\n data:");
                }
                _Start++;
            }
            _SapMiddleData.PriceList = _SAP_PriceList;
            return(_SapMiddleData);
        }