Ejemplo n.º 1
0
        private async Task <List <DeptStockModel> > GetERPDptStokAsync(string userName)
        {
            DeptStockModel        deptStock;
            List <DeptStockModel> deptStockList = new List <DeptStockModel>();
            Prdts pd;
            int   serNo = 1;

#if DEBUG
            userName = "******";
#endif

            ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap);
            var objs = await ERPWebServices.GetStockAsync("", userName);

            string         s      = objs.Body.GetStockResult;
            List <WsStock> stocks = JsonConvert.DeserializeObject <List <WsStock> >(s);
            foreach (var obj in stocks)
            {
                var objs2 = await ERPWebServices.GetProductAsync(obj.PRD_NO, "", "");

                s                   = objs2.Body.GetProductResult;
                pd                  = JsonConvert.DeserializeObject <List <Prdts> >(s).FirstOrDefault();
                deptStock           = new DeptStockModel();
                deptStock.StockId   = serNo;
                deptStock.StockName = obj.PRD_NAME;
                deptStock.StockNo   = obj.PRD_NO;
                deptStock.Unite     = pd.UT;
                deptStock.Qty       = obj.QTY == null ? 0 : Convert.ToInt32(obj.QTY);
                deptStock.CUS_NM    = obj.CUS_NM;
                deptStockList.Add(deptStock);
                serNo++;
            }
            return(deptStockList);
        }
Ejemplo n.º 2
0
        private async Task <string> SaveToERPAsync(string docId)
        {
            ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap);
            string msg = "";
            //
            ERPRepHead hd = new ERPRepHead();

            hd.BIL_NO = docId;
            hd.PS_DD  = DateTime.Now.Date;
            hd.SAL_NO = User.Identity.Name;
#if DEBUG
            hd.SAL_NO = "344033";
#endif
            //Get repair doc's stock.
            var repairCosts = _context.BMEDRepairCosts.Where(rc => rc.DocId == docId).ToList();
            if (repairCosts.Count() > 0)
            {
                var stocks = repairCosts.Where(rc => rc.StockType == "0").OrderBy(rc => rc.SeqNo).ToList();
                if (stocks.Count() > 0)
                {
                    int i = 1;
                    List <ERPRepBody> body = new List <ERPRepBody>();
                    foreach (var stock in stocks)
                    {
                        body.Add(new ERPRepBody
                        {
                            ITM      = i,
                            PRD_NO   = stock.PartNo.ToString(),
                            PRD_NAME = stock.PartName.ToString(),
                            QTY      = Convert.ToDecimal(stock.Qty),
                            UP       = Convert.ToDecimal(stock.Price),
                            AMT      = Convert.ToDecimal(stock.TotalCost)
                        });
                        i++;
                    }
                    //
                    string mf       = JsonConvert.SerializeObject(hd);
                    string bf       = JsonConvert.SerializeObject(body);
                    var    response = await ERPWebServices.PostRepStuffAsync(mf, bf);

                    msg = response.Body.PostRepStuffResult;
                    //回傳銷貨單號,回寫至請修單主檔
                    var repair = _context.BMEDRepairs.Find(docId);
                    if (repair != null)
                    {
                        repair.SalesDocId            = msg;
                        _context.Entry(repair).State = EntityState.Modified;
                        _context.SaveChanges();
                    }
                }
            }
            return(msg);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Get the ERP vendor by uno.
        /// </summary>
        /// <param name="uno"></param>
        /// <returns></returns>
        public async Task <ERPVendors> GetERPVendorAsync(string uno)
        {
            ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap);

            try
            {
                var objs = await ERPWebServices.GetVendorAsync("", uno, "");

                string            s       = objs.Body.GetVendorResult;
                List <ERPVendors> vendors = JsonConvert.DeserializeObject <List <ERPVendors> >(s);
                var vendor = vendors.First();
                return(vendor);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Get ERP Vendor list by keyname.
        /// </summary>
        /// <param name="uno"></param>
        /// <param name="vname"></param>
        /// <returns></returns>
        public async Task <List <ERPVendors> > GetERPVendorsByKeyNameAsync(string uno, string vname)
        {
            ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap);

            try
            {
                List <ERPVendors> vendors1 = new List <ERPVendors>();
                List <ERPVendors> vendors2 = new List <ERPVendors>();
                if (float.TryParse(uno, out float result))
                {
                    var objs1 = await ERPWebServices.GetVendorAsync("", uno, "");

                    string s1 = objs1.Body.GetVendorResult;
                    if (!s1.Contains("過濾無資料"))
                    {
                        vendors1 = JsonConvert.DeserializeObject <List <ERPVendors> >(s1);
                    }
                }
                var objs2 = await ERPWebServices.GetVendorAsync("", "", vname);

                string s2 = objs2.Body.GetVendorResult;
                if (!s2.Contains("過濾無資料"))
                {
                    vendors2 = JsonConvert.DeserializeObject <List <ERPVendors> >(s2);
                }
                vendors1.AddRange(vendors2);
                if (vendors1.Count() > 0)
                {
                    vendors1 = vendors1.GroupBy(v => v.CUS_NO).Select(group => group.First()).ToList();
                }
                return(vendors1);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Ejemplo n.º 5
0
 public ERPservicesSoapClient(EndpointConfiguration endpointConfiguration, System.ServiceModel.EndpointAddress remoteAddress) :
     base(ERPservicesSoapClient.GetBindingForEndpoint(endpointConfiguration), remoteAddress)
 {
     this.Endpoint.Name = endpointConfiguration.ToString();
     ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
 }
Ejemplo n.º 6
0
 public ERPservicesSoapClient(EndpointConfiguration endpointConfiguration) :
     base(ERPservicesSoapClient.GetBindingForEndpoint(endpointConfiguration), ERPservicesSoapClient.GetEndpointAddress(endpointConfiguration))
 {
     this.Endpoint.Name = endpointConfiguration.ToString();
     ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Sync Stock to ERP system.
        /// </summary>
        /// <param name="docId"></param>
        /// <returns></returns>
        private async Task<string> SaveToERPAsync(string docId)
        {
            ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap);
            string msg = "";
            //
            var keep = _context.BMEDKeeps.Find(docId);
            ERPRepHead hd = new ERPRepHead();
            hd.ZHANG_ID = "2";
            hd.ADD = 0;
            hd.BIL_NO = "K" + docId;
            hd.PS_DD = DateTime.Now.Date;
            hd.SAL_NO = User.Identity.Name;
            //Get SAL_NO
            var salStocks = _context.BMEDKeepCosts.Where(rc => rc.DocId == docId)
                                                  .Where(rc => rc.StockType == "0").ToList();
            var salTickets = _context.BMEDKeepCosts.Where(rc => rc.DocId == docId)
                                                   .Where(rc => rc.StockType == "2").ToList();
            if (salStocks.Count() > 0)
            {
                var salId = salStocks.FirstOrDefault().Rtp;
                var user = _context.AppUsers.Find(salId);
                hd.SAL_NO = user.UserName;
            }
            else
            {
                var salId = salTickets.OrderByDescending(s => s.Rtt).FirstOrDefault().Rtp;
                var user = _context.AppUsers.Find(salId);
                hd.SAL_NO = user.UserName;
            }
#if DEBUG
            hd.SAL_NO = "344033";
#endif
            if (keep != null)
            {
                hd.CUS_NO = keep.AccDpt;
                var asset = _context.BMEDAssets.Find(keep.AssetNo);
                if (asset != null)
                {
                    hd.WEBMAC = asset.Type;
                    hd.WEBITM = asset.MakeNo;
                }
                if (!string.IsNullOrEmpty(keep.SalesDocId))
                {
                    hd.ADD = 1;
                }
            }
            //Get keep doc's costs.
            DateTime? ticketDate = null;
            var keepCosts = _context.BMEDKeepCosts.Where(rc => rc.DocId == docId).ToList();
            if (keepCosts.Count() > 0)
            {
                // 讀取庫存明細 (2020/9/30增加發票明細)
                var stocks = keepCosts.Where(rc => rc.StockType == "0" || rc.StockType == "2").OrderBy(rc => rc.SeqNo).ToList();
                if (stocks.Count() > 0)
                {

                    int i = 1;
                    List<ERPRepBody> body = new List<ERPRepBody>();
                    ERPVendors ERPvendor = new ERPVendors();
                    foreach (var stock in stocks)
                    {
                        // get ERP vendor id.
                        if (stock.VendorId != null)
                        {
                            var vendor = _context.BMEDVendors.Find(stock.VendorId);
                            ERPvendor = await new ERPVendors().GetERPVendorAsync(vendor.UniteNo);
                        }
                        // get ticket date.
                        if (stock.AccountDate.HasValue)
                        {
                            if (ticketDate == null)
                            {
                                ticketDate = stock.AccountDate.Value.Date;
                            }
                            else if (stock.AccountDate.Value < ticketDate)
                            {
                                ticketDate = stock.AccountDate.Value.Date;
                            }
                        }
                        // 
                        var isPay = "F";
                        if (stock.IsPetty == "Y")
                        {
                            isPay = "T";
                        }
                        body.Add(new ERPRepBody
                        {
                            ITM = i,
                            PRD_NO = stock.PartNo,
                            PRD_NAME = stock.PartName,
                            QTY = Convert.ToDecimal(stock.Qty),
                            UP = Convert.ToDecimal(stock.Price),
                            AMT = Convert.ToDecimal(stock.TotalCost),
                            INV_CUS_NO = stock.VendorId == null || stock.StockType == "0" ? null : ERPvendor.CUS_NO,
                            ISPAY = isPay,
                            TAX_ID = stock.TaxClass
                        });
                        i++;
                    }
                    //
                    if (ticketDate != null)
                    {
                        hd.PS_DD = ticketDate.Value;
                    }
                    //
                    string mf = JsonConvert.SerializeObject(hd);
                    string bf = JsonConvert.SerializeObject(body);
                    var response = await ERPWebServices.PostRepStuffAsync(mf, bf);
                    JObject objs = JObject.Parse(response.Body.PostRepStuffResult);
                    string rtnCode = objs["RtnCode"].ToString();
                    if (rtnCode == "1")
                    {
                        msg = objs["RtnMsg"].ToString();
                        //回傳銷貨單號,回寫至請修單主檔
                        if (keep != null)
                        {
                            keep.SalesDocId = msg;
                            _context.Entry(keep).State = EntityState.Modified;
                            _context.SaveChanges();
                        }
                        msg = "成功";
                    }
                    else
                    {
                        var rtnMsg = objs["RtnMsg"].ToString().Replace(Environment.NewLine, "");
                        msg = "寫入ERP失敗!" + Environment.NewLine + "請將錯誤訊息【" + rtnMsg + "】告知ERP管理人員協助處理。";
                    }
                    return msg;
                }
                msg = "無費用明細,寫入ERP失敗!";
                return msg;
            }
            else
            {
                msg = "無費用明細,寫入ERP失敗!";
                return msg;
            }
        }