internal static PickListDetail GeneratePickListDetail(ReceivePallet receivePallet, int pickListId, decimal qtyInBU) { ReceiveDoc receiveDoc = new ReceiveDoc(); receiveDoc.LoadByPrimaryKey(receivePallet.ReceiveID); decimal pack = qtyInBU / Convert.ToDecimal(receiveDoc.QtyPerPack); PickListDetail pkDetail = new PickListDetail(); pkDetail.AddNew(); pkDetail.PickListID = pickListId; pkDetail.ItemID = receiveDoc.ItemID; PalletLocation palletLocation = new PalletLocation(); palletLocation.loadByPalletID(receivePallet.PalletID); int palletLocationId; try { palletLocationId = palletLocation.ID; } catch (Exception exp) { palletLocationId = receivePallet.PalletLocationID; palletLocation.LoadByPrimaryKey(palletLocationId); } pkDetail.PalletLocationID = palletLocationId; if (!receiveDoc.IsColumnNull("BatchNo")) { pkDetail.BatchNumber = receiveDoc.BatchNo; } if (!receiveDoc.IsColumnNull("ExpDate")) { pkDetail.ExpireDate = receiveDoc.ExpDate; } pkDetail.StoreID = receiveDoc.StoreID; pkDetail.UnitID = receiveDoc.UnitID; pkDetail.ReceiveDocID = receiveDoc.ID; if (!receiveDoc.IsColumnNull("Cost")) { pkDetail.Cost = Convert.ToDouble(pack) * Math.Round(receiveDoc.Cost, BLL.Settings.NoOfDigitsAfterTheDecimalPoint); pkDetail.UnitPrice = Math.Round(receiveDoc.Cost, BLL.Settings.NoOfDigitsAfterTheDecimalPoint); } pkDetail.Packs = pack; pkDetail.QtyPerPack = receiveDoc.QtyPerPack; pkDetail.QuantityInBU = qtyInBU; pkDetail.StoreID = receiveDoc.StoreID; pkDetail.ReceivePalletID = receivePallet.ID; pkDetail.ManufacturerID = receiveDoc.ManufacturerId; pkDetail.BoxLevel = 0; pkDetail.DeliveryNote = true; pkDetail.PhysicalStoreID = palletLocation.PhysicalStoreID; pkDetail.Save(); return(pkDetail); }
internal static int ItemReceived(int itemID, int storeId) { string query = string.Format("select sum(Quantity) as Quantity from ReceiveDoc rd where ItemID = {0} and StoreID = {1}", itemID, storeId); ReceiveDoc rd = new ReceiveDoc(); rd.LoadFromRawSql(query); if (rd.RowCount > 0 && !rd.IsColumnNull("Quantity") && rd.Quantity > 0) { return(1); } return(0); }
public void SetPriceForReceiveDocs() { ReceiveDoc receiveDoc = new ReceiveDoc(); receiveDoc.LoadbyItemUnitManufacturerMovingAverageID(ReceiptID.Value, ItemID, ItemUnitID, ManufacturerID, MovingAverageID); receiveDoc.Rewind(); while (!receiveDoc.EOF) { if (receiveDoc.IsColumnNull("PricePerPack") || !(receiveDoc.PricePerPack > 0)) { receiveDoc.PricePerPack = AverageCost; } if (receiveDoc.IsColumnNull("UnitCost") || !(receiveDoc.PricePerPack > 0)) { receiveDoc.UnitCost = Convert.ToDecimal(AverageCost); } receiveDoc.Cost = AverageCost; receiveDoc.Margin = Margin; receiveDoc.SellingPrice = SellingPrice; receiveDoc.MoveNext(); } receiveDoc.Save(); }
private void PrintReceiptConfirmation(string referenceNumber, int? reprintOfReceiptConfirmationPrintoutID) { var rc = new ReceiptConfirmationPrintout(); var srmPrintout = new HCMIS.Desktop.Reports.SRMPrintout(CurrentContext.LoggedInUserName); int ReceiptID = Convert.ToInt32(gridReceiveView.GetFocusedDataRow()["ReceiptID"]); var receiveDoc = new ReceiveDoc(); receiveDoc.LoadByReceiptID(ReceiptID); ReceiptConfirmationPrintout.GetGRNFNo(ReceiptID); srmPrintout.BranchName.Text = GeneralInfo.Current.HospitalName; rc.PrepareDataForPrintout(ReceiptID, CurrentContext.UserId, false, 3, null, reprintOfReceiptConfirmationPrintoutID,FiscalYear.Current); srmPrintout.DataSource = rc.DefaultView.ToTable(); var rUnit = new Institution(); var idoc = new IssueDoc(); if (!receiveDoc.IsColumnNull("ReturnedFromIssueDocID")) { idoc.LoadByPrimaryKey(receiveDoc.ReturnedFromIssueDocID); rUnit.LoadByPrimaryKey(idoc.ReceivingUnitID); } else { var po = new PO(); po.LoadByReceiptID(receiveDoc.ReceiptID); rUnit.LoadByPrimaryKey(int.Parse(po.RefNo)); } srmPrintout.xrFromValue.Text = rUnit.Name; srmPrintout.xrWoredaValue.Text = rUnit.WoredaText; srmPrintout.xrRegionValue.Text = rUnit.Region; srmPrintout.xrZoneValue.Text = rUnit.ZoneText; if (!receiveDoc.IsColumnNull("ReturnedFromIssueDocID")) { var stvLog = new BLL.Issue(); stvLog.LoadByPrimaryKey(idoc.STVID); srmPrintout.xrIssueDateValue.Text = idoc.Date.ToString("M/d/yyyy"); var activity = new Activity(); activity.LoadByPrimaryKey(idoc.StoreId); srmPrintout.xrAccountName.Text = activity.FullActivityName; var rct = new BLL.Receipt(); rct.LoadByPrimaryKey(ReceiptID); var rctInvoice = new ReceiptInvoice(); rctInvoice.LoadByPrimaryKey(rct.ReceiptInvoiceID); srmPrintout.xrSTVNoValue.Text = rctInvoice.STVOrInvoiceNo; } else { var activity = new Activity(); activity.LoadByPrimaryKey(receiveDoc.StoreID); srmPrintout.xrAccountName.Text = activity.FullActivityName; srmPrintout.xrSTVNoValue.Text = receiveDoc.RefNo; } var dtDate = new DateTimePickerEx(); dtDate.Value = receiveDoc.EurDate; srmPrintout.Date.Text = dtDate.Text; if (srmPrintout.PrintDialog() != DialogResult.OK) { throw new Exception("Print cancelled by user!"); } //Successfully printed //Release Product var GRV = new CostCalculator(); GRV.LoadGRV(ReceiptID); GRV.ReleaseForIssue(); String reference = gridReceiveView.GetFocusedDataRow()["RefNo"].ToString(); var recDoc = new ReceiveDoc(); recDoc.LoadByReferenceNo(reference); recDoc.ConfirmGRVPrinted(CurrentContext.UserId); BLL.Receipt receiptStatus = new BLL.Receipt(); receiptStatus.LoadByPrimaryKey(ReceiptID); receiptStatus.ChangeStatus(ReceiptConfirmationStatus.Constants.GRV_PRINTED, null, this.GetFormIdentifier(), CurrentContext.UserId, "GRV Printed"); BindFormContents(); }
private void btnAdjustments_Click(object sender, EventArgs e) { if (ValidateMoveToAdjustments()) { if (DialogResult.Yes == XtraMessageBox.Show("Are you sure you would like to commit this adjustment?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { PalletLocation pl = new PalletLocation(); Pallet p = new Pallet(); ReceiveDoc rdoc = new ReceiveDoc(); ReceivePallet rp = new ReceivePallet(); int printNubmer = InternalTransfer.GetNewPrintNumber() + 1 ; for (int i = 0; i < gridView3.RowCount; i++) { DataRow dr = gridView3.GetDataRow(i); if (dr["Adjust"] != DBNull.Value) { int amount = Convert.ToInt32(dr["Adjust"]); rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"])); rdoc.LoadByPrimaryKey(rp.ReceiveID); rdoc.NoOfPack += amount; amount *= rdoc.QtyPerPack; rp.Balance += amount; if (rp.IsColumnNull("ReceivedQuantity")) { rp.ReceivedQuantity = 0; } rp.ReceivedQuantity += amount; rdoc.QuantityLeft += amount; rdoc.Quantity += amount; BLL.LossAndAdjustment d = new BLL.LossAndAdjustment(); d.AddNew(); d.GenerateRefNo(); d.ItemID = Convert.ToInt32(dr["ItemID"]); d.ReasonId = Convert.ToInt32(dr["Reason"]); d.RecID = rdoc.ID; d.Quantity = amount; d.BatchNo = rdoc.BatchNo; CalendarLib.DateTimePickerEx edate = new CalendarLib.DateTimePickerEx(); edate.Value = DateTime.Today; edate.CustomFormat = "MM/dd/yyyy"; d.Date = ConvertDate.DateConverter(edate.Text); d.EurDate = DateTime.Today; if (!rdoc.IsColumnNull("Cost")) { d.Cost = Math.Abs(rdoc.Cost*amount); } d.StoreId = rdoc.StoreID; d.Losses = false; d.ApprovedBy = CurrentContext.UserId.ToString(); d.Save(); rdoc.Save(); rp.Save(); } } PopulateItemDetails(); XtraMessageBox.Show("Items adjusted successfully.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
/// <summary> /// /// </summary> /// <param name="refNo"></param> /// <param name="userID"></param> /// <param name="shortageAndDamage"></param> /// <param name="preGRVOrGRVOrSRM">1-PreGRV, 2-GRV, 3-SRM, 4-iGRV, 5-DeliveryNote</param> /// <param name="IDToBePrintedOut">Only applicable for the shortage where we need to show the same ID</param> /// <returns></returns> public int PrepareDataForPrintout(int ReceiptID, int? userID, bool shortageAndDamage, int preGRVOrGRVOrSRM, int? IDToBePrintedOut, int? isReprintOfRCPrintoutID,FiscalYear fiscalYear) { string query = ""; if (!shortageAndDamage && preGRVOrGRVOrSRM != 3) { query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintout(ReceiptID, StorageType.Quaranteen); } else if (preGRVOrGRVOrSRM == 3)//SRM { BLL.ReceiveDoc rd = new ReceiveDoc(); rd.LoadAllByReceiptID(ReceiptID); if (rd.IsColumnNull("ReturnedFromIssueDocID")) //This is an SRM done for an issue from the old system. (The issue was done using the old system) { query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintoutIssueDone(ReceiptID); } else //This is a normal SRM (Both the issue and the receive were done using this system) { query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintoutIssueAndReceiveDone(ReceiptID); } } else { //Cost Calculations should be removed from the query below query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintout(ReceiptID); } this.LoadFromRawSql(query); if (this.RowCount == 0) { if (ReceiveDoc.IsThereShortageOrDamage(ReceiptID)) { query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintout(ReceiptID); this.LoadFromRawSql(query); } if (this.RowCount == 0) throw new Exception("No Data To Print, please receive Document before Trying again"); } this.Rewind(); this.AddColumn("LineNum", typeof(int)); this.AddColumn("PrintedGRVNumber", typeof(string)); BLL.Receipt receipt = new Receipt(); int receiptID = int.Parse(this.GetColumn("ReceiptID").ToString()); receipt.LoadByPrimaryKey(receiptID); int receiptTypeID = receipt.ReceiptTypeID; int printedGRVNumber; int lineNum = 1; int totalItems = 0; BLL.ReceiptConfirmationPrintout rcp = new ReceiptConfirmationPrintout(); int? supplierID = null; if (preGRVOrGRVOrSRM != 3) supplierID = this.SupplierID; if (IDToBePrintedOut.HasValue) { printedGRVNumber = IDToBePrintedOut.Value; } else { printedGRVNumber = rcp.AddNew(this.StoreID, supplierID, receiptTypeID == 2 ? null : userID, receipt.ID, preGRVOrGRVOrSRM, isReprintOfRCPrintoutID); } if (!IDToBePrintedOut.HasValue) //We want to save a new receipt confirmation printout only when a new ID is generated (Not when an ID to be printed has been passed as a parameter) { //For delivery note only, we don't save the saved by user id so that we don't say GRV has been printed. } while (!this.EOF) { this.SetColumn("LineNum", lineNum); lineNum++; this.SetColumn("PrintedGRVNumber", fiscalYear.GetCode(printedGRVNumber)); totalItems++; this.MoveNext(); } return printedGRVNumber; }
/// <summary> /// This method handles Receive of an Item with full NotReceived Reason /// </summary> /// <param name="rec"></param> /// <param name="dr"></param> private void HandleFullNotReceivedAndMultipleBatchPalletlization(ReceiveDoc rec,DataRowView dr) { DataRow firstEntry = null; bool noSoundItems = false; // Here: We Can Use One of the Items on a receipt // if ((rec.Quantity == 0 && !rec.IsColumnNull("ShortageReasonID") && rec.ShortageReasonID == ShortageReasons.Constants.NOT_RECEIVED)) { firstEntry = rec.DefaultView.Table.Select(String.Format("[ID] > 0 AND [IsDamaged] = 0")).FirstOrDefault(); } //~ This is a multiple batch case ~// if ((rec.Quantity == 0 && rec.IsColumnNull("ShortageReasonID"))) { var oneAmongMultipleBatchsAndDbSavedGuid = _dtRecGrid.Select(string.Format("CopyGUID = '{0}' And IsCopied = 1 ", dr["CopyGUID"])); DataRow[] dbSavedcounts = oneAmongMultipleBatchsAndDbSavedGuid.Any() ? rec.DefaultView.Table.Select(String.Format("GUID = '{0}'", oneAmongMultipleBatchsAndDbSavedGuid[0]["GUID"])) : oneAmongMultipleBatchsAndDbSavedGuid; firstEntry = dbSavedcounts.Any() ? dbSavedcounts.FirstOrDefault() : rec.DefaultView.Table.Select(String.Format("[ID] > 0 AND [IsDamaged] = 0")).FirstOrDefault(); } // If we cant find any normal receive in this receipt let's just use one of receiveDocID's randomly: This is just to save a not received Entry with zero quantity! (an awful recent request!)~// if (firstEntry == null && ((rec.Quantity == 0 && !rec.IsColumnNull("ShortageReasonID") && rec.ShortageReasonID == ShortageReasons.Constants.NOT_RECEIVED))) { firstEntry = rec.DefaultView.Table.Select(String.Format("[ID] > 0")).FirstOrDefault(); if (firstEntry != null) { noSoundItems = true; } } // This is a Zero Quantity ReceiveDoc // if (firstEntry != null) { rec.PhysicalStoreID = Convert.ToInt16(firstEntry["PhysicalStoreID"]); rec.InventoryPeriodID = Convert.ToInt16(firstEntry["InventoryPeriodID"]); rec.Save(); // Lets Create a Zero ReceivePallet in the same palletlocation as one of the Items in the receipt // var oneOfrecievePallet = new BLL.ReceivePallet(); oneOfrecievePallet.LoadByReceiveDocID(Convert.ToInt16(firstEntry["ID"])); var newReceivePallet = new BLL.ReceivePallet(); newReceivePallet.AddNew(); newReceivePallet.IsOriginalReceive = true; newReceivePallet.ReceiveID = rec.ID; newReceivePallet.Balance = newReceivePallet.ReceivedQuantity = newReceivePallet.ReservedStock = 0; newReceivePallet.PalletID = oneOfrecievePallet.PalletID; newReceivePallet.PalletLocationID = oneOfrecievePallet.PalletLocationID; newReceivePallet.BoxSize = oneOfrecievePallet.BoxSize; newReceivePallet.Save(); } if (!rec.IsColumnNull("ShortageReasonID") && rec.ShortageReasonID == BLL.ShortageReasons.Constants.NOT_RECEIVED) { var recShortage = new ReceiveDocShortage(); recShortage.AddNew(); recShortage.ShortageReasonID = rec.ShortageReasonID; recShortage.ReceiveDocID = rec.ID; recShortage.NoOfPacks = Convert.ToDecimal(dr["InvoicedQty"]); recShortage.Save(); } }
//, string guid) private void SavePalletization(ReceiveDoc rec, DataRowView drow) { if ((rec.Quantity == 0 && !rec.IsColumnNull("ShortageReasonID") && rec.ShortageReasonID == ShortageReasons.Constants.NOT_RECEIVED) || (rec.Quantity == 0 && rec.IsColumnNull("ShortageReasonID"))) { HandleFullNotReceivedAndMultipleBatchPalletlization(rec,drow); return; } string guid; BLL.ReceivePallet rp = new ReceivePallet(); Pallet pallet = new Pallet(); PalletLocation pl = new PalletLocation(); ItemUnit itemUnit = new ItemUnit(); BLL.ItemManufacturer im = new BLL.ItemManufacturer(); guid = rec.GetColumn("GUID").ToString(); var isDamaged = Convert.ToBoolean(rec.GetColumn("IsDamaged")); //DataRow[] r = _dtPalletizedItemList.Select(string.Format("Index = '{0}'", i)); DataRow[] r = _dtPalletizedItemList.Select(string.Format("GUID = '{0}' AND IsDamaged = {1}", guid, isDamaged)); if (r.Length > 0) { foreach (DataRow rw in r) { rp.AddNew(); rp.IsOriginalReceive = true; if (Convert.ToBoolean(rw["Consolidate"])) { try { DataRow dr = _dtPutAwayPalletized.Select(string.Format("PalletNumber={0}", Convert.ToInt32(rw["PalletNumber"])))[0]; //Assuming we only need one. if (rw["IsStoredInFreeStorageType"] != null) { if (Convert.ToBoolean(rw["IsStoredInFreeStorageType"]) == true) { pl.LoadByPrimaryKey(Convert.ToInt32(dr["PutAwayLocation"])); } } } catch { pl.LoadByPalletNumber(Convert.ToInt32(rw["PalletNumber"])); } try { rp.PalletID = pl.PalletID; rp.PalletLocationID = pl.ID; } catch { rp.PalletID = GetPalletID(rw["PalletNumber"].ToString()); try { rp.PalletLocationID = PalletLocation.GetPalletLocationID(rp.PalletID); } catch { DataRow dr = _dtPutAwayPalletized.Select(string.Format("PalletNumber={0}", Convert.ToInt32(rw["PalletNumber"])))[0]; pl.LoadByPrimaryKey(Convert.ToInt32(dr["PutAwayLocation"])); pl.PalletID = rp.PalletID; pl.Save(); rp.PalletLocationID = pl.ID; } } //// if the putaway is on a pick face, increase the amount stored on the pick face //if (pl.StorageTypeID.ToString() == StorageType.PickFace) //{ // PickFace pf = new PickFace(); // pf.LoadPickFaceFor(rec.ItemID, Convert.ToInt32(cboStores.EditValue)); // if (pf.RowCount > 0) // { // if (pf.IsColumnNull("Balance")) // { // pf.Balance = 0; // } // pf.Balance += Convert.ToInt32(rp.Balance); // pf.Save(); // } //} } else { var palletNumber = Convert.ToInt32(rw["PalletNumber"]); DataRow dr = _dtPutAwayPalletized.Select(string.Format("PalletNumber={0}", palletNumber))[0]; //Assuming we only need one. pl.LoadByPrimaryKey(Convert.ToInt32(dr["PutAwayLocation"])); rp.PalletID = GetPalletID(rw["PalletNumber"].ToString()); pl.PalletID = rp.PalletID; rp.PalletLocationID = pl.ID; //PalletLocation.GetPalletLocationID(rp.PalletID); pl.Save(); } rp.ReservedStock = 0; im.LoadIMbyLevel(Convert.ToInt32(rw["ID"]), Convert.ToInt32(rw["Manufacturer"]), Convert.ToInt32(rw["BoxLevel"])); int qtyPerPack = im.QuantityInBasicUnit; if (rw["UnitID"] != DBNull.Value) { itemUnit.LoadByPrimaryKey(Convert.ToInt32(rw["UnitID"])); qtyPerPack = itemUnit.QtyPerUnit; } rp.ReceivedQuantity = rp.Balance = (Convert.ToDecimal(rw["Pack Qty"]) * Convert.ToDecimal(qtyPerPack)); rp.BoxSize = Convert.ToInt32(rw["BoxLevel"]); if (rec.IsColumnNull("PhysicalStoreID") && !rp.IsColumnNull("PalletLocationID")) { PalletLocation l = new PalletLocation(); l.LoadByPrimaryKey(rp.PalletLocationID); rec.PhysicalStoreID = (l.PhysicalStoreID); PhysicalStore physicalStore = new PhysicalStore(); physicalStore.LoadByPrimaryKey(l.PhysicalStoreID); rec.InventoryPeriodID = physicalStore.CurrentInventoryPeriodID; } if (Convert.ToBoolean(rw["Consolidate"])) { try { // if the putaway is on a pick face, increase the amount stored on the pick face if (pl.StorageTypeID.ToString() == StorageType.PickFace) { PickFace pf = new PickFace(); pf.LoadPickFaceFor(rec.ItemID, Convert.ToInt32(lkAccounts.EditValue)); if (pf.RowCount > 0) { if (pf.IsColumnNull("Balance")) { pf.Balance = 0; } pf.Balance += Convert.ToInt32(rp.Balance); pf.Save(); } } } catch { } } } } //r = _dtPutAwayNonPalletized.Select(string.Format("Index = '{0}'", i)); string filterQuery = _revDocRelatePalletGuid.ContainsKey(guid) ? string.Format("{0} AND IsDamaged = {1}", GetFilterByGuid(_revDocRelatePalletGuid[guid]), isDamaged) : string.Format("GUID = '{0}' AND IsDamaged = {1} ", guid, isDamaged); r = _dtPutAwayNonPalletized.Select(filterQuery); if (r.Length > 0) { // Save the palletization and the putaway here,// this was supposed to be out of here but it is easlier to implement here. foreach (DataRow rw in r) { pl.LoadByPrimaryKey(Convert.ToInt32(rw["PutAwayLocation"])); if (pl.IsColumnNull("PalletID")) { pallet.AddNew(); pallet.Save(); } else { pallet.LoadByPrimaryKey(pl.PalletID); } rp.AddNew(); rp.IsOriginalReceive = true; rp.PalletID = pallet.ID; rp.PalletLocationID = pl.ID; // rp.ReceiveID = rec.ID; rp.ReservedStock = 0; im.LoadIMbyLevel(Convert.ToInt32(rw["ID"]), Convert.ToInt32(rw["Manufacturer"]), Convert.ToInt32(rw["BoxLevel"])); int qtyPerPack = im.QuantityInBasicUnit; if (rw["UnitID"] != DBNull.Value) { itemUnit.LoadByPrimaryKey(Convert.ToInt32(rw["UnitID"])); qtyPerPack = itemUnit.QtyPerUnit; } rp.ReceivedQuantity = rp.Balance = (Convert.ToDecimal(rw["Palletized Quantity"]) * Convert.ToDecimal(qtyPerPack)); rp.BoxSize = Convert.ToInt32(rw["BoxLevel"]); //Get the putaway location pl.Save(); if (pl.IsColumnNull("PalletID")) { pl.PalletID = pallet.ID; pl.Confirmed = false; pl.Save(); } } } if (rec.IsColumnNull("PhysicalStoreID") && !rp.IsColumnNull("PalletLocationID")) { PalletLocation l = new PalletLocation(); l.LoadByPrimaryKey(rp.PalletLocationID); PhysicalStore physicalStore = new PhysicalStore(); physicalStore.LoadByPrimaryKey(l.PhysicalStoreID); rec.PhysicalStoreID = (l.PhysicalStoreID); // we can take any of the pallet location physical store. as we have one entry on receiveDoc per Store. if (physicalStore.IsColumnNull("CurrentInventoryPeriodID")) { XtraMessageBox.Show(string.Format("Please Set InventoryPeriod for '{0}' PhysicalStore!", physicalStore.Name), "Empty InventoryPeriod", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new Exception(string.Format("Please Set InventoryPeriod for '{0}' PhysicalStore!", physicalStore.Name)); } rec.InventoryPeriodID = physicalStore.CurrentInventoryPeriodID; } rec.Save(); rp.Rewind(); while (!rp.EOF) { rp.ReceiveID = rec.ID; rp.MoveNext(); } rp.Save(); SavePutAwayItems(); }
public void SetPriceForReceiveDocs() { ReceiveDoc receiveDoc = new ReceiveDoc(); receiveDoc.LoadbyItemUnitManufacturerMovingAverageID(ReceiptID.Value,ItemID,ItemUnitID,ManufacturerID,MovingAverageID); receiveDoc.Rewind(); while (!receiveDoc.EOF) { if(receiveDoc.IsColumnNull("PricePerPack") || !(receiveDoc.PricePerPack > 0)) receiveDoc.PricePerPack = AverageCost; if(receiveDoc.IsColumnNull("UnitCost") || !(receiveDoc.PricePerPack > 0)) receiveDoc.UnitCost = Convert.ToDecimal(AverageCost); receiveDoc.Cost = AverageCost; receiveDoc.Margin = Margin; receiveDoc.SellingPrice = SellingPrice; receiveDoc.MoveNext(); } receiveDoc.Save(); }
/// <summary> /// Saves the whole transaction for /// </summary> /// <param name="orderID">The order ID.</param> /// <param name="dvOutstandingPickList">The dv outstanding pick list.</param> /// <param name="remark">The remark.</param> /// <param name="issuedBy">The issued by.</param> /// <param name="etCurrentDate">The et current date.</param> /// <returns></returns> /// <exception cref="System.Exception"></exception> public static Order SaveIssueTransaction(int orderID, ref DataView dvOutstandingPickList, string remark, string issuedBy, DateTime etCurrentDate) { // Add the IssueDocID field dvOutstandingPickList.Table.Columns.Add("IssueDocID"); PickList plst = new PickList(); IssueDoc issDoc = new IssueDoc(); ReceiveDoc recDoc = new ReceiveDoc(); BLL.Order ord = new BLL.Order(); ord.LoadByPrimaryKey(orderID); plst.LoadByOrderID(ord.ID); foreach (DataRowView drv in dvOutstandingPickList) { // Pseudo: // for each row in the picklist // undate the issue document // subtract the issued quantity from the receive doc // subtract the issued quantity from recieve pallet // subtract the issued the reserved quantity irregardless of the quantity issued. //Saving the new Issue issue if (Convert.ToDecimal(drv["BUPICKED"]) == 0) { continue; } if (Convert.ToDecimal(drv["SKUPicked"]) != Convert.ToDecimal(drv["SKUTOPICK"])) { drv["Cost"] = Convert.ToDecimal(drv["SKUPicked"]) * Convert.ToDecimal(drv["UnitPrice"]); } // Select the receive doc that is associated with this issue. recDoc.LoadByPrimaryKey(Convert.ToInt32(drv["ReceiveDocID"])); issDoc.AddNew(); issDoc.StoreId = Convert.ToInt32(drv["StoreID"]); issDoc.RefNo = ord.RefNo; if (!ord.IsColumnNull("RequestedBy")) { issDoc.ReceivingUnitID = ord.RequestedBy; } // TOFIX: // TODO: // Lord have mercy kind of hack to avoid the feb date problem // this needs to be fixed for pagume also issDoc.Date = etCurrentDate; issDoc.EurDate = DateTimeHelper.ServerDateTime; issDoc.RecievDocID = Convert.ToInt32(drv["ReceiveDocID"]); issDoc.IsApproved = true; issDoc.IsTransfer = false; issDoc.Remark = remark; issDoc.ItemID = Convert.ToInt32(drv["ItemID"]); issDoc.Quantity = Convert.ToDecimal(drv["BUPICKED"]); issDoc.NoOfPack = Convert.ToDecimal(drv["SKUPICKED"]); issDoc.QtyPerPack = Convert.ToInt32(drv["SKUBU"]); issDoc.BatchNo = drv["BatchNumber"].ToString(); issDoc.UnitID = recDoc.UnitID; issDoc.ManufacturerID = recDoc.ManufacturerId; if (drv["Cost"] != DBNull.Value) { issDoc.Cost = Convert.ToDouble(drv["Cost"]); issDoc.SellingPrice = Convert.ToDecimal(drv["UnitPrice"]); if (!recDoc.IsColumnNull("Cost")) { issDoc.UnitCost = Convert.ToDecimal(recDoc.Cost); } } issDoc.OrderID = orderID; issDoc.IssuedBy = issuedBy; // TODO: is this the right place where we need to pick the physical store ID from? // check it against the receipt pallet physical store. if (!recDoc.IsColumnNull("PhysicalStoreID")) { issDoc.PhysicalStoreID = recDoc.PhysicalStoreID; } if (!recDoc.IsColumnNull("InventoryPeriodID")) { //Todo: Remove for Inventory issDoc.InventoryPeriodID = recDoc.InventoryPeriodID; } if (!recDoc.IsColumnNull("Margin")) { issDoc.Margin = (decimal)recDoc.Margin; } //Replaced by issDoc.PLDetailID = Convert.ToInt32(drv["PLDetailID"]); BLL.Balance bal = new Balance(); BLL.ReceiveDoc rd = new ReceiveDoc(); rd.LoadByPrimaryKey(issDoc.RecievDocID); decimal currentBalance = bal.GetSoh(issDoc.ItemID, rd.UnitID, issDoc.StoreId, issDoc.Date.Month, issDoc.Date.Year); if (currentBalance < issDoc.NoOfPack) { throw new Exception(string.Format("The item {0} is not available in {1} Qty.", drv["FullItemName"].ToString(), issDoc.NoOfPack)); } // This is a field that is not applicable on the hub edition // It is about the dispensing unit quantity and there is no such thing as Dispensing unit // in the hub edition issDoc.DUSOH = 0; issDoc.RecomendedQty = 0;// ((recQty > 0) ? Convert.ToInt64(recQty) : 0); // End DU issDoc.DispatchConfirmed = false; issDoc.Save(); drv["IssueDocID"] = issDoc.ID; // updating the receiving doc //long prevQuantityLeft = recDoc.QuantityLeft; recDoc.QuantityLeft = recDoc.QuantityLeft - issDoc.Quantity; if (recDoc.QuantityLeft < 0) { //Possibly the wrong ReceiveDoc Entry chosen BLL.Item itm = new Item(); itm.LoadByPrimaryKey(recDoc.ItemID); throw new Exception(string.Format("Quantity problem detected for the item {0}", itm.FullItemName)); } //long recDoc.Out = (recDoc.QuantityLeft == 0) ? true : false; recDoc.Save(); ReceivePallet rp = new ReceivePallet(); int id = Convert.ToInt32(drv["ReceivePalletID"]); rp.LoadByPrimaryKey(id); if (rp.IsColumnNull("Balance")) { rp.Balance = rp.ReceivedQuantity; } rp.Balance -= issDoc.Quantity; if (rp.Balance < 0) { BLL.Item itm = new Item(); itm.LoadByPrimaryKey(recDoc.ItemID); throw new Exception(string.Format("Quantity problem detected for the item {0}", itm.FullItemName)); } decimal totReservedQty = Convert.ToDecimal(drv["QuantityInBU"]); if (rp.IsColumnNull("ReservedStock")) { rp.ReservedStock = 0; } rp.ReservedStock -= totReservedQty; if (rp.ReservedStock < 0) //If there has been a quantity problem somewhere { rp.ReservedStock = 0; } rp.Save(); } plst.IsConfirmed = true; ord.ChangeStatus(OrderStatus.Constant.ISSUED, CurrentContext.UserId); plst.Save(); ord.Save(); return(ord); }
/// <summary> /// Receives from account transfer. /// </summary> /// <param name="PicklistID">The picklist ID.</param> /// <param name="StoreID">The store ID.</param> /// <param name="User">The user.</param> /// <param name="UserID">The user ID.</param> /// <returns></returns> public static String ReceiveFromAccountTransfer(int PicklistID, int StoreID, string User, int UserID) { PickListDetail pickListDetail = new PickListDetail(); pickListDetail.LoadByPickListID(PicklistID); DataView dv = pickListDetail.DefaultView; ReceiveDoc NewReceiveDoc = new ReceiveDoc(); String ReferenceID = ReceiveDoc.GetNextRefForTransfer(); foreach (DataRowView dvr in dv) { //Get ReceiveDoc information. int receiveDocID = Convert.ToInt32(dvr["ReceiveDocID"]); ReceiveDoc receiveDocFromPicklist = new ReceiveDoc(); receiveDocFromPicklist.LoadByPrimaryKey(receiveDocID); //We have all the Receivedoc information that we want NewReceiveDoc.AddNew(); if (receiveDocFromPicklist.s_BatchNo == null) NewReceiveDoc.BatchNo = receiveDocFromPicklist.BatchNo; NewReceiveDoc.ItemID = receiveDocFromPicklist.ItemID; NewReceiveDoc.SupplierID = receiveDocFromPicklist.SupplierID; if (receiveDocFromPicklist.s_ExpDate == null) NewReceiveDoc.ExpDate = receiveDocFromPicklist.ExpDate; NewReceiveDoc.StoreID = StoreID; NewReceiveDoc.ReceivedBy = User; NewReceiveDoc.Remark = receiveDocFromPicklist.Remark; NewReceiveDoc.RefNo = "TA" + receiveDocFromPicklist.RefNo; if (!receiveDocFromPicklist.IsColumnNull("Cost")) NewReceiveDoc.Cost = receiveDocFromPicklist.Cost; NewReceiveDoc.ManufacturerId = receiveDocFromPicklist.ManufacturerId; NewReceiveDoc.Quantity = Convert.ToInt32(dvr["Packs"]) * Convert.ToInt32(dvr["QtyPerPack"]); NewReceiveDoc.NoOfPack = Convert.ToInt32(dvr["Packs"]); NewReceiveDoc.QtyPerPack = Convert.ToInt32(dvr["QtyPerPack"]); if (!receiveDocFromPicklist.IsColumnNull("PricePerPack")) NewReceiveDoc.PricePerPack = receiveDocFromPicklist.PricePerPack; if (!receiveDocFromPicklist.IsColumnNull("SellingPrice")) NewReceiveDoc.SellingPrice = receiveDocFromPicklist.SellingPrice; NewReceiveDoc.UnitID = receiveDocFromPicklist.UnitID; NewReceiveDoc.DeliveryNote = receiveDocFromPicklist.DeliveryNote; //NewReceiveDoc.PricePerPack = receiveDocFromPicklist.PricePerPack; NewReceiveDoc.QuantityLeft = Convert.ToInt32(dvr["Packs"]) * Convert.ToInt32(dvr["QtyPerPack"]); NewReceiveDoc.EurDate = DateTimeHelper.ServerDateTime; NewReceiveDoc.Date = EthiopianDate.EthiopianDate.Now.ToGregorianDate(); NewReceiveDoc.IsDamaged = receiveDocFromPicklist.IsDamaged; NewReceiveDoc.Save(); NewReceiveDoc.SetStatusAsReceived(UserID); PalletizeTransfer(NewReceiveDoc); } return ReferenceID; }
private void gridReceiveView_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { // Bind the detail grid PalletLocation pl = new PalletLocation(); if (e != null && e.PrevFocusedRowHandle < -1) return; string warehouseName = string.Empty; try { var dr = gridReceiveView.GetFocusedDataRow(); if (dr == null) return; ReceiptID = Convert.ToInt32(dr["ReceiptID"]); var receiptDoc = new BLL.Receipt(); var receipt = new BLL.Receipt(); receipt.LoadByPrimaryKey(ReceiptID); receiptDoc.LoadByPrimaryKey(ReceiptID); var GRNFDetail = receiptDoc.GetDetailsForGRNF(); if (GRNFDetail.Rows.Count > 0) { txtOrderNo.EditValue = dr["PONumber"] == DBNull.Value ? "-" : dr["PONumber"]; lblPONo.Text = (dr["PONumber"] == DBNull.Value ? "-" : dr["PONumber"].ToString()); lblCluster.Text = dr["ClusterName"] == DBNull.Value ? "-" : dr["ClusterName"].ToString(); txtWarehouse.EditValue = lblWarehouse.Text = warehouseName = dr["WarehouseName"] == DBNull.Value ? "-" : dr["WarehouseName"].ToString(); var receiptInvoice = new ReceiptInvoice(receiptDoc.ReceiptInvoiceID); txtInvoiceNo.EditValue = lblInvoiceNo.Text = String.IsNullOrEmpty(receiptInvoice.STVOrInvoiceNo) ? "-" : receiptInvoice.STVOrInvoiceNo; txtInsurance.EditValue = lblInsurancePolicy.Text = String.IsNullOrEmpty(receiptInvoice.InsurancePolicyNo) ? "-" : receiptInvoice.InsurancePolicyNo; txtTransfer.EditValue = lblTransferVoucherNo.Text = String.IsNullOrEmpty(receipt.TransitTransferNo) ? "-" : receipt.TransitTransferNo; txtWayBill.EditValue = lblWayBill.Text = String.IsNullOrEmpty(receiptInvoice.WayBillNo) ? "-" : receiptInvoice.WayBillNo; var activity = new Activity(); activity.LoadByPrimaryKey(Convert.ToInt32(dr["StoreID"])); txtActivity.EditValue = activity.FullActivityName; lblActivity.Text = String.IsNullOrEmpty(activity.Name) ? "-" : activity.Name; lblSubAccount.Text = String.IsNullOrEmpty(activity.SubAccountName) ? "-" : activity.SubAccountName; lblAccount.Text = String.IsNullOrEmpty(activity.AccountName) ? "-" : activity.AccountName; lblMode.Text = String.IsNullOrEmpty(activity.ModeName) ? "-" : activity.ModeName; lblReceiveType.Text = dr["ReceiptType"] == DBNull.Value ? "-" : dr["ReceiptType"].ToString(); lblReceiveStatus.Text = dr["Status"] == DBNull.Value ? "-" : dr["Status"].ToString(); lblDocumentType.Text = dr["DocumentType"] == DBNull.Value ? "-" : dr["DocumentType"].ToString(); lblPOType.Text = dr["POType"] == DBNull.Value ? "-" : dr["POType"].ToString(); lblPaymentType.Text = dr["PaymentType"] == DBNull.Value ? "-" : dr["PaymentType"].ToString(); lblReceiptNo.Text = dr["ReceiptNo"] == DBNull.Value ? "-" : dr["ReceiptNo"].ToString(); lblSupplier.Text = dr["Supplier"] == DBNull.Value ? "-" : dr["Supplier"].ToString(); var user = new User(); user.LoadByPrimaryKey(receiptDoc.SavedByUserID); lblReceivedBy.Text = String.IsNullOrEmpty(user.FullName) ? "-" : user.FullName; var receiveDoc = new ReceiveDoc(); receiveDoc.LoadByReceiptID(ReceiptID); lblReceivedDate.Text = receiptDoc.IsColumnNull("DateOfEntry") ? "-" :receiveDoc.EurDate.ToShortDateString(); lblConfirmedDate.Text = receiveDoc.IsColumnNull("ConfirmedDateTime") ? "-" : receiveDoc.ConfirmedDateTime.ToShortDateString(); if (!receiveDoc.IsColumnNull("ConfirmedByUserID")) { user.LoadByPrimaryKey(receiveDoc.ConfirmedByUserID); lblConfirmedBy.Text = String.IsNullOrEmpty(user.FullName) ? "-" : user.FullName; } else { lblConfirmedBy.Text = "-"; } var space = string.Empty; var length = warehouseName.Length; HeaderGroup.Text = warehouseName + space.PadRight(180 - length) + "Invoice No: " + receiptInvoice.STVOrInvoiceNo; } gridDetails.DataSource = GRNFDetail; gridShortage.DataSource = receiptDoc.GetDiscrepancyForGRNF(); } catch { gridDetails.DataSource = null; } }
/// <summary> /// Load the lookups and Prepare the form /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void EditReceive_Load(object sender, EventArgs e) { lkItemUnit.Enabled = VisibilitySetting.HandleUnits != 1; var str = new Stores(); str.LoadAll(); cboStores.DataSource = str.DefaultView; var sup = new Supplier(); sup.GetActiveSuppliers(); cboSupplier.DataSource = sup.DefaultView; if(_tranId != 0) { var rec = new ReceiveDoc(); var itm = new Items(); rec.LoadByPrimaryKey(_tranId); var dtItm = itm.GetItemById(rec.ItemID); var units = new ItemUnit(); var unit = units.LoadFromSQl(rec.ItemID); lkItemUnit.Properties.DataSource = unit; lkItemUnit.Properties.DisplayMember = "Text"; lkItemUnit.Properties.ValueMember = "ID"; var programs = new Programs(); var allprograms = programs.GetSubPrograms(); lkPrograms.Properties.DataSource = allprograms; lkPrograms.Properties.ValueMember = "ID"; lkPrograms.Properties.DisplayMember = "Name"; string itemName = dtItm.Rows[0]["ItemName"].ToString() + " - " + dtItm.Rows[0]["DosageForm"].ToString() + " - " + dtItm.Rows[0]["Strength"].ToString(); txtRefNo.Text = rec.RefNo; txtBatchNo.Text = rec.BatchNo; try { txtPack.Text = rec.NoOfPack.ToString(); txtQtyPack.Text =rec.QtyPerPack.ToString(); txtPrice.Text = (rec.Cost * rec.QtyPerPack).ToString(); //txtQuantityLeft.Text = rec.QuantityLeft.ToString(); } catch { txtPack.Text = "0"; txtQtyPack.Text = "0"; txtPrice.Text = (rec.Cost * 1).ToString(); } txtQuantity.Text = rec.Quantity.ToString(); lkPrograms.EditValue = rec.SubProgramID; DateTime dtDate = Convert.ToDateTime(rec.Date.ToString("MM/dd/yyyy")); txtDate.Text = dtDate.ToShortDateString(); dtRecDate.Value = DateTime.Now; dtRecDate.CustomFormat = "MM/dd/yyyy"; if (!rec.IsColumnNull("ExpDate")) dtExpiryDate.Value = rec.ExpDate; cboStores.SelectedValue = rec.StoreID; cboSupplier.SelectedValue = rec.SupplierID; if (!rec.IsColumnNull("UnitID")) lkItemUnit.EditValue = rec.UnitID; txtItemName.Text = itemName; txtReceivedBy.Text = rec.ReceivedBy; txtRemark.Text = rec.Remark; } }
/// <summary> /// Fix For Delivery Note When Converting Do not use under any other situation /// </summary> /// <param name="issueDocID"></param> /// <param name="picklistID"></param> /// <returns></returns> public PickListDetail FixDeliveryNoteCostReceiveDoc(int issueDocID, int picklistID) { IssueDoc issueDoc = new IssueDoc(); issueDoc.LoadByPrimaryKey(issueDocID); PickListDetail pickList = new PickListDetail(); pickList.LoadByPrimaryKey(picklistID); //safety first if (issueDoc.RecievDocID != pickList.ReceiveDocID) { Item item = new Item(); item.LoadByPrimaryKey(picklistID); throw new Exception(String.Format("PicklistDetail vs IssueDoc Inconsistancy for Item {0}", item.FullItemName)); } // now we are sure we have one ReceiveDocID ReceiveDoc receiveDoc = new ReceiveDoc(); receiveDoc.LoadByPrimaryKey(pickList.ReceiveDocID); ReceiveDocConfirmation receiveDocConfirmation = new ReceiveDocConfirmation(); receiveDocConfirmation.LoadByReceiveDocID(receiveDoc.ID); //Check if it has been Printed and that Selling Price and Cost is set if (receiveDocConfirmation.ReceiptConfirmationStatusID == ReceiptConfirmationStatus.Constants.GRV_PRINTED) { double unitPrice, unitCost, margin; if (Settings.IsCenter == true && !receiveDoc.IsColumnNull("Cost") && receiveDoc.Cost != 0) { unitPrice = Math.Round(receiveDoc.Cost, 2); unitCost = Math.Round(receiveDoc.Cost, 2); margin = !receiveDoc.IsColumnNull("Margin") ? receiveDoc.Margin : 0; } else if (!receiveDoc.IsColumnNull("SellingPrice") && receiveDoc.SellingPrice != 0) { unitPrice = Math.Round(receiveDoc.SellingPrice, 2); unitCost = Math.Round(receiveDoc.SellingPrice, 2); margin = !receiveDoc.IsColumnNull("Margin") ? receiveDoc.Margin : 0; } else { var item = new Item(); item.LoadByPrimaryKey(pickList.ItemID); throw new Exception(String.Format("Price Not set For item: {0}", item.FullItemName)); } pickList.UnitPrice = unitPrice; pickList.Cost = Convert.ToDouble(pickList.Packs) * unitPrice; issueDoc.SellingPrice = Convert.ToDecimal(unitPrice); issueDoc.Cost = Convert.ToDouble(issueDoc.NoOfPack) * unitPrice; issueDoc.UnitCost = Convert.ToDecimal(unitCost); issueDoc.Margin = Convert.ToDecimal(margin); pickList.Save(); issueDoc.Save(); } else { var item = new Item(); item.LoadByPrimaryKey(pickList.ItemID); throw new Exception(String.Format("GRV/IGRV Not Printed For Item: {0}", item.FullItemName)); } return(pickList); }
internal static PickListDetail GeneratePickListDetail(ReceivePallet receivePallet, int pickListId,decimal qtyInBU) { ReceiveDoc receiveDoc = new ReceiveDoc(); receiveDoc.LoadByPrimaryKey(receivePallet.ReceiveID); decimal pack = qtyInBU / Convert.ToDecimal(receiveDoc.QtyPerPack); PickListDetail pkDetail = new PickListDetail(); pkDetail.AddNew(); pkDetail.PickListID = pickListId; pkDetail.ItemID = receiveDoc.ItemID; PalletLocation palletLocation = new PalletLocation(); palletLocation.loadByPalletID(receivePallet.PalletID); int palletLocationId; try { palletLocationId = palletLocation.ID; } catch (Exception exp) { palletLocationId = receivePallet.PalletLocationID; palletLocation.LoadByPrimaryKey(palletLocationId); } pkDetail.PalletLocationID = palletLocationId; if (!receiveDoc.IsColumnNull("BatchNo")) pkDetail.BatchNumber = receiveDoc.BatchNo; if (!receiveDoc.IsColumnNull("ExpDate")) pkDetail.ExpireDate = receiveDoc.ExpDate; pkDetail.StoreID = receiveDoc.StoreID; pkDetail.UnitID = receiveDoc.UnitID; pkDetail.ReceiveDocID = receiveDoc.ID; if (!receiveDoc.IsColumnNull("Cost")) { pkDetail.Cost = Convert.ToDouble(pack) * Math.Round(receiveDoc.Cost, BLL.Settings.NoOfDigitsAfterTheDecimalPoint); pkDetail.UnitPrice = Math.Round(receiveDoc.Cost, BLL.Settings.NoOfDigitsAfterTheDecimalPoint); } pkDetail.Packs = pack; pkDetail.QtyPerPack = receiveDoc.QtyPerPack; pkDetail.QuantityInBU = qtyInBU; pkDetail.StoreID = receiveDoc.StoreID; pkDetail.ReceivePalletID = receivePallet.ID; pkDetail.ManufacturerID = receiveDoc.ManufacturerId; pkDetail.BoxLevel = 0; pkDetail.DeliveryNote = true; pkDetail.PhysicalStoreID = palletLocation.PhysicalStoreID; pkDetail.Save(); return pkDetail; }
/// <summary> /// Fix For Delivery Note When Converting Do not use under any other situation /// </summary> /// <param name="issueDocID"></param> /// <param name="picklistID"></param> /// <returns></returns> public PickListDetail FixDeliveryNoteCostReceiveDoc(int issueDocID, int picklistID) { IssueDoc issueDoc = new IssueDoc(); issueDoc.LoadByPrimaryKey(issueDocID); PickListDetail pickList = new PickListDetail(); pickList.LoadByPrimaryKey(picklistID); //safety first if (issueDoc.RecievDocID != pickList.ReceiveDocID) { Item item = new Item(); item.LoadByPrimaryKey(picklistID); throw new Exception(String.Format("PicklistDetail vs IssueDoc Inconsistancy for Item {0}", item.FullItemName)); } // now we are sure we have one ReceiveDocID ReceiveDoc receiveDoc = new ReceiveDoc(); receiveDoc.LoadByPrimaryKey(pickList.ReceiveDocID); ReceiveDocConfirmation receiveDocConfirmation = new ReceiveDocConfirmation(); receiveDocConfirmation.LoadByReceiveDocID(receiveDoc.ID); //Check if it has been Printed and that Selling Price and Cost is set if (receiveDocConfirmation.ReceiptConfirmationStatusID == ReceiptConfirmationStatus.Constants.GRV_PRINTED) { double unitPrice, unitCost, margin; if (Settings.IsCenter == true && !receiveDoc.IsColumnNull("Cost") && receiveDoc.Cost != 0) { unitPrice = Math.Round(receiveDoc.Cost, 2); unitCost = Math.Round(receiveDoc.Cost, 2); margin = !receiveDoc.IsColumnNull("Margin") ? receiveDoc.Margin : 0; } else if (!receiveDoc.IsColumnNull("SellingPrice") && receiveDoc.SellingPrice != 0) { unitPrice = Math.Round(receiveDoc.SellingPrice, 2); unitCost = Math.Round(receiveDoc.SellingPrice, 2); margin = !receiveDoc.IsColumnNull("Margin") ? receiveDoc.Margin : 0; } else { var item = new Item(); item.LoadByPrimaryKey(pickList.ItemID); throw new Exception(String.Format("Price Not set For item: {0}", item.FullItemName)); } pickList.UnitPrice = unitPrice; pickList.Cost = Convert.ToDouble(pickList.Packs) * unitPrice; issueDoc.SellingPrice = Convert.ToDecimal(unitPrice); issueDoc.Cost = Convert.ToDouble(issueDoc.NoOfPack) * unitPrice; issueDoc.UnitCost = Convert.ToDecimal(unitCost); issueDoc.Margin = Convert.ToDecimal(margin); pickList.Save(); issueDoc.Save(); } else { var item = new Item(); item.LoadByPrimaryKey(pickList.ItemID); throw new Exception(String.Format("GRV/IGRV Not Printed For Item: {0}", item.FullItemName)); } return pickList; }
/* private void GenerateBinCard() { ReceiveDoc rec = new ReceiveDoc(); IssueDoc iss = new IssueDoc(); Disposal dis = new Disposal(); DisposalReasons res = new DisposalReasons(); Balance bal = new Balance(); GeneralInfo info = new GeneralInfo(); YearEnd yEnd = new YearEnd(); Items itm = new Items(); info.LoadAll(); year = Convert.ToInt32(cboYear.SelectedItem); DataTable dtRec = rec.GetAllTransaction(itemId,storeId,dtCurrent.Month,year); DataTable dtIss = iss.GetTransactionByItemId(storeId, itemId, year); DataTable dtDis = dis.GetTransactionByItemId(storeId, itemId, year); Int64[] cStockout = { 0, 0, 0 }; Int64[] cOverStock = { 0, 0, 0 }; Int64[] cNearStockOut = { 0, 0, 0 }; Int64[] cBelowMin = { 0, 0, 0 }; //DateTime dtThree = dtCurrent.AddMonths(3); DataTable dtbin = new DataTable(); string[] col = { "Date", "Ref. No", "Receive", "Issue", "Unit Price", "Balance", "Batch No", "Expiry Date","To / From"}; foreach (string str in col) { dtbin.Columns.Add(str); } int i = 0; Int64 bBalance = 0; dtDate.Value = DateTime.Now; dtDate.CustomFormat = "MM/dd/yyyy"; dtCurrent = ConvertDate.DateConverter(dtDate.Text); bBalance = yEnd.GetBBalance(year, storeId, itemId,dtCurrent.Month); Int64 balanceAmount = bBalance; Int64 mincon = 0; Int64 maxcon = 0; double eopcon = 0; DateTime dtT = new DateTime(); string balanceAm = ""; txtBBalance.Text = bBalance.ToString(); string ddDate = ""; string batNo = ""; foreach (DataRow dvRec in dtRec.Rows) { i++; if (Convert.ToInt32(dvRec["Transact"]) == 1) { rec.LoadByPrimaryKey(Convert.ToInt32(dvRec["ID"])); balanceAmount = balanceAmount + Convert.ToInt64(dvRec["Quantity"]); balanceAm = (balanceAmount > 0) ? balanceAmount.ToString("#,###") : "0"; itm.LoadByPrimaryKey(rec.ItemID); if (itm.NeedExpiryBatch) { ddDate = rec.ExpDate.ToString("MMM dd,yyyy"); batNo = rec.BatchNo; } Supplier sup = new Supplier(); sup.LoadByPrimaryKey(rec.SupplierID); object[] obj = { Convert.ToDateTime(dvRec["Date"]).ToString("MM dd,yyyy"), dvRec["RefNo"], Convert.ToInt64(dvRec["Quantity"]).ToString("#,###"), "", Convert.ToDouble(dvRec["Cost"]).ToString("C"), balanceAm, batNo, ddDate, sup.CompanyName}; dtbin.Rows.Add(obj); //For stock Out dtT = Convert.ToDateTime(dvRec["Date"]); //int monb = (dtT.Month < 11) ? dtT.Month + 2 : ((dtT.Month == 11) ? 1 : 2); //int yer = (dtT.Month < 11) ? dtT.Year : dtT.Year - 1; Int64 bBal = bal.GetSOH(itemId, storeId, dtT.Month, dtT.Year); Int64 bAmc = bal.CalculateAMC(itemId, storeId, dtT.Month, dtT.Year); mincon = bAmc * info.Min; maxcon = bAmc * info.Max; eopcon = bAmc * info.EOP; if (balanceAmount == 0) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cStockout[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cStockout[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cStockout[2]++; } } else if (balanceAmount > maxcon) { //For Over stock if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cOverStock[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cOverStock[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cOverStock[2]++; } }//For Below min else if (balanceAmount > eopcon && balanceAmount <= mincon) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cBelowMin[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cBelowMin[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cBelowMin[2]++; } } else if (balanceAmount > 0 && balanceAmount < eopcon) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cNearStockOut[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cNearStockOut[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cNearStockOut[2]++; } } }else if(Convert.ToInt32(dvRec["Transact"]) == 0) { //DateTime dteIss = Convert.ToDateTime(drIss["Date"]); //DateTime dteRec = Convert.ToDateTime(dvRec["Date"]); //DateTime dTomorow = new DateTime(dtCurrent.Year, dtCurrent.Month, dtCurrent.Day + 1); //DateTime dteNextRec = (i <= dtRec.Rows.Count - 1) ? Convert.ToDateTime(dtRec.Rows[i]["Date"]) : dTomorow; iss.LoadByPrimaryKey(Convert.ToInt32(dvRec["ID"])); try { rec.LoadByPrimaryKey(iss.RecievDocID); } catch { rec.GetTransactionByBatch(itemId, dvRec["BatchNo"].ToString(), storeId); } ReceivingUnits recUnit = new ReceivingUnits(); recUnit.LoadByPrimaryKey(iss.ReceivingUnitID); string issuedTo = recUnit.Name; balanceAmount = balanceAmount - Convert.ToInt64(dvRec["Quantity"]); balanceAm = (balanceAmount > 0) ? balanceAmount.ToString("#,###") : "0"; itm.LoadByPrimaryKey(iss.ItemID); if (itm.NeedExpiryBatch) { ddDate = ((rec.RowCount > 0) ? rec.ExpDate.ToString("MMM dd,yyyy") : ""); ; batNo = dvRec["BatchNo"].ToString(); //rec.BatchNo; } else { ddDate = ""; batNo = ""; } object[] obj = { Convert.ToDateTime(dvRec["Date"]).ToString("MM dd,yyyy"), dvRec["RefNo"], "", Convert.ToInt64(dvRec["Quantity"]).ToString("#,###"), Convert.ToDouble(dvRec["Cost"]).ToString("C"), balanceAm,batNo, ddDate,issuedTo}; dtbin.Rows.Add(obj); //For stock Out dtT = Convert.ToDateTime(dvRec["Date"]); //int monb1 = (dtT.Month < 11) ? dtT.Month + 2 : ((dtT.Month == 11) ? 1 : 2); //int yer1 = (dtT.Month < 11) ? dtT.Year : dtT.Year - 1; Int64 bBal = bal.GetSOH(itemId, storeId, dtT.Month, dtT.Year); Int64 bAmc = bal.CalculateAMC(itemId, storeId, dtT.Month, dtT.Year); mincon = bAmc * info.Min; maxcon = bAmc * info.Max; eopcon = bAmc * info.EOP; if (balanceAmount == 0) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cStockout[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cStockout[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cStockout[2]++; } } else if (balanceAmount > maxcon) { //For Over stock if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cOverStock[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cOverStock[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cOverStock[2]++; } }//For Below min else if (balanceAmount > eopcon && balanceAmount <= mincon) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cBelowMin[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cBelowMin[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cBelowMin[2]++; } } else if (balanceAmount > 0 && balanceAmount < eopcon) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cNearStockOut[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cNearStockOut[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cNearStockOut[2]++; } } } foreach (DataRow drDis in dtDis.Rows) { DateTime dteDis = Convert.ToDateTime(drDis["Date"]); DateTime dteRec = Convert.ToDateTime(dvRec["Date"]); res.LoadByPrimaryKey(Convert.ToInt32(drDis["ReasonId"])); rec.GetTransactionByBatch(itemId,drDis["BatchNo"].ToString(),storeId); DateTime dteNextRec = (i <= dtRec.Rows.Count - 1) ? Convert.ToDateTime(dtRec.Rows[i]["Date"]) : dtCurrent; if ((dteRec <= dteDis) && (dteDis < dteNextRec)) { if (Convert.ToBoolean(drDis["Losses"])) { balanceAmount = balanceAmount - Convert.ToInt64(drDis["Quantity"]); balanceAm = (balanceAmount > 0) ? balanceAmount.ToString("#,###") : "0"; object[] objIss = { Convert.ToDateTime(drDis["Date"]).ToString("MM dd,yyyy"), drDis["RefNo"], "", Convert.ToInt64(drDis["Quantity"]).ToString("#,###"), Convert.ToDouble(drDis["Cost"]).ToString("C"), balanceAm, drDis["BatchNo"], rec.ExpDate.ToString("MMM dd,yyyy"), res.Reason}; dtbin.Rows.Add(objIss); } else { balanceAmount = balanceAmount + Convert.ToInt64(drDis["Quantity"]); balanceAm = (balanceAmount > 0) ? balanceAmount.ToString("#,###") : "0"; object[] objIss2 = { Convert.ToDateTime(drDis["Date"]).ToString("MM dd,yyyy"), drDis["RefNo"], Convert.ToInt64(drDis["Quantity"]).ToString("#,###"), "", Convert.ToDouble(drDis["Cost"]).ToString("C"), balanceAm, drDis["BatchNo"], rec.ExpDate.ToString("MMM dd,yyyy"), res.Reason}; dtbin.Rows.Add(objIss2); } dtT = Convert.ToDateTime(dvRec["Date"]); Int64 bAmc = bal.CalculateAMC(itemId, storeId, dtT.Month, dtT.Year); mincon = bAmc * info.Min; maxcon = bAmc * info.Max; eopcon = bAmc * info.EOP; if (balanceAmount == 0) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cStockout[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cStockout[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cStockout[2]++; } } else if (balanceAmount > maxcon) { //For Over stock if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cOverStock[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cOverStock[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cOverStock[2]++; } }//For Below min else if (balanceAmount > eopcon && balanceAmount <= mincon) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cBelowMin[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cBelowMin[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cBelowMin[2]++; } } else if (balanceAmount > 0 && balanceAmount < eopcon) { if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(90))) { cNearStockOut[0]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(180))) { cNearStockOut[1]++; } else if (Convert.ToDateTime(dvRec["Date"]) <= dtCurrent && Convert.ToDateTime(dvRec["Date"]) >= dtCurrent.Subtract(TimeSpan.FromDays(360))) { cNearStockOut[2]++; } } } } } transactionGrid.DataSource = dtbin; //Stock Out lblThreeStockout.Text = cStockout[0].ToString(); lblSixStockOut.Text = (cStockout[0] + cStockout[1]).ToString(); lblTwelveStockOut.Text = (cStockout[0] + cStockout[1] + cStockout[2]).ToString(); //Over Stock lblThreeOverStock.Text = cOverStock[0].ToString(); lblSixOverStock.Text = (cOverStock[0] + cOverStock[1]).ToString(); lblTwelveOverStock.Text = (cOverStock[0] + cOverStock[1] + cOverStock[2]).ToString(); //Near eop lblThreeNearStock.Text = cNearStockOut[0].ToString(); lblSixNearStock.Text = (cNearStockOut[0] + cNearStockOut[1]).ToString(); lblTwelveNear.Text = (cNearStockOut[0] + cNearStockOut[1] + cNearStockOut[2]).ToString(); //Below Min lblThreeBelowMin.Text = cBelowMin[0].ToString(); lblSixBelowMin.Text = (cBelowMin[0] + cBelowMin[1]).ToString(); lblTwelveBelowMin.Text = (cBelowMin[0] + cBelowMin[1] + cBelowMin[2]).ToString(); } */ /// <summary> /// Generates the bin card transaction /// </summary> private void GenerateBinCard() { #region NewCode ////Get the beginning balance. //Int64 begBalance = 0; //YearEnd yearEnd = new YearEnd(); //begBalance = yearEnd.GetBeginningBalance(_storeId, _itemId); //txtBBalance.Text = begBalance.ToString(); ////Get the bin card. //Balance balance = new Balance(); //gridItemsList.DataSource = balance.GetBinCard(_storeId, _itemId); //return; #endregion #region Old Code ReceiveDoc rec = new ReceiveDoc(); IssueDoc iss = new IssueDoc(); Disposal dis = new Disposal(); DisposalReasons res = new DisposalReasons(); Balance bal = new Balance(); GeneralInfo info = new GeneralInfo(); YearEnd yEnd = new YearEnd(); Items itm = new Items(); info.LoadAll(); if (cboFiscalYear.SelectedItem == null) PopulateBinCardYearCombo(); //_year = Convert.ToInt32(cboFiscalYear.SelectedItem); _year = Convert.ToInt32(cboYear.SelectedItem); int yer = _year; //int mth = (_year > _dtCurrent.Year) ? _dtCurrent.Month : 10; int mth = _dtCurrent.Month; EthiopianDate.EthiopianDate ethioDate = new EthiopianDate.EthiopianDate(_year, 1, 1); //if (_dtCurrent.Month < 11) //{ // yer = _year; //} //else //{ // yer = _year - 1; //} //DataTable dtRec = rec.GetAllTransaction(_itemId, _storeId, ethioDate.Month,ethioDate.Year); DataTable dtRec = rec.GetAllTransaction(_itemId, _storeId, ethioDate.FiscalYear); DataTable dtIss = iss.GetTransactionByItemId(_storeId, _itemId, ethioDate.FiscalYear); DataTable dtDis = dis.GetTransactionByItemId(_storeId, _itemId, ethioDate.FiscalYear); Int64[] cStockout = { 0, 0, 0 }; Int64[] cOverStock = { 0, 0, 0 }; Int64[] cNearStockOut = { 0, 0, 0 }; Int64[] cBelowMin = { 0, 0, 0 }; //DateTime dtThree = dtCurrent.AddMonths(3); DataTable dtbin = new DataTable(); string[] col = { "Date", "RefNo", "Receive", "Issue", "Unit Price", "Balance", "Batch No", "Expiry Date", "ToFrom" }; foreach (string str in col) { dtbin.Columns.Add(str); } int i = 0; Int64 bBalance = 0; dtDate.Value = DateTime.Now; dtDate.CustomFormat = "MM/dd/yyyy"; _dtCurrent = ConvertDate.DateConverter(dtDate.Text); //bBalance = yEnd.GetBBalance(_year, _storeId, _itemId, _dtCurrent.Month); bBalance = yEnd.GetBBalance(_year, _storeId, _itemId); Int64 balanceAmount = bBalance; DateTime dtT = new DateTime(); string balanceAm = ""; string ddDate = ""; string batNo = ""; foreach (DataRow dvRec in dtRec.Rows) { i++; if (Convert.ToInt32(dvRec["Transact"]) == 1) { rec.LoadByPrimaryKey(Convert.ToInt32(dvRec["ID"])); if (dvRec["Quantity"] == DBNull.Value) { dvRec["Quantity"] = 0; } balanceAmount = balanceAmount + Convert.ToInt64(dvRec["Quantity"]); balanceAm = (balanceAmount > 0) ? balanceAmount.ToString("#,###") : "0"; itm.LoadByPrimaryKey(rec.ItemID); if (itm.NeedExpiryBatch) { if (!rec.IsColumnNull("ExpDate")) { ddDate = rec.ExpDate.ToString("MMM dd,yyyy"); batNo = rec.BatchNo; } } Supplier sup = new Supplier(); sup.LoadByPrimaryKey(rec.SupplierID); object[] obj = { Convert.ToDateTime(dvRec["Date"]).ToString("MM dd,yyyy"), dvRec["RefNo"], Convert.ToInt64(dvRec["Quantity"]).ToString("#,###"), "", Convert.ToDouble(dvRec["Cost"]).ToString("C"), balanceAm, batNo, ddDate, sup.CompanyName }; dtbin.Rows.Add(obj); //For stock Out dtT = Convert.ToDateTime(dvRec["Date"]); } else if (Convert.ToInt32(dvRec["Transact"]) == 0) { iss.LoadByPrimaryKey(Convert.ToInt32(dvRec["ID"])); try { rec.LoadByPrimaryKey(iss.RecievDocID); } catch { rec.GetTransactionByBatch(_itemId, dvRec["BatchNo"].ToString(), _storeId); } ReceivingUnits recUnit = new ReceivingUnits(); recUnit.LoadByPrimaryKey(iss.ReceivingUnitID); string issuedTo = recUnit.Name; balanceAmount = balanceAmount - Convert.ToInt64(dvRec["Quantity"]); balanceAm = (balanceAmount > 0) ? balanceAmount.ToString("#,###") : "0"; itm.LoadByPrimaryKey(iss.ItemID); if (itm.NeedExpiryBatch) { ddDate = ((rec.RowCount > 0) ? rec.ExpDate.ToString("MMM dd,yyyy") : ""); ; batNo = dvRec["BatchNo"].ToString(); //rec.BatchNo; } else { ddDate = ""; batNo = ""; } object[] obj = { Convert.ToDateTime(dvRec["Date"]).ToString("MM dd,yyyy"), dvRec["RefNo"], "", Convert.ToInt64(dvRec["Quantity"]).ToString("#,###"), Convert.ToDouble(dvRec["Cost"]).ToString("C"), balanceAm, batNo, ddDate, issuedTo }; dtbin.Rows.Add(obj); //For stock Out dtT = Convert.ToDateTime(dvRec["Date"]); } foreach (DataRow drDis in dtDis.Rows) { DateTime dteDis = Convert.ToDateTime(drDis["Date"]); DateTime dteRec = Convert.ToDateTime(dvRec["Date"]); res.LoadByPrimaryKey(Convert.ToInt32(drDis["ReasonId"])); rec.GetTransactionByBatch(_itemId, drDis["BatchNo"].ToString(), _storeId); DateTime dteNextRec = (i <= dtRec.Rows.Count - 1) ? Convert.ToDateTime(dtRec.Rows[i]["Date"]) : _dtCurrent; if ((dteRec <= dteDis) && (dteDis < dteNextRec)) { if (Convert.ToBoolean(drDis["Losses"])) { balanceAmount = balanceAmount - Convert.ToInt64(drDis["Quantity"]); balanceAm = (balanceAmount > 0) ? balanceAmount.ToString("#,###") : "0"; if (rec.RowCount > 0) { object[] objIss = { Convert.ToDateTime(drDis["Date"]).ToString("MM dd,yyyy"), drDis["RefNo"], "", Convert.ToInt64(drDis["Quantity"]).ToString("#,###"), Convert.ToDouble(drDis["Cost"]).ToString("C"), balanceAm, drDis["BatchNo"], rec.ExpDate.ToString("MMM dd,yyyy"), res.Reason }; dtbin.Rows.Add(objIss); } } else { balanceAmount = balanceAmount + Convert.ToInt64(drDis["Quantity"]); balanceAm = (balanceAmount > 0) ? balanceAmount.ToString("#,###") : "0"; object[] objIss2 = { Convert.ToDateTime(drDis["Date"]).ToString("MM dd,yyyy"), drDis["RefNo"], Convert.ToInt64(drDis["Quantity"]).ToString("#,###"), "", Convert.ToDouble(drDis["Cost"]).ToString("C"), balanceAm, drDis["BatchNo"], rec.ExpDate.ToString("MMM dd,yyyy"), res.Reason }; dtbin.Rows.Add(objIss2); } dtT = Convert.ToDateTime(dvRec["Date"]); } } } gridItemsList.DataSource = dtbin; #endregion }
internal static int ItemReceived(int itemID, int storeId) { string query = string.Format("select sum(Quantity) as Quantity from ReceiveDoc rd where ItemID = {0} and StoreID = {1}", itemID, storeId); ReceiveDoc rd = new ReceiveDoc(); rd.LoadFromRawSql(query); if (rd.RowCount > 0 && !rd.IsColumnNull("Quantity") && rd.Quantity > 0) { return 1; } return 0; }
private void grdViewSTVDetails_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { decimal invoicedQty; decimal receivedQty; decimal difference = 0; var row = grdViewSTVDetails.GetFocusedDataRow(); string guid = row["GUID"].ToString(); receiveDoc.FindByGUID(guid); if (!receiveDoc.IsColumnNull("InvoicedNoOfPack")) { invoicedQty = receiveDoc.InvoicedNoOfPack; receivedQty = receiveDoc.NoOfPack; difference = invoicedQty - receivedQty; } if (difference > 0) { lcDiscrepancy.Visibility = LayoutVisibility.Always; bool notEntered = true; bool isNewRow = true; if (receiveDocShortage.RowCount > 0) { var noOfDiscrepancyEntries = receiveDocShortage.CountByGUID(guid); if (receiveDocShortage.FindFirstByGUID(guid)) { notEntered = false; for (int i = 0; i < noOfDiscrepancyEntries; i++) { receiveDocShortage.SetColumn("ManufacturerName", Manufacturer.GetName(receiveDoc.ManufacturerId)); receiveDocShortage.SetColumn("UnitName", ItemUnit.GetUnitText(receiveDoc.UnitID)); receiveDocShortage.SetColumn("BatchNo", receiveDoc.GetColumn("BatchNo")); receiveDocShortage.SetColumn("ExpDate", receiveDoc.GetColumn("ExpDate")); receiveDocShortage.SetColumn("FullItemName", receiveDoc.GetColumn("FullItemName")); receiveDocShortage.SetColumn("StockCode", receiveDoc.GetColumn("StockCode")); receiveDocShortage.SetColumn("GUID", receiveDoc.GetColumn("GUID")); if (noOfDiscrepancyEntries > 1) { receiveDocShortage.SetColumnNull("NoOfPacks"); } else { receiveDocShortage.NoOfPacks = difference; } } } } if (receiveDocShortage.RowCount == 0 || notEntered) { //Prepare the columns used for display } if (notEntered) { receiveDocShortage.AddNew(); if (!receiveDocShortage.DefaultView.ToTable().Columns.Contains("FullItemName")) { receiveDocShortage.AddColumn("FullItemName", typeof(string)); receiveDocShortage.AddColumn("UnitName", typeof(string)); receiveDocShortage.AddColumn("ManufacturerName", typeof(string)); receiveDocShortage.AddColumn("StockCode", typeof(string)); receiveDocShortage.AddColumn("ExpDate", typeof(string)); receiveDocShortage.AddColumn("BatchNo", typeof(string)); receiveDocShortage.AddColumn("PalletLocationID", typeof(int)); receiveDocShortage.AddColumn("GUID", typeof(string)); } receiveDocShortage.SetColumn("FullItemName", receiveDoc.GetColumn("FullItemName")); receiveDocShortage.SetColumn("UnitName", receiveDoc.GetColumn("UnitName")); receiveDocShortage.SetColumn("ManufacturerName", receiveDoc.GetColumn("ManufacturerName")); receiveDocShortage.SetColumn("StockCode", receiveDoc.GetColumn("StockCode")); receiveDocShortage.SetColumn("ExpDate", receiveDoc.GetColumn("ExpDate")); receiveDocShortage.SetColumn("BatchNo", receiveDoc.GetColumn("BatchNo")); receiveDocShortage.SetColumn("GUID", receiveDoc.GetColumn("GUID")); receiveDocShortage.NoOfPacks = difference; } } else if (difference == 0 && receiveDocShortage.RowCount != 0) { RemoveFromDiscrepancy(guid); } if (receiveDocShortage.RowCount != 0) { grdDiscrepancy.DataSource = receiveDocShortage.DefaultView; } else { lcDiscrepancy.Visibility = LayoutVisibility.Never; } }
/// <summary> /// Needs to be the first function to be called when saving a new receive doc entry. /// </summary> /// <param name="rec"></param> /// <param name="receiptID"></param> /// <param name="dr"></param> private void FillInReceiveDocInformation(ReceiveDoc rec, int receiptID, DataRowView dr) { try { rec.GetColumn("GUID"); } catch { rec.AddColumn("GUID", typeof(string)); //rec.AddColumn("IsDamaged", typeof(bool)); //This is only used if the Check box is used to receive damaged receives (For SRM only) } rec.StoreID = Convert.ToInt32(lkAccounts.EditValue); rec.RefNo = txtRefNo.Text; rec.Remark = txtRemark.Text; rec.ReceivedBy = CurrentContext.LoggedInUserName; DateTime xx = dtRecDate.Value; dtRecDate.CustomFormat = "MM/dd/yyyy"; DateTime dtRec = new DateTime(); rec.Date = ConvertDate.DateConverter(dtRecDate.Text); dtRec = ConvertDate.DateConverter(dtRecDate.Text); rec.EurDate = BLL.DateTimeHelper.ServerDateTime; rec.ItemID = Convert.ToInt32(dr["ID"]); rec.NoOfPack = Convert.ToDecimal(dr["Pack Qty"]); rec.SetColumn("GUID", dr["GUID"].ToString()); rec.IsDamaged = Convert.ToBoolean(dr["IsDamaged"]); if (standardRecType == StandardReceiptType.iGRVOnline) { rec.SetColumn("PricePerPack", dr["Price/Pack"]); rec.SetColumn("Margin", dr["Margin"]); rec.SetColumn("UnitCost", dr["Price/Pack"]); } //TODO: This if is a garbage. Remove if (dr["InvoicedQty"] == DBNull.Value) { rec.InvoicedNoOfPack = rec.NoOfPack; } rec.InvoicedNoOfPack = srm ? Convert.ToDecimal(dr["IssuedQty"]) : Convert.ToDecimal(dr["OriginalInvoicedQty"]); rec.ManufacturerId = Convert.ToInt32(dr["Manufacturer"]); BLL.ItemManufacturer im = new BLL.ItemManufacturer(); im.LoadIMbyLevel(rec.ItemID, rec.ManufacturerId, 0); if (dr["UnitID"] != DBNull.Value) { // if unit has been set, pick the qty per pack from the unit rec.UnitID = Convert.ToInt32(dr["UnitID"]); ItemUnit itemUnit = new ItemUnit(); itemUnit.LoadByPrimaryKey(rec.UnitID); rec.QtyPerPack = itemUnit.QtyPerUnit; } else { rec.QtyPerPack = im.QuantityInBasicUnit; } rec.Quantity = rec.QuantityLeft = rec.NoOfPack * rec.QtyPerPack; try { if ((deliveryNoteType == DeliveryNoteType.NotSet)) { if (!BLL.Settings.HandleGRV && !srm) { rec.PricePerPack = Convert.ToDouble(dr["Price/Pack"]); double pre = (Convert.ToDouble(dr["Price/Pack"]) / 1); //rec.QtyPerPack); rec.Cost = pre; } rec.DeliveryNote = false; } else { rec.DeliveryNote = true; if (deliveryNoteType == DeliveryNoteType.Automatic) { rec.SetColumn("PricePerPack", dr["Price/Pack"]); rec.SetColumn("Margin", dr["Margin"]); rec.SetColumn("UnitCost", dr["Price/Pack"]); } } } catch { // catch the error if the recieve doesn't have cost information // NOTE: this shall never happen. } if (dr["Batch No"] != DBNull.Value) { rec.BatchNo = dr["Batch No"].ToString(); // receivingGrid.Rows[i].Cells[8].Value.ToString(); } if (dr["Expiry Date"] != DBNull.Value) { rec.ExpDate = Convert.ToDateTime(dr["Expiry Date"]); //receivingGrid.Rows[i].Cells[9].Value); } if (!srm) { rec.SupplierID = _supplierID; } else { rec.SupplierID = BLL.Supplier.CONSTANTS.RETURNED_FROM_FACILITY; //TODO: Returned From Supplier: To be removed. This is an unacceptable hack. rec.RefNo = lkSTVInvoiceNo.Text; if (string.IsNullOrEmpty(txtRemark.Text)) { XtraMessageBox.Show( "Please enter the reason for the SRM.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); throw new Exception("Reason not entered for SRM"); } else { rec.Remark = txtRemark.Text; } } rec.ReturnedStock = srm; if (srm && !chkSRMForOldSystemIssues.Checked) { rec.ReturnedFromIssueDocID = int.Parse(dr["IssueDocID"].ToString()); int issueDocID = int.Parse(dr["IssueDocID"].ToString()); BLL.IssueDoc iss = new IssueDoc(); iss.LoadByPrimaryKey(issueDocID); BLL.ReceiveDoc rd = new ReceiveDoc(); rd.LoadByPrimaryKey(iss.RecievDocID); //If it was a delivery note, then the return will not have price information associated with it. // HW-2189 decimal? UnitCost, SellingPrice, Margin; UnitCost = SellingPrice = Margin = null; if (!BLL.Settings.HandleGRV) { if (!iss.IsColumnNull("UnitCost") && iss.IsColumnNull("SellingPrice")) { UnitCost = iss.UnitCost; SellingPrice = iss.SellingPrice; Margin = !iss.IsColumnNull("Margin") ? iss.Margin : 0; } else if (!iss.IsColumnNull("Cost")) { Margin = !rd.IsColumnNull("Margin") ? Convert.ToDecimal(rd.Margin) : 0; SellingPrice = Convert.ToDecimal(iss.Cost / Convert.ToDouble(iss.NoOfPack)); UnitCost = BLL.Settings.IsCenter ? SellingPrice : SellingPrice / Convert.ToDecimal(Margin + 1); } } else { if (!iss.IsColumnNull("UnitCost") && iss.IsColumnNull("SellingPrice") && iss.UnitCost != 0 && iss.SellingPrice != 0) { UnitCost = iss.UnitCost; SellingPrice = iss.SellingPrice; Margin = !iss.IsColumnNull("Margin") ? iss.Margin : 0; } else if (!iss.IsColumnNull("Cost") && iss.Cost != 0) { Margin = !rd.IsColumnNull("Margin") ? Convert.ToDecimal(rd.Margin) : 0; SellingPrice = Convert.ToDecimal(iss.Cost / Convert.ToDouble(iss.NoOfPack)); UnitCost = BLL.Settings.IsCenter ? SellingPrice : SellingPrice / Convert.ToDecimal(Margin + 1); } } if (UnitCost.HasValue) { rec.PricePerPack = Convert.ToDouble(UnitCost); rec.Cost = Convert.ToDouble(UnitCost); rec.UnitCost = UnitCost.Value; } if (SellingPrice.HasValue) { rec.SellingPrice = Convert.ToDouble(SellingPrice); } if (Margin.HasValue) { rec.Margin = Convert.ToDouble(Margin); } if (!rd.IsColumnNull("SupplierID")) rec.SupplierID = rd.SupplierID; } rec.ReceiptID = receiptID; if (BLL.Settings.HandleGRV && !beginningBalance) { rec.RefNo = receiptID.ToString(); } else if (beginningBalance) { rec.RefNo = "BeginningBalance"; } //Needs to be fixed! Garbage string batch = DateTimeHelper.ServerDateTime.Day.ToString() + DateTimeHelper.ServerDateTime.Hour.ToString() + DateTimeHelper.ServerDateTime.Minute.ToString() + rec.ItemID.ToString(); rec.LocalBatchNo = batch; rec.Out = false; rec.IsApproved = false; if (dr["ShortageReasonID"] != DBNull.Value) { rec.ShortageReasonID = Convert.ToInt32(dr["ShortageReasonID"]); } var item = new Item(); item.LoadByPrimaryKey(Convert.ToInt32(dr["id"])); if (dr["ShortageReasonID"] == DBNull.Value && (item.NeedExpiryBatch || rec.ExpDate <= DateTimeHelper.ServerDateTime)) { rec.ShortageReasonID = ShortageReasons.Constants.DAMAGED; } dtRecDate.Value = xx; _receiptID = receiptID; //Assign it to the global variable so it can be used later on. }
private void PopulateListToGrid() { _dtRecGrid = new DataTable(); var itm = new Items(); var rec = new ReceiveDoc(); _tabPage = 1; tabControl1.SelectedTabPageIndex = 1; if (_dtRecGrid.Columns.Count == 0) { string[] str = { "ID", "Stock Code", "Item Name", "Batch No", "Unit", "BU Qty", "Price", "Qty To Transfer", "RecID", "UnitID"}; foreach (string col in str) { _dtRecGrid.Columns.Add(col); } } int count = 1; foreach (DataRow dr in _dtSelectedTable.Rows) { rec.LoadByPrimaryKey(Convert.ToInt32(dr["ReceiveID"])); int id = Convert.ToInt32(dr["ItemID"]); double price = 0; if (!rec.IsColumnNull("Cost")) { price = (rec.RowCount > 0) ? Convert.ToDouble(rec.Cost) * rec.QuantityLeft : 0; } DataTable dtItm = itm.GetItemById(id); string itemName = dtItm.Rows[0]["FullItemName"].ToString(); object[] obj; switch (VisibilitySetting.HandleUnits) { case 1: obj = new object[] { id, dtItm.Rows[0]["StockCode"].ToString(),itemName, rec.BatchNo, dtItm.Rows[0]["Unit"].ToString(),rec.QuantityLeft, price, "",Convert.ToInt32(dr["ReceiveID"]),0}; break; case 2: obj = new object[] { id, dtItm.Rows[0]["StockCode"].ToString(),itemName, rec.BatchNo, dtItm.Rows[0]["Unit"].ToString(),rec.QuantityLeft, price, "",Convert.ToInt32(dr["ReceiveID"]),rec.UnitID }; break; default: obj = new object[] { id, dtItm.Rows[0]["StockCode"].ToString(),itemName, rec.BatchNo, dtItm.Rows[0]["Unit"].ToString(),rec.QuantityLeft, price, "",Convert.ToInt32(dr["ReceiveID"]),rec.UnitID }; break; } _dtRecGrid.Rows.Add(obj); count++; } receivingGrid.DataSource =_dtRecGrid; txtTranferFrom.Text = lkFromStore.Text; }
/// <summary> /// /// </summary> /// <param name="refNo"></param> /// <param name="userID"></param> /// <param name="shortageAndDamage"></param> /// <param name="preGRVOrGRVOrSRM">1-PreGRV, 2-GRV, 3-SRM, 4-iGRV, 5-DeliveryNote</param> /// <param name="IDToBePrintedOut">Only applicable for the shortage where we need to show the same ID</param> /// <returns></returns> public int PrepareDataForPrintout(int ReceiptID, int?userID, bool shortageAndDamage, int preGRVOrGRVOrSRM, int?IDToBePrintedOut, int?isReprintOfRCPrintoutID, FiscalYear fiscalYear) { string query = ""; if (!shortageAndDamage && preGRVOrGRVOrSRM != 3) { query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintout(ReceiptID, StorageType.Quaranteen); } else if (preGRVOrGRVOrSRM == 3)//SRM { BLL.ReceiveDoc rd = new ReceiveDoc(); rd.LoadAllByReceiptID(ReceiptID); if (rd.IsColumnNull("ReturnedFromIssueDocID")) //This is an SRM done for an issue from the old system. (The issue was done using the old system) { query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintoutIssueDone(ReceiptID); } else //This is a normal SRM (Both the issue and the receive were done using this system) { query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintoutIssueAndReceiveDone(ReceiptID); } } else { //Cost Calculations should be removed from the query below query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintout(ReceiptID); } this.LoadFromRawSql(query); if (this.RowCount == 0) { if (ReceiveDoc.IsThereShortageOrDamage(ReceiptID)) { query = HCMIS.Repository.Queries.ReceiptConfirmationPrintout.SelectPrepareDataForPrintout(ReceiptID); this.LoadFromRawSql(query); } if (this.RowCount == 0) { throw new Exception("No Data To Print, please receive Document before Trying again"); } } this.Rewind(); this.AddColumn("LineNum", typeof(int)); this.AddColumn("PrintedGRVNumber", typeof(string)); BLL.Receipt receipt = new Receipt(); int receiptID = int.Parse(this.GetColumn("ReceiptID").ToString()); receipt.LoadByPrimaryKey(receiptID); int receiptTypeID = receipt.ReceiptTypeID; int printedGRVNumber; int lineNum = 1; int totalItems = 0; BLL.ReceiptConfirmationPrintout rcp = new ReceiptConfirmationPrintout(); int?supplierID = null; if (preGRVOrGRVOrSRM != 3) { supplierID = this.SupplierID; } if (IDToBePrintedOut.HasValue) { printedGRVNumber = IDToBePrintedOut.Value; } else { printedGRVNumber = rcp.AddNew(this.StoreID, supplierID, receiptTypeID == 2 ? null : userID, receipt.ID, preGRVOrGRVOrSRM, isReprintOfRCPrintoutID); } if (!IDToBePrintedOut.HasValue) //We want to save a new receipt confirmation printout only when a new ID is generated (Not when an ID to be printed has been passed as a parameter) { //For delivery note only, we don't save the saved by user id so that we don't say GRV has been printed. } while (!this.EOF) { this.SetColumn("LineNum", lineNum); lineNum++; this.SetColumn("PrintedGRVNumber", fiscalYear.GetCode(printedGRVNumber)); totalItems++; this.MoveNext(); } return(printedGRVNumber); }
private void btnCommit_Click(object sender, EventArgs e) { if (ValidateQuarantine()) { MyGeneration.dOOdads.TransactionMgr transaction = MyGeneration.dOOdads.TransactionMgr.ThreadTransactionMgr(); transaction.BeginTransaction(); if (DialogResult.Yes == XtraMessageBox.Show("Are you sure you want to commit the Loss and Adjustment on this screen?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { // do the actual commit here. int printNubmer = InternalTransfer.GetNewPrintNumber() + 1; PalletLocation pl = new PalletLocation(); Pallet p = new Pallet(); ReceiveDoc rdoc = new ReceiveDoc(); ReceivePallet rp = new ReceivePallet(); for (int i = 0; i < gridView1.RowCount; i++) { DataRow dr = gridView1.GetDataRow(i); Double writeoff = 0; Double reLocate = 0; try { if (dr["WriteOff"] != DBNull.Value) { writeoff = Double.Parse(dr["WriteOff"].ToString()); } if (dr["ReLocate"] != DBNull.Value) { reLocate = Double.Parse(dr["ReLocate"].ToString()); } } catch (Exception exc) { } if(dr["WriteOff"] != DBNull.Value & writeoff>0) { if (Double.Parse(dr["WriteOff"].ToString()) > Double.Parse(dr["Balance"].ToString())) { XtraMessageBox.Show("Couldn't commit to the numbers you specified. Please specify number less than the balance.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } int writeoffAmout = Convert.ToInt32(dr["WriteOff"]); int qtyPerPack = Convert.ToInt32(dr["QtyPerPack"]); writeoffAmout *= qtyPerPack; rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"])); rdoc.LoadByPrimaryKey(rp.ReceiveID); string x = dr["NewPalletLocation"].ToString(); rp.Balance -= writeoffAmout; try { // rp.ReceivedQuantity -= writeoffAmout; } catch { } rdoc.QuantityLeft -= writeoffAmout; ReceivePallet nrp =new ReceivePallet(); nrp.AddNew(); nrp.ReceiveID = rp.ReceiveID; nrp.PalletID = pl.GetpalletidbyPalletLocationOrgetnew(int.Parse(dr["NewPalletLocation"].ToString())); //nrp.ReceivedQuantity = rp.ReceivedQuantity; nrp.Balance = writeoffAmout; nrp.ReservedStock = 0; //nrp.ReserveOrderID = rp.ReserveOrderID; nrp.BoxSize = rp.BoxSize; nrp.PalletLocationID = int.Parse(dr["NewPalletLocation"].ToString()); nrp.IsOriginalReceive = rp.IsOriginalReceive; BLL.LossAndAdjustment d = new BLL.LossAndAdjustment(); d.AddNew(); d.GenerateRefNo(); d.ItemID = Convert.ToInt32(dr["ItemID"]); d.ReasonId = Convert.ToInt32(dr["Reason"]); d.RecID = rdoc.ID; d.Quantity = writeoffAmout; d.BatchNo = rdoc.BatchNo; CalendarLib.DateTimePickerEx edate = new CalendarLib.DateTimePickerEx(); edate.Value = DateTime.Today; //TODO: fix to an ethiopian date here edate.CustomFormat = "MM/dd/yyyy"; d.Date = ConvertDate.DateConverter(edate.Text); d.EurDate = DateTime.Today; d.Cost = rdoc.IsColumnNull("Cost")? 0: Math.Abs(rdoc.Cost * writeoffAmout); d.StoreId = rdoc.StoreID; d.Losses = true; //todo: d.ApprovedBy = CurrentContext.UserId.ToString(); //d.Remarks InternalTransfer it =new InternalTransfer(); it.AddNew(); it.ItemID = d.ItemID; it.FromPalletLocationID = pl.GetPalletLocationIDByPalletID(int.Parse(dr["PalletID"].ToString())); it.ToPalletLocationID = nrp.PalletLocationID; it.BatchNumber = d.BatchNo; if (!rdoc.IsColumnNull("ExpDate")) { it.ExpireDate = rdoc.ExpDate; } it.ReceiveDocID = rdoc.ID; it.ManufacturerID = rdoc.ManufacturerId; it.QtyPerPack = Convert.ToInt32(dr["QtyPerPack"]); it.Packs = rdoc.NoOfPack; it.QuantityInBU = nrp.Balance; LossAndAdjustmentReason r = new LossAndAdjustmentReason(); it.Type = r.GetReasonByID(d.ReasonId); // d.Save(); rdoc.Save(); rp.Save(); rdoc.QuantityLeft += writeoffAmout; rdoc.Save(); nrp.Save(); it.Save(); int xs = it.ID; } else if (dr["ReLocate"] != DBNull.Value & reLocate > 0) { if (dr["ReLocate"] != DBNull.Value) { int amount = Convert.ToInt32(dr["ReLocate"]); int qtyPerPack = Convert.ToInt32(dr["QtyPerPack"]); amount *= qtyPerPack; rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"])); rdoc.LoadByPrimaryKey(rp.ReceiveID); int palletLocationID = Convert.ToInt32(dr["PalletLocationID"]); int qPalletLocationID = PalletLocation.GetQuaranteenPalletLocationByPalletLocationID(palletLocationID);//PalletLocation.GetQuaranteenPalletLocation(Convert.ToInt32(dr["ID"])); pl.LoadByPrimaryKey(qPalletLocationID); ReceivePallet rp2 = new ReceivePallet(); ReceiveDoc rd = new ReceiveDoc(); Pallet pallet = new Pallet(); rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"])); rd.LoadByPrimaryKey(rp.ReceiveID); pallet.AddNew(); Item item = new Item(); item.LoadByPrimaryKey(rdoc.ItemID); if (item.StorageTypeID.ToString() == StorageType.BulkStore) { pallet.PalletNo = Pallet.GetLastPanelNumber(); } pallet.Save(); rp2.AddNew(); rp2.PalletID = pl.GetpalletidbyPalletLocationOrgetnew(int.Parse(dr["NewPalletLocation"].ToString()));//pallet.ID; rp2.ReceiveID = rp.ReceiveID; rp2.IsOriginalReceive = rp.IsOriginalReceive; // calculate the new balance BLL.ItemManufacturer im = new BLL.ItemManufacturer(); //im.LoadDefaultReceiving(rd.ItemID, Convert.ToInt32(dr["ManufacturerID"])); //im.LoadIMbyLevel(rd.ItemID, Convert.ToInt32(dr["ManufacturerID"]), Convert.ToInt32(dr["BoxLevel"])); //int packqty = (amount / im.QuantityInBasicUnit); rd.QuantityLeft -= amount; rp.Balance -= amount; rd.Save(); rp.Save(); rd.QuantityLeft += amount; rp2.Balance = amount;//packqty * im.QuantityInBasicUnit; rd.Save(); rp2.BoxSize = rp.BoxSize; rp2.ReservedStock = 0; rp2.PalletLocationID= int.Parse(dr["NewPalletLocation"].ToString()); rp2.Save(); pl.Confirmed = false; pl.Save(); // select the new pallet location here. /* XtraForm xdb = new XtraForm(); xdb.Controls.Add(panelControl2); Item itms= new Item(); itms.GetItemByPrimaryKey(Convert.ToInt32(dr["ItemID"])); lblItemName.Text = itms.FullItemName; panelControl2.Visible = true; panelControl2.Dock = DockStyle.Fill; xdb.Text = "Select Location for relocated Item"; lkLocation.Properties.DataSource = PalletLocation.GetAllFreeFor(Convert.ToInt32(dr["ItemID"])); xdb.ShowDialog(); PalletLocation pl2 = new PalletLocation(); pl2.LoadByPrimaryKey(Convert.ToInt32(lkLocation.EditValue)); pl2.PalletID = pallet.ID; pl2.Confirmed = false; pl2.Save(); */ InternalTransfer it = new InternalTransfer(); it.AddNew(); it.ItemID = rd.ItemID; it.BoxLevel = 0;// im.PackageLevel; //it.ExpireDate = rd.ExpDate; if (!rd.IsColumnNull("ExpDate")) { it.ExpireDate = rd.ExpDate; } it.BatchNumber = rd.BatchNo; it.ManufacturerID = Convert.ToInt32(dr["ManufacturerID"]);//im.ManufacturerID; it.FromPalletLocationID = qPalletLocationID; it.ToPalletLocationID = int.Parse(dr["NewPalletLocation"].ToString()); //pl2.ID; it.QtyPerPack = 1; //it.Packs = pack qty; it.ReceiveDocID = rp.ReceiveID; it.QuantityInBU = amount;// it.QtyPerPack; it.Type = "ReLocation"; it.IssuedDate = DateTime.Today; it.Status = 0; it.PrintNumber = printNubmer; it.Save(); } } } transaction.CommitTransaction(); BindQuarantine(); XtraMessageBox.Show("Quarantine Write off/Adjustment was commitd.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
private void btnMoveToQuaranteen_Click(object sender, EventArgs e) { if (ValidateMoveToQuaranteen()) { if (DialogResult.Yes == XtraMessageBox.Show("Are you sure you want to move the items to Quarantine", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { InternalItemMovements ims = new InternalItemMovements(); PalletLocation pl = new PalletLocation(); int printNubmer = InternalTransfer.GetNewPrintNumber() + 1 ; for (int i = 0; i < gridView3.RowCount; i++) { DataRow dr = gridView3.GetDataRow(i); if (dr["Loss"] != DBNull.Value) { int amount = Convert.ToInt32(dr["Loss"]); int palletLocationID = Convert.ToInt32(dr["PalletLocationID"]); ReceivePallet rp = new ReceivePallet(); ReceiveDoc rdoc = new ReceiveDoc(); rp.LoadByPrimaryKey(Convert.ToInt32(dr["ReceivePalletID"])); rdoc.LoadByPrimaryKey(rp.ReceiveID); amount *= rdoc.QtyPerPack; if (rp.Balance - amount < rp.ReservedStock) { //Item has been reserved for a facility. This needs to be handled. DataTable dtble = rp.GetFacilitiesItemsReservedFor(); string facilities = ""; foreach(DataRow dRow in dtble.Rows) { if (dr != null) facilities += dRow["Name"].ToString() + System.Environment.NewLine; } XtraMessageBox.Show("You cannot fill in a loss because the item in this location has been reserved to the following facilities:" + System.Environment.NewLine + facilities, "Exisiting reservations must be cancelled", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } var receiveDocID = Convert.ToInt32(dr["ID"]); var rec = new ReceiveDoc(); rec.LoadByPrimaryKey(receiveDocID); int qPalletLocationID = PalletLocation.GetQuaranteenPalletLocation(rec.PhysicalStoreID); pl.LoadByPrimaryKey(qPalletLocationID); if (pl.IsColumnNull("PalletID")) { Pallet p = new Pallet(); p.AddNew(); p.StorageTypeID = Convert.ToInt32( StorageType.Quaranteen); p.Save(); pl.PalletID = p.ID; pl.Save(); } ReceivePallet rp2 = new ReceivePallet(); ReceiveDoc rd = new ReceiveDoc(); rd.LoadByPrimaryKey(rp.ReceiveID); rp2.AddNew(); rp2.PalletID = pl.PalletID; rp2.ReceiveID = rp.ReceiveID; rp2.PalletLocationID = pl.ID; // calculate the new balance BLL.ItemManufacturer im = new BLL.ItemManufacturer(); //im.LoadDefaultReceiving(rd.ItemID, Convert.ToInt32(dr["ManufacturerID"])); if (dr["BoxLevel"] == DBNull.Value) { dr["BoxLevel"] = 0; } im.LoadIMbyLevel(rd.ItemID, Convert.ToInt32(dr["ManufacturerID"]), Convert.ToInt32(dr["BoxLevel"])); int packqty = (amount / im.QuantityInBasicUnit); rp2.ReservedStock = 0; BLL.ReceivePallet.MoveBalance(rp, rp2, amount); //rp2.Balance = amount; //rp.Balance -= rp2.Balance; //rp.Save(); //rp2.Save(); pl.Confirmed = false; pl.Save(); if (rp.Balance == 0 ) { PalletLocation.GarbageCollection(); } InternalTransfer it = new InternalTransfer(); it.AddNew(); it.ItemID = rd.ItemID; it.BoxLevel = im.PackageLevel; if (!rd.IsColumnNull("ExpDate")) { it.ExpireDate = rd.ExpDate; } it.BatchNumber = rd.BatchNo; it.ManufacturerID = im.ManufacturerID; it.FromPalletLocationID = palletLocationID; it.ToPalletLocationID = qPalletLocationID; it.QtyPerPack = im.QuantityInBasicUnit; it.Packs = packqty; it.ReceiveDocID = rp.ReceiveID; it.QuantityInBU = rp2.Balance; //it.Packs * it.QtyPerPack; it.Type = "ToQuaranteen"; it.IssuedDate = DateTime.Today; it.Status = 0; it.PrintNumber = printNubmer; it.Save(); } } gridConfirmationControl.DataSource = InternalTransfer.GetAllTransfers("ToQuaranteen"); PopulateItemDetails(); XtraMessageBox.Show("Your items are marked for movement to Quarantine, please go to Internal Movements page to confirm!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
/// <summary> /// Populate the grid with the selected items. /// </summary> private void PopulateGridList() { dtRecGrid = new DataTable(); Items itm = new Items(); ReceiveDoc rec = new ReceiveDoc(); tabPage = 1; tabControl1.SelectedTabPageIndex = 1; if (dtRecGrid.Columns.Count == 0) { string[] str = { "ID", "Stock Code", "Item Name", "Batch No", "Unit", "BU Qty", "Price", "Losses", "Adjustment", "RecID", "Reason", "UnitID"}; foreach (string col in str) { dtRecGrid.Columns.Add(col); } } int count = 1; foreach (DataRow dr in dtSelectedTable.Rows) { rec.LoadByPrimaryKey(Convert.ToInt32(dr["ReceiveID"])); int id = Convert.ToInt32(dr["ItemID"]); double price = 0; if (!rec.IsColumnNull("Cost")) { price = (rec.RowCount > 0) ? Convert.ToDouble(rec.Cost) * rec.QuantityLeft : 0; } DataTable dtItm = itm.GetItemById(id); string itemName = dtItm.Rows[0]["FullItemName"].ToString(); var obj = new object[] { }; switch (VisibilitySetting.HandleUnits) { case 1: obj = new object[] { id, dtItm.Rows[0]["StockCode"].ToString(), itemName, rec.BatchNo, dtItm.Rows[0]["Unit"].ToString(), rec.QuantityLeft, price, "", "", Convert.ToInt32(dr["ReceiveID"]), 0, 0 }; break; case 2: obj = new object[] { id, dtItm.Rows[0]["StockCode"].ToString(), itemName, rec.BatchNo, dtItm.Rows[0]["Unit"].ToString(), rec.QuantityLeft, price, "", "", Convert.ToInt32(dr["ReceiveID"]), 0, rec.UnitID }; break; default: obj = new object[] { id, dtItm.Rows[0]["StockCode"].ToString(), itemName, rec.BatchNo, dtItm.Rows[0]["Unit"].ToString(), rec.QuantityLeft, price, "", "", Convert.ToInt32(dr["ReceiveID"]), 0, rec.UnitID }; break; } dtRecGrid.Rows.Add(obj); count++; } //var disRes = new DisposalReasons(); //var allreasons = disRes.GetAllReasons(); //reasonBindingSource.DataSource = allreasons.DefaultView; AdjustmentGrid.DataSource = dtRecGrid; cboStoreConfi.Text = cboStores.Text; }