private void LogPurchaseOrder(PurchaseOrderDocument document)
        {
            var url      = $"{Properties.Settings.Default.ServerAddress}/api/resource/Sage 50 Export Log";
            var resource = new Resource(url);

            resource.LogPurchaseOrder(document);
        }
Ejemplo n.º 2
0
        public IRestResponse LogPurchaseOrder(PurchaseOrderDocument 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 = "Purchase Order"
            };
            var request = new RestRequest(Method.POST);

            request.AddJsonBody(log);
            var response = _restClient.Execute(request);

            return(response);
        }
        private PurchaseOrder CreateNewPurchaseOrder(PurchaseOrderDocument purchaseOrderDocument)
        {
            var supplierDocument        = GetSupplierFromErpNext(purchaseOrderDocument.Supplier);
            var supplierEntityReference = GetVendorEntityReference(supplierDocument?.VendorId);
            var purchaseOrder           = Company.Factories.PurchaseOrderFactory.Create();

            if (supplierEntityReference == null)
            {
                Logger.Debug("Supplier {@name} in {@Document} was not found in Sage.", purchaseOrderDocument.Supplier, purchaseOrderDocument.Name);
                purchaseOrder = null;
                SetNext(new CreateSupplierHandler(Company, Logger));
                Logger.Debug("Supplier {@name} has been queued for creation in Sage", purchaseOrderDocument.Supplier);
            }
            else if (purchaseOrder != null)
            {
                try
                {
                    purchaseOrder.Date            = purchaseOrderDocument.TransactionDate;
                    purchaseOrder.GoodThroughDate = purchaseOrderDocument.ScheduleDate;
                    purchaseOrder.ReferenceNumber = purchaseOrderDocument.Name;
                    // purchaseOrder.VendorReference = VendorReferences[purchaseOrderDocument.Supplier];
                    purchaseOrder.VendorReference  = supplierEntityReference;
                    purchaseOrder.TermsDescription = purchaseOrderDocument.PaymentTermsTemplate;
                    purchaseOrder.ShipVia          = purchaseOrderDocument.ShipMethod;

                    foreach (var line in purchaseOrderDocument.Items)
                    {
                        AddLine(purchaseOrder, line);
                    }

                    purchaseOrder.Save();
                    Logger.Information("Purchase Order - {PurchaseOrderDocument} saved successfully", purchaseOrderDocument.Name);
                }
                catch (KeyNotFoundException)
                {
                    purchaseOrder = null;
                    Logger.Debug("Vendor {@Name} in {@Document} was not found", purchaseOrderDocument.Supplier, purchaseOrderDocument.Name);
                    SetNext(new CreateSupplierHandler(Company, Logger));
                    Logger.Debug("Customer {@name} has been queued for creation in Sage", purchaseOrderDocument.Supplier);
                }
                catch (Sage.Peachtree.API.Exceptions.ValidationException e)
                {
                    Logger.Debug("Validation failed.");
                    Logger.Debug(e.Message);
                    Logger.Debug("{@Name} will be sent back to the queue", purchaseOrderDocument.Name);
                    purchaseOrder = null;
                }
                catch (Sage.Peachtree.API.Exceptions.RecordInUseException)
                {
                    purchaseOrder = null;
                    Logger.Debug("Record is in use. {@Name} will be sent back to the queue", purchaseOrderDocument.Name);
                }
                catch (Exception e)
                {
                    purchaseOrder = null;
                    Logger.Debug(e, e.Message);
                    Logger.Debug("{@E}", e);
                }
            }
            return(purchaseOrder);
        }