private void LogSalesOrder(SalesOrderDocument document) { var url = $"{Properties.Settings.Default.ServerAddress}/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 salesRep = GetSalesRepEntityReference(document.SalesRep); salesOrder.SalesRepresentativeReference = salesRep ?? throw new InvalidOperationException("No sales rep found for sales order"); }
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 static async Task UpsertDocumentTypeAsync(SalesOrderAggregate salesOrder) { SalesOrderDocument document = new SalesOrderDocument { Id = salesOrder.Id.ToString(), AccountNumber = salesOrder.AccountNumber, Freight = salesOrder.Freight, TimeToLive = salesOrder.TimeToLive, OrderDate = salesOrder.OrderDate, Items = salesOrder.Items, PurchaseOrderNumber = salesOrder.PurchaseOrderNumber, ShippedDate = salesOrder.ShippedDate, SubTotal = salesOrder.SubTotal, TaxAmount = salesOrder.TaxAmount, TotalDue = salesOrder.TotalDue }; Uri collectionUri = UriFactory.CreateDocumentCollectionUri(databaseName, collectionName); Console.WriteLine("\n1.1 - Creating documents"); var response = await _client.UpsertDocumentAsync(collectionUri, document); Console.WriteLine($"Creating document type request charge {response.RequestCharge}"); }
private static async Task UseDocumentExtensions(string colSelfLink) { //Create an object that extends Document var salesOrderDocument = new SalesOrderDocument { Id = "DOCO1", PurchaseOrderNumber = "PO180091783420", OrderDate = new DateTime(2013, 7, 17), AccountNumber = "10-4020-000510", SubTotal = 419.4589m, TaxAmt = 12.5838m, Freight = 472.3108m, TotalDue = 985.018m, Items = new[] { new SalesOrderDetail { OrderQty = 1, ProductId = 760, UnitPrice = 419.4589m, LineTotal = 419.4589m } } }; Document created = await client.CreateDocumentAsync(colSelfLink, salesOrderDocument); //Read document SalesOrderDocument readSalesOrderDocument = (SalesOrderDocument)(dynamic)(await client.ReadDocumentAsync(created.SelfLink)).Resource; //Update a property on the SalesOrderDocument readSalesOrderDocument.ShipDate = DateTime.UtcNow; //Persist the change to DocumentDB await client.ReplaceDocumentAsync(readSalesOrderDocument.SelfLink, readSalesOrderDocument); }
private SalesOrder CreateNewSalesOrder(SalesOrderDocument document) { var customerDocument = GetCustomerFromErpNext(document.CustomerName); var salesOrder = Company.Factories.SalesOrderFactory.Create(); EntityReference <Customer> customerEntityReference = null; if (customerDocument != null && customerDocument.OldCustomerId != null) { 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); }