public static Order SaveOrderToDB(int Status, int userID, int? orderID, int facilityID, int paymentType, int modeID, string remarks, string letterNumber, string contactPerson, DataView _dvOrderTable) { MyGeneration.dOOdads.TransactionMgr mgr = MyGeneration.dOOdads.TransactionMgr.ThreadTransactionMgr(); try { mgr.BeginTransaction(); BLL.Order or = new BLL.Order(); if (orderID == null) { or.AddNew(); or.RefNo = Order.GetNextOrderReference(); or.OrderTypeID = OrderType.CONSTANTS.STANDARD_ORDER; or.FiscalYearID = FiscalYear.Current.ID; } else { or.LoadByPrimaryKey(orderID.Value); } var oldOrderStatus = or.IsColumnNull("OrderStatusID") ? (int?)null : or.OrderStatusID; or.OrderStatusID = Status; or.RequisitionTypeID = RequisitionType.CONSTANTS.DEMAND; or.Remark = remarks; or.EurDate = or.Date = DateTimeHelper.ServerDateTime; //Both fields are assigned dates. or.RequestedBy = facilityID; or.FilledBy = userID; or.LetterNo = letterNumber; or.PaymentTypeID = paymentType; or.ContactPerson = contactPerson; or.FromStore = modeID; or.Save(); or.LogRequisitionStatus(or.ID, oldOrderStatus, Status, CurrentContext.UserId); //Log OrderStatus Change // this is a kind of initializing the data table. OrderDetail ord = new OrderDetail(); foreach (DataRowView r in _dvOrderTable) { int itemID = Convert.ToInt32(r["ItemID"]); int unitID = Convert.ToInt32(r["UnitID"]); ord.LoadByItemUnit(or.ID, itemID, unitID); if (ord.RowCount == 0) { ord.AddNew(); } ord.OrderID = or.ID; ord.ItemID = itemID; if (r["Pack"] != DBNull.Value) { ord.Pack = Convert.ToDecimal(r["Pack"]); } if (r["QtyPerPack"] != DBNull.Value) { ord.QtyPerPack = Convert.ToInt32(r["QtyPerPack"]); } if (r["StockOnHand"] != DBNull.Value) { ord.StockOnHand = Convert.ToDecimal(r["StockOnHand"]); } //if (r["ExpiredStock"] != DBNull.Value) //{ // ord.ExpiredStock = Convert.ToDecimal(r["ExpiredStock"]); //} //if (r["DamagedStock"] != DBNull.Value) //{ // ord.DamagedStock = Convert.ToDecimal(r["DamagedStock"]); //} ord.Quantity = Convert.ToDecimal(r["Quantity"]); ord.UnitID = unitID; //ord.StoreID = or.FromStore; ord.Save(); } //this.LogActivity("Save-Requisition", ord.ID); mgr.CommitTransaction(); return or; } catch (Exception exp) { mgr.RollbackTransaction(); throw; } //ResetOrder(); }
public static int SavePLITSApprovedOrderToDatabase(int Status, int userID, int? plitsOrderID, int facilityID, int paymentType, int modeID, string remarks, string letterNumber, string contactPerson, BLL.OrderDetail _PLITSOrderDetail) { int hcmisorderid; MyGeneration.dOOdads.TransactionMgr mgr = MyGeneration.dOOdads.TransactionMgr.ThreadTransactionMgr(); try { mgr.BeginTransaction(); BLL.Order or = new BLL.Order(); or.AddNew(); or.RefNo = Order.GetNextOrderReference(); or.OrderTypeID = OrderType.CONSTANTS.PLITS; or.HCTSReferenceID = plitsOrderID.Value; or.OrderStatusID = Status; or.RequisitionTypeID = RequisitionType.CONSTANTS.DEMAND; or.Remark = remarks; or.EurDate = or.Date = DateTimeHelper.ServerDateTime; //Both fields are assigned dates. var institution = new Institution(); institution.LoadBySN(facilityID); or.RequestedBy = institution.ID; or.FilledBy = userID; or.LetterNo = letterNumber; or.PaymentTypeID = paymentType; or.ContactPerson = contactPerson; or.FromStore = modeID; or.FiscalYearID = FiscalYear.Current.ID; or.Save(); or.LogRequisitionStatus(or.ID,null,Status, CurrentContext.UserId); //Log OrderStatus change _PLITSOrderDetail.Rewind(); while (!_PLITSOrderDetail.EOF) { _PLITSOrderDetail.OrderID = or.ID; _PLITSOrderDetail.MoveNext(); } _PLITSOrderDetail.Save(); hcmisorderid = or.ID; //this.LogActivity("Save-Requisition", ord.ID); mgr.CommitTransaction(); } catch (Exception exp) { mgr.RollbackTransaction(); return 0; throw (exp); } //ResetOrder(); return hcmisorderid; }
//~ This Method is Obsoleted ~// public static bool SaveBackOrderToDatabase(BLL.Order _order) { var _orderDetail = new OrderDetail(); _orderDetail.LoadAllByOrderID(_order.ID); MyGeneration.dOOdads.TransactionMgr mgr = MyGeneration.dOOdads.TransactionMgr.ThreadTransactionMgr(); try { mgr.BeginTransaction(); var or = new BLL.Order(); or.AddNew(); or.RefNo = Order.GetNextOrderReference(); or.SetColumn("OrderTypeID", _order.GetColumn("OrderTypeID")); or.SetColumn("HCTSReferenceID", _order.GetColumn("HCTSReferenceID")); or.OrderStatusID = OrderStatus.Constant.DRAFT_WISHLIST; or.RequisitionTypeID = RequisitionType.CONSTANTS.DEMAND; or.Remark = _order.ID.ToString(); //Store the Original ID here for the backorder. We need to have a standard way of marking backorders. or.EurDate = or.Date = DateTimeHelper.ServerDateTime; //Both fields are assigned dates. or.RequestedBy = _order.RequestedBy; or.FilledBy = _order.FilledBy; or.LetterNo = _order.LetterNo; or.PaymentTypeID = _order.PaymentTypeID; or.ContactPerson = _order.ContactPerson; or.FromStore = _order.FromStore; or.FiscalYearID = FiscalYear.Current.ID; or.OrderTypeID = _order.OrderTypeID == OrderType.CONSTANTS.PLITS ? _order.OrderTypeID : OrderType.CONSTANTS.BACK_ORDER; or.Save(); or.LogRequisitionStatus(or.ID,null,OrderStatus.Constant.DRAFT_WISHLIST,CurrentContext.UserId); _orderDetail.Rewind(); var orderDetail = new OrderDetail(); while (!_orderDetail.EOF) { if (_orderDetail.ApprovedQuantity >= _orderDetail.Quantity) { _orderDetail.MoveNext(); continue; //Backorder is only for those with approved quantity less than the requested quantity. } orderDetail.AddNew(); orderDetail.ItemID = _orderDetail.ItemID; orderDetail.OrderID = or.ID; orderDetail.Pack = (_orderDetail.Quantity - _orderDetail.ApprovedQuantity) / _orderDetail.QtyPerPack; orderDetail.QtyPerPack = _orderDetail.QtyPerPack; orderDetail.Quantity = orderDetail.Pack * orderDetail.QtyPerPack; orderDetail.SetColumn("HACTOrderDetailID", _orderDetail.GetColumn("HACTOrderDetailID")); orderDetail.UnitID = _orderDetail.UnitID; _orderDetail.MoveNext(); } orderDetail.Save(); mgr.CommitTransaction(); return true; } catch (Exception exp) { mgr.RollbackTransaction(); return false; } }