Beispiel #1
0
        public async Task SyncPartTrans(string company)
        {
            log.Information("Syncing PartTrans...");
            Console.WriteLine($"Syncing {company} PartTrans...");
            try
            {
                using (var db = new EpicorIntergrationEntities())
                {
                    string siteID, siteName, workstationID, workstationDescription, employeeID, countryGroupCode, countryCode, tenantID, companyName, systemCode;
                    sessionModClient.SetCompany(company, out siteID, out siteName, out workstationID, out workstationDescription, out employeeID, out countryGroupCode, out countryCode, out tenantID);

                    bool     more    = true;
                    int      page    = 0;
                    DateTime expired = DateTime.Now.AddMinutes(10);
                    while (more && expired >= DateTime.Now)
                    {
                        page++;
                        Console.WriteLine($"Working on PartTran page: #{page}");
                        var rs = await partTranClient.GetRowsAsync(new Epicor.PartTranSvc.GetRowsRequest()
                        {
                            pageSize            = 5,
                            absolutePage        = page,
                            whereClausePartTran = "(TranType = 'STK-UKN' OR TranType = 'PUR-STK') AND TranDate >= '2017-9-1'"
                        });

                        var result    = rs.GetRowsResult;
                        var partTrans = result.PartTran.ToArray();
                        more = rs.morePages;

                        foreach (var partTran in partTrans)
                        {
                            var invtTrans = db.INVT_TRANS.FirstOrDefault(p => p.TranNum == partTran.TranNum);
                            if (invtTrans == null)
                            {
                                invtTrans         = new INVT_TRANS();
                                invtTrans.DMSFlag = "N";
                                MapToEntity(invtTrans, partTran);
                                db.INVT_TRANS.Add(invtTrans);
                                Console.WriteLine($"Added invt trans: #{partTran.TranNum}");
                            }
                            //else
                            //{
                            //    MapToEntity(invtTrans, partTran);
                            //    invtTrans.DMSFlag = "U";
                            //    db.INVT_TRANS.Attach(invtTrans);
                            //    db.Entry(invtTrans).State = System.Data.Entity.EntityState.Modified;
                            //    Console.WriteLine($"Updated invt trans: #{partTran.TranNum}");
                            //}
                        }
                    }
                    await db.SaveChangesAsync();
                }

                sessionModClient.Logout();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.GetBaseException().Message);
            }
        }
Beispiel #2
0
        public async Task SyncARInvoices()
        {
            log.Information("Syncing ARInvoices...");
            try
            {
                using (var erpdb = new ERPAPPTRAINEntities())
                {
                    var arInvoices = erpdb.sptyx_DMSARInvoice().ToList();
                    var totalRow   = arInvoices.Count();
                    using (var db = new EpicorIntergrationEntities())
                    {
                        int runningRow            = 0;
                        var addedARInvoiceHeaders = new List <ARINVOICE_HEADER>();
                        var addedARInvoiceDetails = new List <ARINVOICE_DETAIL>();
                        foreach (var arInvoice in arInvoices)
                        {
                            runningRow++;
                            if (!db.ARINVOICE_HEADER.Any(p => p.CompanyCode == arInvoice.Company && p.DocNum == arInvoice.Docnum.ToString()) &&
                                !addedARInvoiceHeaders.Any(p => p.CompanyCode == arInvoice.Company && p.DocNum == arInvoice.Docnum.ToString()))
                            {
                                try
                                {
                                    var arInvoiceHeader = new ARINVOICE_HEADER();
                                    MapHeaderToEntity(arInvoiceHeader, arInvoice);
                                    arInvoiceHeader.ARINVOICE_DMSFLAG = "N";
                                    addedARInvoiceHeaders.Add(arInvoiceHeader);
                                    //await db.SaveChangesAsync();
                                    Console.WriteLine($"[{runningRow}/{totalRow}]Added arInvoiceHeader: #{arInvoice.Docnum}");
                                }
                                catch (Exception e)
                                {
                                    log.Error($"Failed adding arInvoiceHeader: #{arInvoice.Company}/{arInvoice.Docnum} - {e.GetBaseException().Message}", e.GetBaseException());
                                    Console.WriteLine($"Failed adding arInvoiceHeader: #{arInvoice.Company}/{arInvoice.Docnum}");
                                    Console.WriteLine(e.GetBaseException().Message);
                                    continue;
                                }
                            }

                            if (!db.ARINVOICE_DETAIL.Any(p => p.CompanyCode == arInvoice.Company && p.DocNum == arInvoice.Docnum.ToString() && p.LineNum == arInvoice.Linenum.ToString()) &&
                                !addedARInvoiceDetails.Any(p => p.CompanyCode == arInvoice.Company && p.DocNum == arInvoice.Docnum.ToString() && p.LineNum == arInvoice.Linenum.ToString()))
                            {
                                try
                                {
                                    var arInvoiceDetail = new ARINVOICE_DETAIL();
                                    MapDetailToEntity(arInvoiceDetail, arInvoice);
                                    addedARInvoiceDetails.Add(arInvoiceDetail);
                                    //await db.SaveChangesAsync();
                                    Console.WriteLine($"[{runningRow}/{totalRow}]Added arInvoiceDetail: #{arInvoice.Docnum}");
                                }
                                catch (Exception e)
                                {
                                    log.Error($"Failed adding arInvoiceDetail: #{arInvoice.Company}/{arInvoice.Docnum} - {e.GetBaseException().Message}", e.GetBaseException());
                                    Console.WriteLine($"Failed adding arInvoiceDetail: #{arInvoice.Company}/{arInvoice.Docnum}");
                                    Console.WriteLine(e.GetBaseException().Message);
                                    continue;
                                }
                            }
                        }

                        if (addedARInvoiceHeaders.Any())
                        {
                            db.ARINVOICE_HEADER.AddRange(addedARInvoiceHeaders);
                        }
                        if (addedARInvoiceDetails.Any())
                        {
                            db.ARINVOICE_DETAIL.AddRange(addedARInvoiceDetails);
                        }
                        await db.SaveChangesAsync();
                    }
                }
                //bool more = true;
                //int page = 0;
                //DateTime expired = DateTime.Now.AddMinutes(10);
                //while (more && expired >= DateTime.Now)
                //{
                //    page++;
                //    Console.WriteLine($"Working on AR Invoice Header page: #{page}");

                //    var rs = await arInvoiceClient.GetRowsAsync(new Epicor.ARInvoiceSvc.GetRowsRequest()
                //    {
                //        pageSize = 5,
                //        absolutePage = page
                //    });
                //    var result = rs.GetRowsResult;
                //    more = rs.morePages;

                //    using (var db = new EpicorIntergrationEntities())
                //    {
                //        //Header
                //        var invcHeads = result.InvcHead.ToArray();
                //        foreach (var invcHead in invcHeads)
                //        {
                //            var arInvoiceHeader = db.ARINVOICE_HEADER.FirstOrDefault(p => p.InvoiceNum == invcHead.InvoiceNum);
                //            if (arInvoiceHeader == null)
                //            {
                //                arInvoiceHeader = new ARINVOICE_HEADER();
                //                arInvoiceHeader.DMSFlag = "N";
                //                MapHeaderToEntity(arInvoiceHeader, invcHead);
                //                db.ARINVOICE_HEADER.Add(arInvoiceHeader);
                //                Console.WriteLine($"Added AR Invoice Header: #{invcHead.InvoiceNum}");
                //            }
                //            else
                //            {
                //                MapHeaderToEntity(arInvoiceHeader, invcHead);
                //                arInvoiceHeader.DMSFlag = "U";
                //                db.ARINVOICE_HEADER.Attach(arInvoiceHeader);
                //                db.Entry(arInvoiceHeader).State = System.Data.Entity.EntityState.Modified;
                //                Console.WriteLine($"Updated AR Invoice Header: #{invcHead.InvoiceNum}");
                //            }
                //        }

                //        //Detail
                //        var invcDtls = result.InvcDtl.ToArray();
                //        foreach (var invcDtl in invcDtls)
                //        {
                //            var arInvoiceDetail = db.ARINVOICE_DETAIL.FirstOrDefault(p => p.InvoiceNum == invcDtl.InvoiceNum && p.InvoiceLine == invcDtl.InvoiceLine);
                //            if (arInvoiceDetail == null)
                //            {
                //                arInvoiceDetail = new ARINVOICE_DETAIL();
                //                arInvoiceDetail.DMSFlag = "N";
                //                MapDetailToEntity(arInvoiceDetail, invcDtl);
                //                db.ARINVOICE_DETAIL.Add(arInvoiceDetail);
                //                Console.WriteLine($"Added AR Invoice Detail: #{invcDtl.InvoiceNum}");
                //            }
                //            else
                //            {
                //                MapDetailToEntity(arInvoiceDetail, invcDtl);
                //                arInvoiceDetail.DMSFlag = "U";
                //                db.ARINVOICE_DETAIL.Attach(arInvoiceDetail);
                //                db.Entry(arInvoiceDetail).State = System.Data.Entity.EntityState.Modified;
                //                Console.WriteLine($"Updated AR Invoice Detail: #{invcDtl.InvoiceNum}");
                //            }
                //        }

                //        //Save all
                //        await db.SaveChangesAsync();
                //    }
                //}
            }
            catch (Exception e)
            {
                Console.WriteLine(e.GetBaseException().Message);
            }
        }
        public async Task SyncCustomers()
        {
            Console.WriteLine("Syncing Customers...");
            try
            {
                using (var db = new EpicorIntergrationEntities())
                {
                    var addedCustomers = db.CUSTOMERs.Where(c => c.DMSFlag == "N");
                    //var updatedCustomers = db.CUSTOMERs.Where(c => c.DMSFlag == "U");
                    if (addedCustomers.Any() /* || updatedCustomers.Any()*/)
                    {
                        foreach (var customer in addedCustomers)
                        {
                            try
                            {
                                string siteID, siteName, workstationID, workstationDescription, employeeID, countryGroupCode, countryCode, tenantID, companyName, systemCode;

                                var currentCompany = sessionModClient.GetCurrentValues(out companyName, out siteID, out siteName, out employeeID, out workstationID, out workstationDescription, out systemCode, out countryGroupCode, out countryCode, out tenantID);

                                if (currentCompany != customer.CompanyCode)
                                {
                                    sessionModClient.SetCompany(customer.CompanyCode, out siteID, out siteName, out workstationID, out workstationDescription, out employeeID, out countryGroupCode, out countryCode, out tenantID);
                                }
                                CustomerTableset customerTableset = new CustomerTableset();
                                customerClient.GetNewCustomer(ref customerTableset);
                                var customerRow = customerTableset.Customer.Where(p => p.RowMod == "A").FirstOrDefault();
                                if (customerRow != null)
                                {
                                    MapToCustomerRow(customerRow, customer);
                                    customerClient.Update(ref customerTableset);
                                    var custNum   = customerTableset.Customer[0].CustNum;
                                    var shipToRow = customerTableset.ShipTo.FirstOrDefault();
                                    if (shipToRow != null)
                                    {
                                        MapToShipToRow(shipToRow, customer);
                                        shipToRow.RowMod = "U";
                                        customerClient.Update(ref customerTableset);
                                        Console.WriteLine($"Added customer ship to 1: #{customer.CustomerCode} successfully!");
                                        //customerRow.ShipToNum = "";
                                        //customerRow.RowMod = "U";
                                        //shipToRow.ShipToNum = "";
                                        //shipToRow.RowMod = "U";
                                        //customerClient.Update(ref customerTableset);
                                        //Console.WriteLine($"Updated default ship to: #{customer.CustomerCode} successfully!");

                                        var customerShipTo = db.CUSTOMER_SHIPTO.FirstOrDefault(cst => cst.CustomerCode == customer.CustomerCode);
                                        if (customerShipTo != null)
                                        {
                                            customerClient.GetNewShipTo(ref customerTableset, custNum);
                                            var shipToRow2 = customerTableset.ShipTo.FirstOrDefault(s => s.RowMod == "A");
                                            MapToShipToRow(shipToRow2, customerShipTo);
                                            //customerRow.ShipToNum = shipToRow2.ShipToNum;
                                            //customerRow.RowMod = "U";
                                            customerClient.Update(ref customerTableset);
                                            //customerShipTo.DMSFlag = "S";
                                            Console.WriteLine($"Added customer ship to 2: #{customer.CustomerCode} successfully!");
                                        }
                                    }
                                    //customer.DMSFlag = "S";
                                    Console.WriteLine($"Added customer: #{customer.CustomerCode} successfully!");
                                }
                            }
                            catch (Exception e)
                            {
                                //customer.DMSFlag = "F";
                                customer.SystemLog = $"Added customer: #{customer.CustomerCode} failed! - {e.Message}";
                                Console.WriteLine($"Added customer: #{customer.CustomerCode} failed! - {e.Message}");
                                Console.WriteLine(e.GetBaseException().Message);
                                continue;
                            }
                        }

                        //foreach(var customer in updatedCustomers)
                        //{
                        //    try
                        //    {
                        //        string siteID, siteName, workstationID, workstationDescription, employeeID, countryGroupCode, countryCode, tenantID, companyName, systemCode;

                        //        var currentCompany = sessionModClient.GetCurrentValues(out companyName, out siteID, out siteName, out employeeID, out workstationID, out workstationDescription, out systemCode, out countryGroupCode, out countryCode, out tenantID);

                        //        if (currentCompany != customer.CompanyCode)
                        //        {
                        //            sessionModClient.SetCompany(customer.CompanyCode, out siteID, out siteName, out workstationID, out workstationDescription, out employeeID, out countryGroupCode, out countryCode, out tenantID);
                        //        }
                        //        CustomerTableset customerTableset = customerClient.GetByCustID(customer.CustomerCode, true);
                        //        var customerRow = customerTableset.Customer.FirstOrDefault();
                        //        if (customerRow != null)
                        //        {
                        //            customerRow.RowMod = "U";
                        //            MapToCustomerRow(customerRow, customer);
                        //            customerClient.Update(ref customerTableset);
                        //            customer.DMSFlag = "S";
                        //            Console.WriteLine($"Updated customer: #{customer.CustomerCode} successfully!");
                        //        }
                        //    }
                        //    catch (Exception e)
                        //    {
                        //        //customer.DMSFlag = "F";
                        //        Console.WriteLine($"Updated customer: #{customer.CustomerCode} failed! - {e.Message}");
                        //        Console.WriteLine(e.GetBaseException().Message);
                        //        continue;
                        //    }
                        //}

                        await db.SaveChangesAsync();
                    }

                    sessionModClient.Logout();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.GetBaseException().Message);
            }
        }
Beispiel #4
0
 public async Task SyncParts()
 {
     log.Information("Syncing Parts...");
     Console.WriteLine("Syncing Parts...");
     try
     {
         using (var erpdb = new ERPAPPTRAINEntities())
         {
             using (var db = new EpicorIntergrationEntities())
             {
                 var sysRevID    = db.PRODUCTs.Max(p => p.SysRevID);
                 var ud_SysRevID = db.PRODUCTs.Max(p => p.UD_SysRevID);
                 var parts       = erpdb.sptyx_DMSProduct(sysRevID, ud_SysRevID).ToList();
                 foreach (var part in parts)
                 {
                     var product = db.PRODUCTs.FirstOrDefault(p => p.ItemCode == part.ItemCode && p.Company == part.Company);
                     if (product == null)
                     {
                         try
                         {
                             product         = Mapper.Map <PRODUCT>(part);
                             product.DMSFlag = "N";
                             db.PRODUCTs.Add(product);
                             //await db.SaveChangesAsync();
                             Console.WriteLine($"Added product: #{part.ItemCode}");
                         }
                         catch (Exception e)
                         {
                             log.Error($"Failed adding product: #{part.ItemCode} - {e.GetBaseException().Message}", e.GetBaseException());
                             Console.WriteLine($"Failed adding product: #{part.ItemCode}");
                             Console.WriteLine(e.GetBaseException().Message);
                             continue;
                         }
                     }
                     else
                     {
                         try
                         {
                             Mapper.Map(part, product);
                             product.DMSFlag = "U";
                             db.PRODUCTs.Attach(product);
                             db.Entry(product).State = System.Data.Entity.EntityState.Modified;
                             //await db.SaveChangesAsync();
                             Console.WriteLine($"Updated product: #{part.ItemCode}");
                         }
                         catch (Exception e)
                         {
                             log.Error($"Failed updating product: #{part.ItemCode} - {e.GetBaseException().Message}", e.GetBaseException());
                             Console.WriteLine($"Failed updating product: #{part.ItemCode}");
                             Console.WriteLine(e.GetBaseException().Message);
                             continue;
                         }
                     }
                 }
                 await db.SaveChangesAsync();
             }
         }
     }
     catch (Exception e)
     {
         log.Error($"System error: {e.GetBaseException().Message}", e.GetBaseException());
         Console.WriteLine(e.GetBaseException().Message);
     }
 }
        public async Task SyncPOs()
        {
            log.Information("Syncing POs...");
            try
            {
                using (var db = new EpicorIntergrationEntities())
                {
                    //Header
                    var addedPOHeaders   = db.PO_HEADER.Where(c => c.DMSFlag == "N");
                    var updatedPOHeaders = db.PO_HEADER.Where(c => c.DMSFlag == "U");
                    if (addedPOHeaders.Any() || updatedPOHeaders.Any())
                    {
                        foreach (var poHeader in addedPOHeaders)
                        {
                            try
                            {
                                POTableset poTableset = new POTableset();
                                poClient.GetNewPOHeader(ref poTableset);
                                var poHeaderRow = poTableset.POHeader.Where(p => p.RowMod == "A").FirstOrDefault();
                                if (poHeaderRow != null)
                                {
                                    MapToHeaderRow(poHeaderRow, poHeader);
                                    poClient.Update(ref poTableset);
                                    poHeader.PONum   = poTableset.POHeader[0].PONum;
                                    poHeader.DMSFlag = "S";
                                    Console.WriteLine($"Added poHeader: #{poHeader.PONum} successfully!");

                                    //Update PONum of Details
                                    var poDetails = db.PO_DETAIL.Where(c => c.HeaderId == poHeader.Id);
                                    foreach (var poDetail in poDetails)
                                    {
                                        poDetail.PONum = poHeader.PONum;
                                    }
                                }
                            }
                            catch (Exception e)
                            {
                                poHeader.DMSFlag = "F";
                                Console.WriteLine($"Added poHeader: #{poHeader.PONum} failed! - {e.Message}");
                                Console.WriteLine(e.GetBaseException().Message);
                                continue;
                            }
                        }

                        foreach (var poHeader in updatedPOHeaders)
                        {
                            try
                            {
                                POTableset poTableset  = poClient.GetByID(poHeader.PONum);
                                var        poHeaderRow = poTableset.POHeader.FirstOrDefault();
                                if (poHeaderRow != null)
                                {
                                    poHeaderRow.RowMod = "U";
                                    MapToHeaderRow(poHeaderRow, poHeader);
                                    poClient.Update(ref poTableset);
                                    poHeader.DMSFlag = "S";
                                    Console.WriteLine($"Updated poHeader: #{poHeader.PONum} successfully!");
                                }
                            }
                            catch (Exception e)
                            {
                                poHeader.DMSFlag = "F";
                                Console.WriteLine($"Updated poHeader: #{poHeader.PONum} failed! - {e.Message}");
                                Console.WriteLine(e.GetBaseException().Message);
                                continue;
                            }
                        }

                        await db.SaveChangesAsync();
                    }

                    //Detail
                    var addedPODetails   = db.PO_DETAIL.Where(c => c.DMSFlag == "N");
                    var updatedPODetails = db.PO_DETAIL.Where(c => c.DMSFlag == "U");
                    if (addedPODetails.Any() || updatedPODetails.Any())
                    {
                        foreach (var poDetail in addedPODetails)
                        {
                            try
                            {
                                POTableset poTableset = new POTableset();
                                poClient.GetNewPODetail(ref poTableset, poDetail.PONum);
                                var poDetailRow = poTableset.PODetail.Where(p => p.RowMod == "A").FirstOrDefault();
                                if (poDetailRow != null)
                                {
                                    MapToDetailRow(poDetailRow, poDetail);
                                    poClient.Update(ref poTableset);
                                    poDetail.DMSFlag = "S";
                                    Console.WriteLine($"Added poDetail: #{poDetail.PONum}/{poDetail.POLine} successfully!");
                                }
                            }
                            catch (Exception e)
                            {
                                poDetail.DMSFlag = "F";
                                Console.WriteLine($"Added poDetail: #{poDetail.PONum}/{poDetail.POLine} failed! - {e.Message}");
                                Console.WriteLine(e.GetBaseException().Message);
                                continue;
                            }
                        }

                        foreach (var poDetail in updatedPODetails)
                        {
                            try
                            {
                                POTableset poTableset  = poClient.GetByID(poDetail.PONum);
                                var        poDetailRow = poTableset.PODetail.FirstOrDefault(p => p.POLine == poDetail.POLine);
                                if (poDetailRow != null)
                                {
                                    poDetailRow.RowMod = "U";
                                    MapToDetailRow(poDetailRow, poDetail);
                                    poClient.Update(ref poTableset);
                                    poDetail.DMSFlag = "S";
                                    Console.WriteLine($"Updated poDetail: #{poDetail.PONum}/{poDetail.POLine} successfully!");
                                }
                            }
                            catch (Exception e)
                            {
                                poDetail.DMSFlag = "F";
                                Console.WriteLine($"Updated poDetail: #{poDetail.PONum}/{poDetail.POLine} failed! - {e.Message}");
                                Console.WriteLine(e.GetBaseException().Message);
                                continue;
                            }
                        }

                        await db.SaveChangesAsync();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.GetBaseException().Message);
            }
        }
Beispiel #6
0
 public async Task SyncPrices()
 {
     log.Information("Syncing Prices...");
     Console.WriteLine("Syncing Prices...");
     try
     {
         //var rs = await priceClient.GetRowsAsync(new Epicor.PriceLstPartsSvc.GetRowsRequest());
         //var result = rs.GetRowsResult;
         //var priceLstParts = result.PriceLstParts.ToArray();
         using (var erpdb = new ERPAPPTRAINEntities())
         {
             var priceLstParts = erpdb.sptyx_DMSPriceList().ToList();
             var totalRow      = priceLstParts.Count();
             using (var db = new EpicorIntergrationEntities())
             {
                 int runningRow = 0;
                 foreach (var priceLstPart in priceLstParts)
                 {
                     runningRow++;
                     var price = db.PRICE_LIST.FirstOrDefault(p => p.Company == priceLstPart.Company && p.PriceListNum == priceLstPart.PriceListNum && p.Partnum == priceLstPart.PartNum);
                     if (price == null)
                     {
                         try
                         {
                             price         = Mapper.Map <PRICE_LIST>(priceLstPart);
                             price.DMSFlag = "N";
                             db.PRICE_LIST.Add(price);
                             //await db.SaveChangesAsync();
                             Console.WriteLine($"[{runningRow}/{totalRow}]Added price: #{priceLstPart.Company}/{priceLstPart.PriceListNum}/{priceLstPart.PartNum}");
                         }
                         catch (Exception e)
                         {
                             log.Error($"Failed adding price: #{priceLstPart.Company}/{priceLstPart.PriceListNum}/{priceLstPart.PartNum} - {e.GetBaseException().Message}", e.GetBaseException());
                             Console.WriteLine($"Failed adding price: #{priceLstPart.Company}/{priceLstPart.PriceListNum}/{priceLstPart.PartNum}");
                             Console.WriteLine(e.GetBaseException().Message);
                             continue;
                         }
                     }
                     else
                     {
                         try
                         {
                             Mapper.Map(priceLstPart, price);
                             price.DMSFlag = "U";
                             db.PRICE_LIST.Attach(price);
                             db.Entry(price).State = System.Data.Entity.EntityState.Modified;
                             //await db.SaveChangesAsync();
                             Console.WriteLine($"[{runningRow}/{totalRow}]Updated price: #{priceLstPart.Company}/{priceLstPart.PriceListNum}/{priceLstPart.PartNum}");
                         }
                         catch (Exception e)
                         {
                             log.Error($"Failed updating price: #{priceLstPart.Company}/{priceLstPart.PriceListNum}/{priceLstPart.PartNum} - {e.GetBaseException().Message}", e.GetBaseException());
                             Console.WriteLine($"Failed updating price: #{priceLstPart.PriceListNum}");
                             Console.WriteLine(e.GetBaseException().Message);
                             continue;
                         }
                     }
                 }
                 await db.SaveChangesAsync();
             }
         }
     }
     catch (Exception e)
     {
         log.Error($"System error: {e.GetBaseException().Message}", e.GetBaseException());
         Console.WriteLine(e.GetBaseException().Message);
     }
 }
Beispiel #7
0
        public async Task SyncSOs()
        {
            log.Information("Syncing SOs...");
            Console.WriteLine($"Syncing SOs...");
            try
            {
                using (var db = new EpicorIntergrationEntities())
                {
                    //Header
                    var addedSOHeaders = db.SO_HEADER.Where(c => c.DMSFlag == "N" /*c.DMSFlag == "N" || c.DMSFlag == "U"*/).OrderBy(h => h.CompanyCode);
                    if (addedSOHeaders.Any())
                    {
                        foreach (var soHeader in addedSOHeaders)
                        {
                            try
                            {
                                string siteID, siteName, workstationID, workstationDescription, employeeID, countryGroupCode, countryCode, tenantID, companyName, systemCode;

                                var currentCompany = sessionModClient.GetCurrentValues(out companyName, out siteID, out siteName, out employeeID, out workstationID, out workstationDescription, out systemCode, out countryGroupCode, out countryCode, out tenantID);

                                if (currentCompany != soHeader.CompanyCode)
                                {
                                    sessionModClient.SetCompany(soHeader.CompanyCode, out siteID, out siteName, out workstationID, out workstationDescription, out employeeID, out countryGroupCode, out countryCode, out tenantID);
                                }

                                //company = sessionModClient.GetCurrentValues(out companyName, out siteID, out siteName, out employeeID, out workstationID, out workstationDescription, out systemCode, out countryGroupCode, out countryCode, out tenantID);
                                SalesOrderTableset soTableset = new SalesOrderTableset();
                                soClient.GetNewOrderHed(ref soTableset);
                                var soHeaderRow = soTableset.OrderHed.Where(p => p.RowMod == "A").FirstOrDefault();
                                if (soHeaderRow != null)
                                {
                                    MapToHeaderRow(soHeaderRow, soHeader);
                                    soClient.Update(ref soTableset);
                                    var orderNum = soTableset.OrderHed[0].OrderNum;
                                    soHeader.Ordernum            = orderNum;
                                    soHeader.LastUpdatedDateTime = DateTime.Now;
                                    soHeader.DMSFlag             = "S";
                                    Console.WriteLine($"Added soHeader: [{soHeader.CompanyCode}]#{orderNum} successfully!");

                                    soTableset.OrderHed[0].ReadyToCalc = false;
                                    soTableset.OrderHed[0].RowMod      = "U";
                                    soClient.Update(ref soTableset);

                                    //Details
                                    var soDetails = db.SO_DETAIL.Where(c => c.DocNum == soHeader.DocNum && c.DMSFlag == "N" && c.ProductCode != "DISCOUNT" /* c.DMSFlag == "N" || c.DMSFlag == "U"*/).ToList().OrderBy(c => int.Parse(c.LineNum));
                                    foreach (var soDetail in soDetails)
                                    {
                                        try
                                        {
                                            soClient.GetNewOrderDtl(ref soTableset, orderNum);
                                            var soDetailRow = soTableset.OrderDtl.Where(p => p.RowMod == "A").FirstOrDefault();
                                            if (soDetailRow != null)
                                            {
                                                MapToDetailRow(soDetailRow, soDetail);
                                                soClient.Update(ref soTableset);
                                                soDetail.CreatedBy = soTableset.OrderDtl.Max(d => d.OrderLine).ToString();
                                                soDetail.DMSFlag   = "S";
                                                Console.WriteLine($"Added soDetail: [{soHeader.CompanyCode}]#{orderNum}/{soDetail.LineNum} successfully!");
                                            }
                                        }
                                        catch (Exception e)
                                        {
                                            soDetail.DMSFlag   = "F";
                                            soDetail.SystemLog = $"Added soDetail: [{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.GetBaseException().Message}";
                                            log.Error($"Added soDetail: [{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.GetBaseException().Message}", e.GetBaseException());
                                            Console.WriteLine($"Added soDetail: [{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.Message}");
                                            Console.WriteLine(e.GetBaseException().Message);
                                            continue;
                                        }
                                    }

                                    foreach (var soDetail in soDetails.Where(d => d.DMSFlag != "F"))
                                    {
                                        try
                                        {
                                            var lineNum = int.Parse(soDetail.CreatedBy);
                                            soClient.GetNewOrderRelTax(ref soTableset, orderNum, lineNum, 1, soDetail.TaxCode, soDetail.RateCode);
                                            soClient.ChangeManualTaxCalc(orderNum, lineNum, 1, soDetail.TaxCode, soDetail.RateCode, ref soTableset);
                                            Console.WriteLine($"Calculate tax soDetail: [{soHeader.CompanyCode}]#{orderNum}/{soDetail.LineNum} successfully!");
                                        }
                                        catch (Exception e)
                                        {
                                            soDetail.DMSFlag   = "F";
                                            soDetail.SystemLog = $"Calculate tax soDetail: [{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.GetBaseException().Message}";
                                            log.Error($"Calculate tax soDetail: [{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.GetBaseException().Message}", e.GetBaseException());
                                            Console.WriteLine($"Calculate tax soDetail: [{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.Message}");
                                            Console.WriteLine(e.GetBaseException().Message);
                                            continue;
                                        }
                                    }
                                    soClient.Update(ref soTableset);

                                    foreach (var soDetail in soDetails.Where(d => d.VATGroup != null && d.DMSFlag != "F"))
                                    {
                                        try
                                        {
                                            var lineNum     = int.Parse(soDetail.CreatedBy);
                                            var soDetailRow = soTableset.OrderDtl.FirstOrDefault(d => d.OrderLine == lineNum);
                                            soDetailRow.TaxCatID = soDetail.VATGroup;
                                            soDetailRow.RowMod   = "U";
                                            Console.WriteLine($"Updated VATGroup soDetail: [{soHeader.CompanyCode}]#{orderNum}/{soDetail.LineNum} successfully!");
                                        }
                                        catch (Exception e)
                                        {
                                            soDetail.DMSFlag   = "F";
                                            soDetail.SystemLog = $"Updated VATGroup soDetail: [{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.GetBaseException().Message}";
                                            log.Error($"Updated VATGroup soDetail:[{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.GetBaseException().Message}", e.GetBaseException());
                                            Console.WriteLine($"Updated VATGroup soDetail: [{soHeader.CompanyCode}]#{soDetail.DocNum}/{soDetail.LineNum} failed! - {e.Message}");
                                            Console.WriteLine(e.GetBaseException().Message);
                                            continue;
                                        }
                                    }

                                    soTableset.OrderHed[0].ReadyToCalc = true;
                                    soTableset.OrderHed[0].RowMod      = "U";
                                    soClient.Update(ref soTableset);
                                }
                            }
                            catch (Exception e)
                            {
                                soHeader.DMSFlag   = "F";
                                soHeader.SystemLog = $"Added soHeader: [{soHeader.CompanyCode}]#{soHeader.DocNum} failed! - {e.GetBaseException().Message}";
                                log.Error($"Added soHeader: [{soHeader.CompanyCode}]#{soHeader.DocNum} failed! - {e.GetBaseException().Message}", e.GetBaseException());
                                Console.WriteLine($"Added soHeader: [{soHeader.CompanyCode}]#{soHeader.DocNum} failed! - {e.Message}");
                                Console.WriteLine(e.GetBaseException().Message);
                                continue;
                            }
                        }

                        await db.SaveChangesAsync();
                    }

                    sessionModClient.Logout();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.GetBaseException().Message);
            }
        }
Beispiel #8
0
        public async Task SyncCustInfos()
        {
            log.Information("Syncing CustInfos...");
            try
            {
                using (var erpdb = new ERPAPPTRAINEntities())
                {
                    var custInfos = erpdb.sptyx_DMSCustInfo().ToList();
                    var totalRow  = custInfos.Count();
                    using (var db = new EpicorIntergrationEntities())
                    {
                        int runningRow = 0;
                        foreach (var custInfo in custInfos)
                        {
                            runningRow++;
                            var cod = db.CUSTOMER_INFO.FirstOrDefault(p => p.Custnum == custInfo.Custnum && p.Company == custInfo.Company);
                            if (cod == null)
                            {
                                try
                                {
                                    cod         = Mapper.Map <CUSTOMER_INFO>(custInfo);
                                    cod.DMSFlag = "N";
                                    db.CUSTOMER_INFO.Add(cod);
                                    //await db.SaveChangesAsync();
                                    Console.WriteLine($"[{runningRow}/{totalRow}]Added Cust Info: #{custInfo.Company}/{custInfo.Custnum}");
                                }
                                catch (Exception e)
                                {
                                    log.Error($"Failed adding Cust Info: #{custInfo.Company}/{custInfo.Custnum}", e.GetBaseException());
                                    Console.WriteLine($"Failed adding Cust Info: #{custInfo.Custnum}");
                                    Console.WriteLine(e.GetBaseException().Message);
                                    continue;
                                }
                            }
                            else
                            {
                                try
                                {
                                    Mapper.Map(custInfo, cod);
                                    cod.DMSFlag = "U";
                                    db.CUSTOMER_INFO.Attach(cod);
                                    db.Entry(cod).State = System.Data.Entity.EntityState.Modified;
                                    //await db.SaveChangesAsync();
                                    Console.WriteLine($"[{runningRow}/{totalRow}]Updated Cust Info: #{custInfo.Company}/{custInfo.Custnum}");
                                }
                                catch (Exception e)
                                {
                                    log.Error($"Failed updating Cust Info: #{custInfo.Company}/{custInfo.Custnum}", e.GetBaseException());
                                    Console.WriteLine($"Failed updating Cust Info: #{custInfo.Company}/{custInfo.Custnum}");
                                    Console.WriteLine(e.GetBaseException().Message);
                                    continue;
                                }
                            }
                        }

                        await db.SaveChangesAsync();
                    }
                }
            }
            catch (Exception e)
            {
                log.Error($"System error: {e.GetBaseException().Message}", e.GetBaseException());
                Console.WriteLine(e.GetBaseException().Message);
            }
        }