Pārlūkot izejas kodu

Invoices now properly calculate Due Dates
MYOB now sends Due Dates for both Invoices and Bills

frankvandenbos 10 mēneši atpakaļ
vecāks
revīzija
eed09983e7

+ 1 - 1
prs.classes/Entities/Invoice/Invoice.cs

@@ -111,7 +111,7 @@ namespace Comal.Classes
         
         [EditorSequence(14)]
         [DateEditor(Visible = Visible.Default, TodayVisible = true)]
-        public DateTime DueDate { get; set; }
+        public DateTime DueDate { get; set; } = DateTime.Today;
         
         [EditorSequence(15)]
         public SalesGLCodeLink SellGL { get; set; }

+ 1 - 0
prs.desktop/Panels/Invoices/InvoiceGrid.cs

@@ -102,6 +102,7 @@ namespace PRSDesktop
                     var invoice = new Invoice();
                     invoice.Type = InvoiceType.ProgressClaim;
                     invoice.Description = $"Progress claim for {DateTime.Today:MMM yyyy}";
+                    //invoice.Date = DateTime.Today;
                     invoice.JobLink.CopyFrom(Master);
                     if (Master.Account.ID != Guid.Empty) 
                         invoice.CustomerLink.CopyFrom(Master.Account);

+ 8 - 0
prs.desktop/Panels/Jobs/ProjectsGrid.cs

@@ -53,6 +53,10 @@ public class ProjectsGrid : DynamicDataGrid<Job>
         HiddenColumns.Add(x => x.Customer.ID);
         HiddenColumns.Add(x => x.Customer.Code);
         HiddenColumns.Add(x => x.Customer.Name);
+        HiddenColumns.Add(x => x.Customer.Terms.ID);
+        HiddenColumns.Add(x => x.Customer.Terms.Code);
+        HiddenColumns.Add(x => x.Customer.Terms.Description);
+        HiddenColumns.Add(x => x.Customer.Terms.Calculation);
         HiddenColumns.Add(x => x.SiteAddress.Street);
         HiddenColumns.Add(x => x.SiteAddress.City);
         HiddenColumns.Add(x => x.SiteAddress.State);
@@ -60,6 +64,10 @@ public class ProjectsGrid : DynamicDataGrid<Job>
         HiddenColumns.Add(x => x.Account.ID);
         HiddenColumns.Add(x => x.Account.Code);
         HiddenColumns.Add(x => x.Account.Name);
+        HiddenColumns.Add(x => x.Account.Terms.ID);
+        HiddenColumns.Add(x => x.Account.Terms.Code);
+        HiddenColumns.Add(x => x.Account.Terms.Description);
+        HiddenColumns.Add(x => x.Account.Terms.Calculation);
         HiddenColumns.Add(x => x.Notes);
         HiddenColumns.Add(x => x.JobStatus.ID);
         HiddenColumns.Add(x => x.JobStatus.Active);

+ 6 - 0
prs.shared/Posters/MYOB/BillMYOBPoster.cs

@@ -11,6 +11,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using MYOB.AccountRight.SDK.Contracts.Version2;
 using MYOBBill = MYOB.AccountRight.SDK.Contracts.Version2.Purchase.ServiceBill;
 using MYOBBillLine = MYOB.AccountRight.SDK.Contracts.Version2.Purchase.ServiceBillLine;
 using MYOBTaxCode = MYOB.AccountRight.SDK.Contracts.Version2.GeneralLedger.TaxCode;
@@ -95,6 +96,7 @@ public class BillMYOBPoster : IMYOBPoster<Bill, BillMYOBPosterSettings>
             .Add(x => x.PostedReference)
             .Add(x => x.Number)
             .Add(x => x.AccountingDate)
+            .Add(x => x.PaymentDate)
             .Add(x => x.SupplierLink.ID)
             .Add(x => x.Description);
     }
@@ -163,6 +165,10 @@ public class BillMYOBPoster : IMYOBPoster<Bill, BillMYOBPosterSettings>
 
             // Probably configure which date.
             myobBill.Date = bill.AccountingDate;
+
+            myobBill.Terms ??= new();
+            myobBill.Terms.PaymentIsDue = TermsPaymentType.InAGivenNumberOfDays;
+            myobBill.Terms.BalanceDueDate = (bill.PaymentDate.Date - bill.BillDate.Date).Days + 1;
             myobBill.SupplierInvoiceNumber = bill.Number.Truncate(255);
 
             if(suppliers.TryGetValue(bill.SupplierLink.ID, out var supplier))

+ 7 - 0
prs.shared/Posters/MYOB/InvoiceMYOBPoster.cs

@@ -11,6 +11,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using MYOB.AccountRight.SDK.Contracts.Version2;
 using Invoice = Comal.Classes.Invoice;
 using InvoiceLine = Comal.Classes.InvoiceLine;
 using MYOBAccount = MYOB.AccountRight.SDK.Contracts.Version2.GeneralLedger.Account;
@@ -95,6 +96,7 @@ public class InvoiceMYOBPoster : IMYOBPoster<Invoice, InvoiceMYOBPosterSettings>
             .Add(x => x.PostedReference)
             .Add(x => x.Number)
             .Add(x => x.Date)
+            .Add(x => x.DueDate)
             .Add(x => x.CustomerLink.ID)
             .Add(x => x.Description);
     }
@@ -153,6 +155,11 @@ public class InvoiceMYOBPoster : IMYOBPoster<Invoice, InvoiceMYOBPosterSettings>
 
             myobInvoice.Number = invoice.Number.ToString().Truncate(13);
             myobInvoice.Date = invoice.Date;
+            
+            myobInvoice.Terms ??= new();
+            myobInvoice.Terms.PaymentIsDue = TermsPaymentType.InAGivenNumberOfDays;
+            myobInvoice.Terms.BalanceDueDate = (invoice.DueDate.Date - invoice.Date.Date).Days + 1;
+            
             // myobInvoice.CustomerPurchaseOrderNumber = 
 
             if(customers.TryGetValue(invoice.CustomerLink.ID, out var customer))