public bool NewStockOut(string userID, double requisition, double warehouse) { bool ret = true; OracleDBObj obj = new OracleDBObj(); obj.CreateConnection(); obj.CreateTransaction(); try { RequisitionDAL reqDAL = new RequisitionDAL(); reqDAL.GetDataByLOID(requisition, obj.zTrans); RequisitionItemDAL reqItemDAL = new RequisitionItemDAL(); DataTable dt = reqItemDAL.GetDataByRequisition(requisition, obj.zTrans); DocTypeDAL docDAL = new DocTypeDAL(); docDAL.GetDataByRequisitionType(reqDAL.REQUISITIONTYPE, obj.zTrans); StockOutDAL _DAL = new StockOutDAL(); _DAL.OnDB = false; _DAL.ACTIVE = Constz.ActiveStatus.Active; _DAL.DOCTYPE = docDAL.LOID; _DAL.RECEIVER = (reqDAL.CUSTOMER != 0 ? reqDAL.CUSTOMER : reqDAL.WAREHOUSE); _DAL.REFLOID = reqDAL.LOID; _DAL.REFTABLE = reqDAL.TableName; _DAL.REQDATE = reqDAL.REQDATE; _DAL.SENDER = warehouse; _DAL.STATUS = Constz.Requisition.Status.Waiting.Code; _DAL.CTITLE = reqDAL.CTITLE; _DAL.CNAME = reqDAL.CNAME; _DAL.CLASTNAME = reqDAL.CLASTNAME; _DAL.CADDRESS = reqDAL.CADDRESS; _DAL.CFAX = reqDAL.CFAX; _DAL.CTEL = reqDAL.CTEL; ret = _DAL.InsertCurrentData(userID, obj.zTrans); if (!ret) { throw new ApplicationException(_DAL.ErrorMessage); } StockOutItemDAL _DALItem = new StockOutItemDAL(); foreach (DataRow dRow in dt.Rows) { StockFGDAL fgDAL = new StockFGDAL(); double qty = Convert.ToDouble(dRow["QTY"]); DataTable dtStock = fgDAL.GetProductStock(warehouse, Convert.ToDouble(dRow["PRODUCT"]), obj.zTrans); foreach (DataRow sRow in dtStock.Rows) { _DALItem.OnDB = false; _DALItem.LOTNO = sRow["LOTNO"].ToString(); _DALItem.PRODUCT = Convert.ToDouble(dRow["PRODUCT"]); if (qty >= Convert.ToDouble(sRow["QTY"])) _DALItem.QTY = Convert.ToDouble(sRow["QTY"]); else _DALItem.QTY = qty; _DALItem.REFLOID = Convert.ToDouble(dRow["LOID"]); _DALItem.REFTABLE = "REQUISITIONITEM"; _DALItem.STATUS = Constz.Requisition.Status.Waiting.Code; _DALItem.STOCKOUT = _DAL.LOID; _DALItem.UNIT = Convert.ToDouble(dRow["UNIT"]); _DALItem.ACTIVE = Constz.ActiveStatus.Active; _DALItem.PRICE = Convert.ToDouble(dRow["PRICE"]); double remain = _DALItem.GetRemainQTYStockFG(_DALItem.LOTNO, _DALItem.PRODUCT, obj.zTrans); _DALItem.REMAIN = remain; qty -= Convert.ToDouble(sRow["QTY"]); ret = _DALItem.InsertCurrentData(userID, obj.zTrans); if (!ret) { throw new ApplicationException(_DALItem.ErrorMessage); } if (qty <= 0) break; } } _LOID = _DAL.LOID; obj.zTrans.Commit(); obj.CloseConnection(); } catch (Exception ex) { obj.zTrans.Rollback(); obj.CloseConnection(); ret = false; _error = ex.Message; } return ret; }
private DataTable GetRequisitionItem(double requisition) { RequisitionItemDAL itemDAL = new RequisitionItemDAL(); return itemDAL.GetDataByRequisition(requisition, null); }