private void LogSalesOrder(SalesOrderDocument document) { var url = $"{Constants.ServerUrl}/api/resource/Sage 50 Export Log"; var resource = new Resource(url); resource.LogSalesOrder(document); }
private void AddSalesRep(SalesOrder salesOrder, SalesOrderDocument document) { if (document.SalesRep == null) { return; } var salesRepRef = GetEmployeeEntityReference(document.SalesRep); if (salesRepRef == null) { Logger.Debug("Employee {@name} was not found in Sage.", document.SalesRep); throw new InvalidOperationException("Employee should not be null in sales order"); } salesOrder.SalesRepresentativeReference = (EntityReference <Employee>)salesRepRef; }
public IRestResponse LogSalesOrder(SalesOrderDocument document) { var log = new Log { document_name = document.Name, export_date = DateTime.Now.ToString("yyyy-MM-dd"), document_date = document.TransactionDate.ToString("yyyy-MM-dd"), document_type = "Sales Order" }; var request = new RestRequest(Method.POST); request.AddJsonBody(log); var response = _restClient.Execute(request); return(response); }
private SalesOrder CreateNewSalesOrder(SalesOrderDocument document) { var customerDocument = GetCustomerFromErpNext(document.CustomerName, Logger); var salesOrder = Company.Factories.SalesOrderFactory.Create(); var customerEntityReference = GetCustomerEntityReference(customerDocument?.OldCustomerId); if (customerEntityReference == null) { Logger.Debug("Customer {@name} in {@Document} was not found in Sage.", document.Customer, document.Name); salesOrder = null; SetNext(new CreateCustomerHandler(Company, Logger)); Logger.Debug("Customer {@name} has been queued for creation in Sage", document.Customer); } else if (salesOrder != null) { try { salesOrder.CustomerReference = customerEntityReference; salesOrder.CustomerPurchaseOrderNumber = document.PoNo; salesOrder.CustomerNote = document.NotesOrSpecialInstructions; salesOrder.Date = document.TransactionDate; salesOrder.DiscountAmount = document.DiscountAmount; salesOrder.DiscountDate = document.TransactionDate; salesOrder.ReferenceNumber = document.Name; salesOrder.ShipByDate = document.DeliveryDate < document.TransactionDate ? document.TransactionDate : document.DeliveryDate; if (document.DeliveryDate <= document.TransactionDate) { Logger.Information("{@Name} has delivery date has been set to transaction date because delivery date is earlier than transaction date", document.Name); } salesOrder.ShipVia = document.ShippingMethod; salesOrder.TermsDescription = document.PaymentTermsTemplate; salesOrder.CustomerPurchaseOrderNumber = document.PoNo; AddSalesRep(salesOrder, document); AddShipAddress(salesOrder); foreach (var line in document.Items) { AddLine(salesOrder, line); } salesOrder.Save(); Logger.Information("Sales Order - {0} was saved successfully", document.Name); } catch (Sage.Peachtree.API.Exceptions.RecordInUseException) { // abort. The unsaved data will eventually be re-queued salesOrder = null; Logger.Debug("Record is in use. {@Name} will be sent back to the queue", document.Name); } catch (ArgumentException e) { salesOrder = null; Logger.Debug("There was a problem with creating {@Name}. It will be sent back to the queue", document.Name); Logger.Debug("There error is {@E}", e.Message); } catch (Sage.Peachtree.API.Exceptions.ValidationException e) { Logger.Debug("Validation failed."); Logger.Debug(e.Message); if (e.ProblemList.OfType <DuplicateValueProblem>().Any(item => item.PropertyName == "ReferenceNumber")) { Logger.Debug("{@Name} is already in Sage so will notify ERPNext", document.Name); } else { Logger.Debug("{@Name} will be sent back to the queue", document.Name); salesOrder = null; } } catch (Exception e) { salesOrder = null; Logger.Debug(e, e.Message); Logger.Debug("{@E}", e); } } return(salesOrder); }