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); } }
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); } }
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); } }
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); } }
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); } }
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); } }