Переглянути джерело

Stock movement timberline update

Kenric Nugteren 1 рік тому
батько
коміт
8e047be262

+ 32 - 2
prs.shared/Posters/Timberline/StockMovementTimberlinePoster.cs

@@ -181,6 +181,9 @@ public class StockMovementTimberlineGL : IStockMovementTimberlineLine
 
 public class StockMovementTimberlineSettings : TimberlinePosterSettings<StockMovement>
 {
+    [TextBoxEditor]
+    public string StockTakeGL { get; set; }
+
     protected override string DefaultScript()
     {
         return @"
@@ -311,6 +314,7 @@ public class StockMovementTimberlinePoster : ITimberlinePoster<StockMovement, St
             line.Description = product.Name;
             line.Amount = movement.Value;
             line.CreditAccount = product.PurchaseGL.Code;
+            line.DebitAccount = product.SellGL.Code;
             return line;
         }
 
@@ -319,11 +323,22 @@ public class StockMovementTimberlinePoster : ITimberlinePoster<StockMovement, St
             var movements = new List<StockMovement>();
             foreach(var movement in transaction)
             {
-                if (movement.Type == StockMovementType.Issue || movement.Type == StockMovementType.Receive)
+                if (movement.Type == StockMovementType.Receive)
                 {
                     // Ignore these ones.
                     result.AddSuccess(movement, null);
                 }
+                else if(movement.Type == StockMovementType.Issue)
+                {
+                    if(movement.Job.ID == Guid.Empty)
+                    {
+                        movements.Add(movement);
+                    }
+                    else
+                    {
+                        result.AddSuccess(movement, null);
+                    }
+                }
                 else
                 {
                     // So we only care about transfers and stocktakes
@@ -335,12 +350,27 @@ public class StockMovementTimberlinePoster : ITimberlinePoster<StockMovement, St
             {
                 var mvt = movements[0];
 
-                if(mvt.Type == StockMovementType.StockTake)
+                if(mvt.Type == StockMovementType.Issue)
+                {
+                    var gl = new StockMovementTimberlineGL { };
+                    gl = ModifyLine(gl, mvt);
+                    gl.DebitAccount = Settings.StockTakeGL;
+                    if (ProcessGLLine(model, mvt, gl))
+                    {
+                        result.AddSuccess(mvt, gl);
+                    }
+                    else
+                    {
+                        result.AddFailed(mvt, "Failed by script.");
+                    }
+                }
+                else if(mvt.Type == StockMovementType.StockTake)
                 {
                     if(mvt.Job.ID == Guid.Empty)
                     {
                         var gl = new StockMovementTimberlineGL { };
                         gl = ModifyLine(gl, mvt);
+                        gl.DebitAccount = Settings.StockTakeGL;
                         if (ProcessGLLine(model, mvt, gl))
                         {
                             result.AddSuccess(mvt, gl);