예제 #1
0
 /**
  *  Close Document.
  *  Cancel not delivered Qunatities
  *  @return true if success
  */
 public bool CloseIt()
 {
     try
     {
         log.Info("closeIt - " + ToString());
         //	Close Not delivered Qty
         MRequisitionLine[] lines      = GetLines();
         Decimal            totalLines = Env.ZERO;
         for (int i = 0; i < lines.Length; i++)
         {
             MRequisitionLine line     = lines[i];
             Decimal          finalQty = line.GetQty();
             if (line.GetC_OrderLine_ID() == 0)
             {
                 finalQty = Env.ZERO;
             }
             else
             {
                 MOrderLine ol = new MOrderLine(GetCtx(), line.GetC_OrderLine_ID(), Get_TrxName());
                 finalQty = ol.GetQtyOrdered();
             }
             Tuple <String, String, String> mInfo = null;
             if (Env.HasModulePrefix("DTD001_", out mInfo))
             {
                 int quant = Util.GetValueOfInt(line.GetQty() - line.GetDTD001_DeliveredQty());
                 //Update storage requisition reserved qty
                 if (Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(AD_MODULEINFO_ID) FROM AD_MODULEINFO WHERE PREFIX='VA203_'", null, null)) > 0)
                 {
                     if (GetDocAction() != "VO" && GetDocStatus() != "DR")
                     {
                         if (quant > 0)
                         {
                             int loc_id = GetLocation(GetM_Warehouse_ID());
                             storage = MStorage.Get(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), null);
                             if (storage == null)
                             {
                                 storage = MStorage.GetCreate(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), null);
                             }
                             storage.SetDTD001_QtyReserved((Decimal.Subtract(storage.GetDTD001_QtyReserved(), (Decimal)quant)));
                             storage.Save();
                         }
                     }
                 }
                 else if (GetDocAction() != "VO" && GetDocStatus() != "DR")
                 {
                     if (quant > 0)
                     {
                         int loc_id = GetLocation(GetM_Warehouse_ID());
                         storage = MStorage.Get(GetCtx(), loc_id, line.GetM_Product_ID(), 0, null);
                         if (storage == null)
                         {
                             storage = MStorage.GetCreate(GetCtx(), loc_id, line.GetM_Product_ID(), 0, null);
                         }
                         storage.SetDTD001_QtyReserved((Decimal.Subtract(storage.GetDTD001_QtyReserved(), (Decimal)quant)));
                         storage.Save();
                     }
                 }
             }
             //	final qty is not line qty
             if (finalQty.CompareTo(line.GetQty()) != 0)
             {
                 String description = line.GetDescription();
                 if (description == null)
                 {
                     description = "";
                 }
                 description += " [" + line.GetQty() + "]";
                 line.SetDescription(description);
                 // Amit 9-feb-2015
                 // line.SetQty(finalQty);
                 //Amit
                 line.SetLineNetAmt();
                 line.Save();
             }
             //get Grand Total or SubTotal
             totalLines = Decimal.Add(totalLines, line.GetLineNetAmt());
         }
         if (totalLines.CompareTo(GetTotalLines()) != 0)
         {
             SetTotalLines(totalLines);
             Save();
         }
     }
     catch (Exception ex)
     {
         // MessageBox.Show("MRequisition--CloseIt");
         log.Severe(ex.ToString());
     }
     return(true);
 }