예제 #1
0
        private string insertEdi_855(Edi_SalesOrder_855 sapSalesOrder)
        {
            string          json       = JsonConvert.SerializeObject(sapSalesOrder);
            string          _Action    = "EdiSalesOrder_855";
            string          _Uri       = _ConnectionString + _Action;
            ApiResultEntity _ApiResult = CallWebAPI.Post(json, _Uri);

            return(_ApiResult.Data.ToString());
        }
예제 #2
0
 public void InsertEdi_SalesOrder(Edi_SalesOrder_855 edi_SalesOrder_855)
 {
     this._edi_SalesHeader_855Service.Create(edi_SalesOrder_855.Header);
     foreach (Edi_SalesItem_855 si in edi_SalesOrder_855.ItemList)
     {
         this._edi_SalesItem_855Service.Create(si);
     }
     foreach (Edi_SalesSchedule_855 ss in edi_SalesOrder_855.ScheduleList)
     {
         this._edi_SalesSchedule_855Service.Create(ss);
     }
 }
예제 #3
0
 public bool PostEdiSalesOrder_855(Edi_SalesOrder_855 sapSalesOrder_855)
 {
     this._ediService.InsertEdi_SalesOrder(sapSalesOrder_855);
     return(true);
 }
        public Edi_SalesOrder_855  LineItemStatus(Edi_SalesHeader edi_SalesHeader, List <SOrder> sorderList, List <Edi_SalesItem> edi_SalesItemList, List <Edi_SalesSchedule> edi_SalesScheduleList)
        {
            string             _Log                = "";
            string             _LineItemStatus     = "IA";
            string             _ItemNumber         = "";
            Edi_SalesOrder_855 _Edi_SalesOrder_855 = new  Edi_SalesOrder_855();

            try
            {
                List <WebApi.Models.Edi_SalesItem_855>     _Edi_SalesItem_855List     = new List <WebApi.Models.Edi_SalesItem_855>();
                List <WebApi.Models.Edi_SalesSchedule_855> _Edi_SalesSchedule_855List = new List <WebApi.Models.Edi_SalesSchedule_855>();
                WebApi.Models.Edi_SalesHeader_855          _Edi_SalesHeader_855       = new WebApi.Models.Edi_SalesHeader_855();
                _Edi_SalesHeader_855.PURCH_NO_C  = edi_SalesHeader.PURCH_NO_C;
                _Edi_SalesHeader_855.PURCH_DATE  = edi_SalesHeader.PURCH_DATE;
                _Edi_SalesHeader_855.DateTime    = DateTime.Now.ToString("yyyyMMdd");
                _Edi_SalesHeader_855.OrderNumber = edi_SalesHeader.OrderNumber;
                foreach (Edi_SalesItem s in edi_SalesItemList)
                {
                    List <Edi_SalesSchedule> _Edi_SalesScheduleList = edi_SalesScheduleList.Where(x => x.ITM_NUMBER == s.ITM_NUMBER).ToList();
                    _ItemNumber = s.ITM_NUMBER;
                    WebApi.Models.Edi_SalesItem_855 _Edi_SalesItem_855 = new WebApi.Models.Edi_SalesItem_855();
                    _Edi_SalesItem_855.OrderNumber         = s.OrderNumber;
                    _Edi_SalesItem_855.CUST_MAT35          = s.CUST_MAT35;
                    _Edi_SalesItem_855.ITM_NUMBER          = s.ITM_NUMBER;
                    _Edi_SalesItem_855.MATERIAL            = s.MATERIAL;
                    _Edi_SalesItem_855.CustomerUnit        = s.CustomerUnit;
                    _Edi_SalesItem_855.CustomerItemNumber  = s.CustomerItemNumber;
                    _Edi_SalesItem_855.DateTime            = DateTime.Now.ToString("yyyyMMdd");
                    _Edi_SalesItem_855.CustomerUnitOfPrice = s.CustomerUnitOfPrice;
                    List <SOrder> _SOrderList = sorderList.Where(x => x.POSNR == s.ITM_NUMBER).ToList();
                    if (_SOrderList.Count > 0)
                    {
                        _Edi_SalesItem_855.TARGET_QTY = Convert.ToString(_SOrderList.First().KWMENG);
                        _Edi_SalesItem_855.Price      = Convert.ToString(Decimal.Round(_SOrderList.First().PRICE, 6));
                        if (_SOrderList.First().LIFSP != "")
                        {
                            _LineItemStatus = "IH";
                        }
                        if (_SOrderList.First().PRICE != Convert.ToDecimal(s.CustomerPrice))
                        {
                            _LineItemStatus = "IP";
                        }
                        if (_SOrderList.First().ABGRU != "")
                        {
                            _LineItemStatus = "IR";
                        }
                        if (_Edi_SalesScheduleList.Count > 0)
                        {
                            if (_SOrderList.First().EDATU != _Edi_SalesScheduleList.First().REQ_DATE)
                            {
                                _LineItemStatus = "DR";
                            }
                            if (_SOrderList.First().LFSTA == "C")
                            {
                                _LineItemStatus = "AC";
                            }
                            if (_SOrderList.First().KWMENG != Convert.ToDecimal(_Edi_SalesScheduleList.First().REQ_QTY))
                            {
                                _LineItemStatus = "IQ";
                            }
                        }
                    }
                    else
                    {
                        _Edi_SalesItem_855.Price = s.CustomerPrice;
                        if (_Edi_SalesScheduleList.Count > 0)
                        {
                            _Edi_SalesItem_855.TARGET_QTY = _Edi_SalesScheduleList.First().REQ_QTY;
                        }
                        _LineItemStatus = "ID";
                    }
                    _Edi_SalesItem_855List.Add(_Edi_SalesItem_855);
                    WebApi.Models.Edi_SalesSchedule_855 _Edi_SalesSchedule_855 = new WebApi.Models.Edi_SalesSchedule_855();
                    _Edi_SalesSchedule_855.OrderNumber  = s.OrderNumber;
                    _Edi_SalesSchedule_855.ITM_NUMBER   = s.ITM_NUMBER;
                    _Edi_SalesSchedule_855.CustomerUnit = s.CustomerUnit;
                    _Edi_SalesSchedule_855.Status       = _LineItemStatus;
                    _Edi_SalesSchedule_855.DateTime     = DateTime.Now.ToString("yyyyMMdd");
                    _Edi_SalesSchedule_855.DateTimeCode = "017";
                    _Edi_SalesSchedule_855.REQ_DATE     = _SOrderList.Count > 0?_SOrderList.First().EDATU: _Edi_SalesScheduleList.First().REQ_DATE;
                    _Edi_SalesSchedule_855.REQ_QTY      = _SOrderList.Count > 0? Convert.ToString(_SOrderList.First().KWMENG) : _Edi_SalesScheduleList.First().REQ_QTY;
                    _Edi_SalesSchedule_855List.Add(_Edi_SalesSchedule_855);
                }
                string _HeaderStatus = "AC";
                if (_LineItemStatus == "IR")
                {
                    _HeaderStatus = "RD";
                }
                else if (_LineItemStatus == "IA")
                {
                    _HeaderStatus = "AD";
                }
                _Edi_SalesHeader_855.Status      = _HeaderStatus;
                _Edi_SalesOrder_855.Header       = _Edi_SalesHeader_855;
                _Edi_SalesOrder_855.ItemList     = _Edi_SalesItem_855List;
                _Edi_SalesOrder_855.ScheduleList = _Edi_SalesSchedule_855List;
            }
            catch (Exception ex)
            {
                _Log = "\r\n" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + " Edi_SalesHeader_855:LineItemStatus: row : order:" + edi_SalesHeader.OrderNumber + " item:" + _ItemNumber + " , row data has error format:\r\n" + ex.Message;
                this.ListError.Add(_Log);
                logger.Error(_Log);
            }
            return(_Edi_SalesOrder_855);
        }
        public string X12_855(Edi_SalesOrder_855 sapSalesOrder, string mode, string receiver)
        {
            M_855    map = new M_855();
            EdiTrans t   = new EdiTrans(map);

            var sDef = (MapSegment)map.Content.First(s => s.Name == "BAK");

            var seg = new EdiSegment(sDef);

            seg.Content.AddRange(new[]
            {
                new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[0], "00"),
                new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[1], sapSalesOrder.Header.Status),     //AD:No change AC:with change RD:rejected
                new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[2], sapSalesOrder.Header.PURCH_NO_C), //set 850 order number
                new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[3], sapSalesOrder.Header.PURCH_DATE),
                new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[7], sapSalesOrder.Header.OrderNumber),
                new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[8], sapSalesOrder.Header.DateTime)
            });
            t.Content.Add(seg);
            //create segment
            var lDef = (MapLoop)map.Content.First(s => s.Name == "L_PO1");

            sDef = (MapSegment)lDef.Content.First(s => s.Name == "PO1");

            EdiLoop p01 = new EdiLoop(lDef, null);

            t.Content.Add(p01);
            //get sap order price?
            foreach (Edi_SalesItem_855 i in sapSalesOrder.ItemList)
            {
                seg = new EdiSegment(sDef);
                seg.Content.AddRange(new[]
                {
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[0], i.CustomerItemNumber),
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[1], i.TARGET_QTY),
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[2], i.CustomerUnit),        //ok
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[3], i.Price),
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[4], i.CustomerUnitOfPrice), //ok
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[5], "BP"),
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[6], i.CUST_MAT35),
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[7], "VP"),
                    new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[8], i.MATERIAL)
                });
                p01.Content.Add(seg);

                var lDef_L_ACK = (MapLoop)lDef.Content.First(s => s.Name == "L_ACK");
                var sDef_ACK   = (MapSegment)lDef_L_ACK.Content.First(s => s.Name == "ACK");

                EdiLoop w = new EdiLoop(lDef_L_ACK, p01);
                p01.Content.Add(w);
                foreach (Edi_SalesSchedule_855 j in sapSalesOrder.ScheduleList)
                {
                    if (i.ITM_NUMBER == j.ITM_NUMBER)
                    {
                        seg = new EdiSegment(sDef_ACK);
                        seg.Content.AddRange(new[]
                        {
                            new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[0], j.Status),       //IA:accept IR:reject
                            new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[1], j.REQ_QTY),
                            new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[2], i.CustomerUnit), //ok
                            new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[2], j.DateTimeCode),
                            new EdiSimpleDataElement((MapSimpleDataElement)sDef.Content[2], j.DateTime)
                        });
                        w.Content.Add(seg);
                    }
                }
            }
            string data = writeEdiEnvelope(t, "PR", mode, receiver);
            //read produced results and check for errors.
            EdiDataReader r     = new EdiDataReader();
            EdiBatch      batch = r.FromString(data);
            EdiTrans      trans = batch.Interchanges[0].Groups[0].Transactions[0];

            return(data);
        }
예제 #6
0
        /// <summary>
        /// get Sap ZSDT046 table SAP_PROC = ''
        /// get status = 'S'  sap order
        /// 855 message:according to 850 table & sap order data
        /// insert 855 data to database
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnOrderComfirm_Click(object sender, EventArgs e)
        {
            string _Log         = "";
            string _OrderNumber = "";

            try
            {
                string _EdiBase = ConfigurationManager.AppSettings["EdiBase"];
                btnLogin.PerformClick();
                btnGet.PerformClick();
                List <Edi_SalesHeader> _SalesHeaderList     = getSalesHeaderList();
                Edi_SalesOrder_855     _Edi_SalesOrder_855  = new Edi_SalesOrder_855();
                TestWebApi.BLL.Edi.Edi_SalesHeader_855 _855 = new TestWebApi.BLL.Edi.Edi_SalesHeader_855();
                List <EdiStatus> _EdiStatusList             = GetSapEdiStatusList();
                foreach (EdiStatus s in _EdiStatusList)
                {
                    _OrderNumber = s.VBELN;
                    _Log         = "\r\n" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + " CreateOrderComfirm: Order Number:" + _OrderNumber;
                    List <SOrder>            _SOrderList        = GetSapSalesHeaderList(s.VBELN);
                    List <Edi_SalesItem>     _SalesItemList     = getSalesItemList(s.VBELN);
                    List <Edi_SalesSchedule> _SalesScheduleList = getSalesScheduleList(s.VBELN);
                    if (_SOrderList.Count > 0)
                    {
                        Edi_SalesHeader _Edi_SalesHeader = _SalesHeaderList.Where(x => x.OrderNumber == s.VBELN).First();
                        if (_edi_Customerlist.Where(x => x.SapCustomerId == _SOrderList.First().KUNNR).ToList().Count > 0)
                        {
                            Edi_Customer c = _edi_Customerlist.Where(x => x.SapCustomerId == _SOrderList.First().KUNNR).First();
                            _Edi_SalesOrder_855 = _855.LineItemStatus(_Edi_SalesHeader, _SOrderList, _SalesItemList, _SalesScheduleList);
                            if (_855.ListError.Count == 0)
                            {
                                string _Mode = c.Mode == true ? "P" : "T";
                                if (c.Mode == _EdiMode)//PRD
                                {
                                    string _855Msg = _855.X12_855(_Edi_SalesOrder_855, _Mode, c.ReceiverId);
                                    insertEdi_855(_Edi_SalesOrder_855);
                                    string _FileName        = "855_" + _Edi_SalesOrder_855.Header.PURCH_NO_C + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + Guid.NewGuid().ToString("N") + ".edi";
                                    string _EdiCustomerSend = c.RSSBus_PortId + "/Send";
                                    //write edi file
                                    FtpFile.CopyTo("Edi", _EdiCustomerSend, _FileName, _855Msg);
                                    //upload to RSSBus send directory
                                    FtpFile.Upload("Edi", _EdiCustomerSend, _EdiBase, _FileName);
                                    if (c.Mode == true)
                                    {
                                        updateZSDT046(s.VBELN);
                                    }
                                }
                            }
                            else
                            {
                                _Log = _Log + "\r\n" + _855.ListError[0];
                                logger.Error(_Log);
                                txtLog.Text += _Log;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _Log = "\r\n" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + " OrderComfirm:Order Number:" + _OrderNumber + "\r\n" + ex.Message;
                logger.Error(_Log);
                txtLog.Text += _Log;
            }
        }