public void Update(SAP_PriceList instance) { if (instance == null) { throw new ArgumentNullException(); } this._repository.Update(instance); }
/// <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); }
/// <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); }
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); }
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); }
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); }