public RedirectToRouteResult SaveEdit(string[] arrQty, string taData)
        {
            Session["poDetailsEditMode"] = false;

            List <POFullDetail> poFullDetailList = (List <POFullDetail>)Session["POItems"];
            string poNumber   = (string)Session["poNumber"];
            int    arrayCount = 0;

            using (SSISdbEntities m = new SSISdbEntities())
            {
                foreach (POFullDetail p in poFullDetailList)
                {
                    PODetail pod = m.PODetails.Where(x => x.ItemCode == p.ItemCode && x.PONumber == p.PONumber).FirstOrDefault();
                    pod.QuantityBackOrdered = Convert.ToInt32(arrQty[arrayCount]);
                    pod.QuantityOrdered     = pod.QuantityBackOrdered;
                    m.SaveChanges();
                    arrayCount++;

                    p.QuantityOrdered = pod.QuantityBackOrdered;
                }
                if (taData != null)
                {
                    POHeader ph = m.POHeaders.Where(x => x.PONumber == poNumber).FirstOrDefault();
                    ph.Remarks = taData;
                    m.SaveChanges();
                    Session["PORemarks"] = taData;
                }
            }
            Session["POItems"]    = poFullDetailList;
            Session["POListPage"] = "2";

            return(RedirectToAction("Purchase", "Store"));
        }
Ejemplo n.º 2
0
 public static PurchaseOrder UpdatePO(Dictionary <string, string> keyvalues)
 {
     try
     {
         string        PONumber = keyvalues["ponumber"];
         PurchaseOrder PO       = GetPO(PONumber);
         PO.Lead              = UserManager.GetUserRef(keyvalues["Lead"]);
         PO.PODate            = keyvalues.ContainsKey("PODate") ? DateTime.Parse(keyvalues["PODate"]) : DateTime.Now;
         PO.Origin            = Common.GetOrigin(keyvalues["Origin"]);
         PO.Size              = Common.GetSize(keyvalues["Size"]);
         PO.Vessel            = Common.GetVessel(keyvalues["Vessel"]);
         PO.TargetDays        = keyvalues.ContainsKey("TargetDays") ? int.Parse(keyvalues["TargetDays"]) : 0;
         PO.Supplier          = Common.GetSupplier(keyvalues["Supplier"]);
         PO.TermsOfPayment    = keyvalues["PaymentTerms"];
         PO.BufferQuantityMin = keyvalues.ContainsKey("BufferMin") ? decimal.Parse(keyvalues["BufferMin"]) : 10;
         PO.BufferQuantityMax = keyvalues.ContainsKey("BufferMax") ? decimal.Parse(keyvalues["BufferMax"]) : 10;
         List <PODetail> updatedPOD = new List <PODetail>();
         for (int i = 1; i <= 10; i++)
         {
             if (keyvalues.ContainsKey("Customer_" + i.ToString()))
             {
                 if (keyvalues["Customer_" + i.ToString()] != "0")
                 {
                     PODetail pod = null;
                     if (keyvalues.ContainsKey("PODetailId_" + i.ToString()) && keyvalues["PODetailId_" + i.ToString()] != "")
                     {
                         foreach (PODetail pd in PO.PODetailsList)
                         {
                             if (pd.Id == new Guid(keyvalues["PODetailId_" + i.ToString()]))
                             {
                                 pod = pd;
                             }
                         }
                     }
                     if (pod == null)
                     {
                         pod = NewPODetail(PO);
                     }
                     pod.Customer        = CustomerManager.GetCustomerRef(keyvalues["Customer_" + i.ToString()]);
                     pod.Quantity        = keyvalues.ContainsKey("Quantity_" + i.ToString()) ? decimal.Parse(keyvalues["Quantity_" + i.ToString()]) : 0;
                     pod.Rate            = keyvalues.ContainsKey("Rate_" + i.ToString()) ? decimal.Parse(keyvalues["Rate_" + i.ToString()]) : 0;
                     pod.AllowedWaistage = keyvalues.ContainsKey("AllowedWastage_" + i.ToString()) ? decimal.Parse(keyvalues["AllowedWastage_" + i.ToString()]) : 0;
                     pod.CostPerTon      = keyvalues.ContainsKey("CostPerTon_" + i.ToString()) ? decimal.Parse(keyvalues["CostPerTon_" + i.ToString()]) : 0;
                     pod.TargetDate      = keyvalues.ContainsKey("TargetDate_" + i.ToString()) ? DateTime.Parse(keyvalues["TargetDate_" + i.ToString()]) : DateTime.MaxValue;
                     updatedPOD.Add(pod);
                 }
             }
         }
         PO.PODetailsList = updatedPOD;
         PO.ModifiedOn    = DateTime.Now;
         PO.ModifiedBy    = UserManager.GetUserRef(Common.CurrentUser.Id.ToString());
         SavePO(PO);
         return(PO);
     }
     catch (Exception ex)
     {
         ExceptionHandler.Error("Something went wrong. Details: " + ex.Message, ex);
     }
     return(null);
 }
Ejemplo n.º 3
0
        public static void Main(String[] args)
        {
            TestPODetailsDAO testDAO = new TestPODetailsDAO();

            Console.WriteLine("\nListing all PODetails");
            foreach (PODetail pod in testDAO.ListAllPODetails())
            {
                Console.WriteLine(testDAO.PODToString(pod));
            }

            Console.WriteLine("\nListing all PODetails by ItemCode");
            foreach (PODetail pod in testDAO.ListPODetailsByItemCode("C001"))
            {
                Console.WriteLine(testDAO.PODToString(pod));
            }

            Console.WriteLine("\nListing all PODetails by PODetails");
            foreach (PODetail pod in testDAO.ListPODetailsByPOCode("ALPA180116234406038"))
            {
                Console.WriteLine(testDAO.PODToString(pod));
            }

            Console.WriteLine("\nGet PODetail");
            Console.WriteLine(testDAO.PODToString(testDAO.GetPODetail("ALPA180116234406038", "C001")));

            Console.WriteLine("\nUpdate PODetail");
            PODetail poDetail = testDAO.GetPODetail("ALPA180116234406038", "C001");

            poDetail.Quantity = 999;
            testDAO.UpdatePODetail(poDetail);
            Console.WriteLine(testDAO.PODToString(testDAO.GetPODetail("ALPA180116234406038", "C001")));
        }
Ejemplo n.º 4
0
 public int UpdatePODetail(PODetail poDetail)
 {
     using (EntityModel em = new EntityModel())
     {
         em.Entry(poDetail).State = EntityState.Modified;
         return(em.SaveChanges());
     }
 }
Ejemplo n.º 5
0
        public List <PurchaseOrder> CreatePurchaseOrders(List <PurchaseItem> purchaseItems, string username)
        {
            int rows           = 0;
            var purchaseOrders = new List <PurchaseOrder>();

            foreach (PurchaseItem pi in purchaseItems)
            {
                bool          hasPurchaseOrder = false;
                PurchaseOrder purchaseOrder    = new PurchaseOrder();

                DateTime now = DateTime.Now;

                foreach (PurchaseOrder po in purchaseOrders)
                {
                    if (pi.SupplierCode == po.SupplierCode)
                    {
                        hasPurchaseOrder = true;
                        purchaseOrder    = po;
                        break;
                    }
                }
                if (!hasPurchaseOrder)
                {
                    var po = new PurchaseOrder();
                    po.DateCreated       = now;
                    po.PurchaseOrderCode = pi.SupplierCode + now.ToString("yyMMddHHmmssfff");
                    //po.Notes = txtNotes.Value;
                    po.Status       = "PENDING";
                    po.SupplierCode = pi.SupplierCode;
                    po.UserName     = username;
                    purchaseOrder   = po;
                    purchaseOrders.Add(po);
                }
                var pod = new PODetail();
                pod.ItemCode          = pi.Stationery.ItemCode;
                pod.Price             = GetSupplierItemPrice(pi.SupplierCode, pi.Stationery.ItemCode);
                pod.Quantity          = pi.OrderQuantity;
                pod.PurchaseOrderCode = purchaseOrder.PurchaseOrderCode;
                pod.Notes             = pi.Notes;
                purchaseOrder.PODetails.Add(pod);
            }
            foreach (PurchaseOrder po in purchaseOrders)
            {
                try
                {
                    purchaseOrderDAO.AddPurchaseOrder(po);
                    rows++;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            return(purchaseOrders);
        }
Ejemplo n.º 6
0
        public void Should_Success_Instantiate()
        {
            PODetail pODetail = new PODetail()
            {
                PONo  = "PONo",
                Price = 1
            };

            Assert.Equal("PONo", pODetail.PONo);
            Assert.Equal(1, pODetail.Price);
        }
Ejemplo n.º 7
0
        public string POSave([FromBody] PurchaseOrderItemDTO input)
        {
            var newPo = new PO();

            newPo.OrderDate = input.OrderDate;
            newPo.POStatus  = POStatus.Processing;
            var supplier = _context.Suppliers.FirstOrDefault(s => s.Id == input.supplierID);

            newPo.Supplier = supplier;
            _context.Add(newPo);

            foreach (PODetailsDTO pd in input.poDetailsList)
            {
                PODetail poD = new PODetail();
                poD.SupplierDetail = _context.SupplierDetails.FirstOrDefault(s => s.Id == pd.supplierDetailId);
                poD.PO             = newPo;
                _context.Add(poD);
            }
            _context.SaveChanges();

            //sending mail
            String items = "";

            foreach (PODetailsDTO p in input.poDetailsList)
            {
                PODetail poD = new PODetail();
                poD.SupplierDetail = _context.SupplierDetails.FirstOrDefault(s => s.Id == p.supplierDetailId);
                poD.PO             = newPo;
                items += poD.SupplierDetail.Stationery.Description.ToString() + ": "
                         + p.Qty + " \n";
            }
            int         poId        = _context.SupplierDetails.OrderByDescending(p => p.Id).First().Id;
            MailAddress FromEmail   = new MailAddress("*****@*****.**", "Store");
            MailAddress ToEmail     = new MailAddress("*****@*****.**", "Supplier");
            string      Subject     = "Purchase Order";
            string      MessageBody = "Title: PO Number " + poId + "\n\n" + "You have orders from Store. The items list are:\n\n"
                                      + items + "\n\n" + "Regards,\n Store Clerk";

            EmailService.SendEmail(FromEmail, ToEmail, Subject, MessageBody);
            //(Mail fromMail, Mail toMail, String acknowledgementCode, String flag)

            //Json Response

            var response = new ResponseDTO();

            response.Message = "Create Successfully";

            return(JsonSerializer.Serialize(new
            {
                result = response
            }));
        }
Ejemplo n.º 8
0
 public ActionResult Adddetail(string ma_phieu_header, List <PODetail> details)
 {
     using (var dbConn = Helpers.OrmliteConnection.openConn())
     {
         try
         {
             if (accessDetail.sua)
             {
                 foreach (var item in details)
                 {
                     PODetail newdata = new PODetail();
                     newdata.ma_phieu_header    = ma_phieu_header;
                     newdata.ma_san_pham        = item.ma_san_pham;
                     newdata.so_luong           = item.so_luong;
                     newdata.thong_so_ky_thuat  = item.thong_so_ky_thuat;
                     newdata.muc_dich_su_dung   = "";
                     newdata.nguoi_tao          = currentUser.ma_nguoi_dung;
                     newdata.ma_to_trinh        = item.ma_to_trinh;
                     newdata.id_StatementDetail = item.id_StatementDetail;
                     newdata.don_gia_vat        = item.don_gia_vat;
                     newdata.don_gia            = item.don_gia;
                     newdata.thue_vat           = item.thue_vat;
                     newdata.don_vi_tinh        = item.don_vi_tinh;
                     newdata.chi_phi            = item.chi_phi;
                     newdata.ma_don_vi          = item.ma_don_vi;
                     newdata.ma_chi_nhanh       = item.ma_chi_nhanh;
                     newdata.thong_tin_noi_bo   = item.thong_tin_noi_bo;
                     newdata.ngay_tao           = DateTime.Now;
                     newdata.ngay_cap_nhat      = DateTime.Parse("1900-01-01");
                     newdata.nguoi_cap_nhat     = "";
                     newdata.trang_thai         = "";
                     dbConn.Insert <PODetail>(newdata);
                     StatementDetail detail = dbConn.FirstOrDefault <StatementDetail>(s => s.id == item.id_StatementDetail);
                     detail.ma_don_dat_hang = ma_phieu_header;
                     dbConn.Update(detail);
                 }
             }
             else
             {
                 return(Json(new { success = false, error = "Bạn không có quyền sửa dữ liệu" }));
             }
             return(Json(new { success = true, ma_phieu_header = ma_phieu_header }));
         }
         catch (Exception ex)
         {
             return(Json(new { success = false, error = ex.Message }));
         }
     }
 }
Ejemplo n.º 9
0
        public void SaveDetail()
        {
            PurchaseOrderDetail pod = PODetails.Where(x => x.ProductId == PODetail.ProductId).FirstOrDefault();

            if (pod == null)
            {
                pod = new PurchaseOrderDetail();
                PODetails.Add(pod);
            }
            else
            {
                PODetail.Quantity += pod.Quantity;
            }
            PODetail.toCopy <PurchaseOrderDetail>(pod);
            ClearDetail();
            ItemAmount = PODetails.Sum(x => x.Amount);
        }
Ejemplo n.º 10
0
        protected void listDetails_ItemUpdating(object sender, ListViewUpdateEventArgs e)
        {
            Validate();
            if (!Page.IsValid)
            {
                return;
            }

            PODetail poDetail = poDetails[e.ItemIndex];

            poDetail.Quantity = Convert.ToInt32(e.NewValues["Quantity"]);
            poDetail.Notes    = Convert.ToString(e.NewValues["Notes"]);
            scController.UpdatePODetail(poDetail);
            //scController.FinishEditingPurchaseOrder(po);
            listDetails.EditIndex = -1;
            BindData();
        }
Ejemplo n.º 11
0
        public static Dictionary <string, object> reMapPODetailData(PODetail PODetail)
        {
            Dictionary <string, object> keyValues = new Dictionary <string, object>();

            if (PODetail.Id != Guid.Empty)
            {
                keyValues.Add("@id", PODetail.Id);
            }
            keyValues.Add("@POId", PODetail.PO == null ? Guid.Empty : PODetail.PO.Id);
            keyValues.Add("@CustomerId", PODetail.Customer == null ? Guid.Empty : PODetail.Customer.Id);
            keyValues.Add("@Quantity", PODetail.Quantity);
            keyValues.Add("@Rate", PODetail.Rate);
            keyValues.Add("@CostPerTon", PODetail.CostPerTon);
            keyValues.Add("@AllowedWastage", PODetail.AllowedWaistage);
            keyValues.Add("@TargetDate", PODetail.TargetDate);
            keyValues.Add("@Remarks", PODetail.Remarks);
            return(keyValues);
        }
Ejemplo n.º 12
0
 public DBPOCollection()
 {
     _currentpoentitiyItem    = new POEntity();
     _poentityItems           = new List <POEntity>();
     _currentpoentityviewItem = new POEntity_View();
     _poentityviewItems       = new List <POEntity_View>();
     _currentpodetailviewItem = new PODetail_View();
     _podetailviewItems       = new List <PODetail_View>();
     _currentpodetailItem     = new PODetail();
     _podetailItems           = new List <PODetail>();
     _currentaccountItem      = new Account();
     _accountItems            = new List <Account>();
     _currentdepartmentItem   = new Department();
     _departmentItems         = new List <Department>();
     _currentpartsmasterItem  = new PartsMaster();
     _partsmasterItems        = new List <PartsMaster>();
     _currentmasterItem       = new OrgMaster();
     _masterItemsList         = new List <OrgMaster>();
 }
Ejemplo n.º 13
0
        private static PODetail NewPODetail(PurchaseOrder PO)
        {
            PODetail pod = new PODetail();

            pod.Id = Guid.Empty;
            pod.PO = new Reference()
            {
                Id = PO.Id, Name = PO.PONumber
            };
            pod.Customer = new Reference()
            {
                Id = Guid.Empty, Name = ""
            };
            pod.Quantity        = 0;
            pod.Rate            = 0;
            pod.CostPerTon      = 0;
            pod.AllowedWaistage = 0;
            pod.TargetDate      = DateTime.MaxValue;
            pod.Remarks         = "";
            pod.GRNsList        = new List <GRN>();
            pod.DutyClearsList  = new List <DutyClear>();
            return(pod);
        }
Ejemplo n.º 14
0
 public PODetailModel Create(PODetail pODetail)
 {
     if (pODetail == null)
     {
         return(null);
     }
     return(new PODetailModel()
     {
         Company = pODetail.Company,
         PONum = pODetail.PONum,
         POLine = pODetail.POLine,
         PartNum = pODetail.PartNum,
         PartDesc = pODetail.PartDesc,
         TrackLot = pODetail.TrackLot,
         XOrdQty = pODetail.XOrdQty,
         IUM = pODetail.IUM,
         OrdQty = pODetail.OrdQty,
         PUM = pODetail.PUM,
         PrevRcvQty = pODetail.PrevRcvQty,
         Qty = pODetail.Qty,
         TuConv = pODetail.TuConv,
         UomCode = pODetail.UomCode,
         WarehouseCode = pODetail.WarehouseCode,
         BinNum = pODetail.BinNum,
         JobNum = pODetail.JobNum,
         Assembly = pODetail.Assembly,
         Sequence = pODetail.Sequence,
         IsReceivedFull = pODetail.IsReceivedFull,
         ReceiveStatus = pODetail.ReceiveStatus,
         LotAttribute = Create(pODetail.LotAttribute),
         PrintTag = Create(pODetail.PrintTag),
         NumOfDecPUM = pODetail.NumOfDecPUM,
         NumOfDecIUM = pODetail.NumOfDecIUM,
         LotShelfLife = pODetail.LotShelfLife
     });
 }
Ejemplo n.º 15
0
        public Boolean  SaveData()
        {
            try
            {
                if (gvPODetail.IsEditing)
                {
                    gvPODetail.CloseEditor();
                }

                if (gvPODetail.FocusedRowModified)
                {
                    gvPODetail.UpdateCurrentRow();
                }

                Cursor.Current = Cursors.WaitCursor;
                intPOHeaderID  = Convert.ToInt16(txtPOHeaderID.Text);
                int    intCustomerID;
                string strCustomerCode = lueCustomer.EditValue.ToString();
                string strPOType       = lueSearchPOType.EditValue.ToString();
                string strPONumber     = txtPONumber.Text.Trim();
                if (string.IsNullOrEmpty(strPONumber))
                {
                    XtraMessageBox.Show("Please, input P/O Number first.", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtPONumber.Focus();
                    return(false);
                }
                DateTime dtOrderDate = Convert.ToDateTime(deOrderDate.EditValue.ToString());
                //string strOrderDate = deOrderDate.EditValue.ToString();
                //DateTime dtOrderDate;
                //if (DateTime.TryParseExact(strOrderDate, "M/d/yyyy", null, System.Globalization.DateTimeStyles.None, out dtOrderDate) == false)
                //{
                //    XtraMessageBox.Show("Order Date is not valid", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                //    deOrderDate.Focus();
                //    return false;
                //}
                Boolean blnStatus = Convert.ToBoolean(lueStatus.Properties.GetKeyValueByDisplayText(lueStatus.Text).ToString());
                string  strRemark = txtRemark.Text;

                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                    IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted
                }))
                {
                    using (eSolutionDataContext db = new eSolutionDataContext())
                    {
                        DateTime dtServerDate = Convert.ToDateTime(db.fn_ServerDateTime().ToString());

                        var qryPOHeader = (from poh in db.POHeaders
                                           from cst in db.Customers
                                           where cst.CustomerID == poh.CustomerID &&
                                           cst.CustomerCode == strCustomerCode &&
                                           poh.PONumber == strPONumber
                                           select poh).FirstOrDefault();

                        if (qryPOHeader == null)
                        {
                            // new add row
                            var qryCount = (from poh in db.POHeaders
                                            from cst in db.Customers
                                            where cst.CustomerID == poh.CustomerID &&
                                            cst.CustomerCode == strCustomerCode &&
                                            poh.PONumber == strPONumber
                                            select poh).Count();
                            if (qryCount > 0)
                            {
                                MessageBox.Show("Already regist PO Number." + Environment.NewLine + "Please, check the PO Number!",
                                                "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                txtPONumber.Focus();
                                return(false);
                            }
                            POHeader poheader = new POHeader();

                            intCustomerID       = (from obj in db.Customers where obj.CustomerCode == strCustomerCode select obj.CustomerID).FirstOrDefault();
                            poheader.CustomerID = intCustomerID;
                            poheader.PONumber   = strPONumber;
                            poheader.POType     = strPOType;
                            poheader.OrderDate  = dtOrderDate;
                            poheader.Status     = blnStatus;
                            if (blnStatus == true)
                            {
                                poheader.ClosedDate = dtServerDate;
                            }
                            poheader.CreateDate       = dtServerDate;
                            poheader.CreateCompName   = Environment.MachineName;
                            poheader.ModifiedDate     = dtServerDate;
                            poheader.ModifiedCompName = Environment.MachineName;
                            db.POHeaders.InsertOnSubmit(poheader);
                        }
                        else
                        {
                            intCustomerID                = (from obj in db.Customers where obj.CustomerCode == strCustomerCode select obj.CustomerID).FirstOrDefault();
                            qryPOHeader.CustomerID       = intCustomerID;
                            qryPOHeader.POType           = strPOType;
                            qryPOHeader.PONumber         = strPONumber;
                            qryPOHeader.OrderDate        = dtOrderDate;
                            qryPOHeader.Status           = blnStatus;
                            qryPOHeader.Remark           = strRemark;
                            qryPOHeader.ModifiedCompName = Environment.MachineName;
                            qryPOHeader.ModifiedDate     = dtServerDate;
                        }
                        db.SubmitChanges();

                        intPOHeaderID = (from obj in db.POHeaders
                                         where obj.CustomerID == intCustomerID &&
                                         obj.PONumber == strPONumber
                                         select obj.POHeaderID).FirstOrDefault();
                        // PO Detail delete
                        for (int i = 0; i < gvPODetail.DataRowCount; i++)
                        {
                            int intPODetailID = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "PODetailID").ToString());
                            int intPOLineNumber;
                            try
                            {
                                intPOLineNumber = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "POLineNumber").ToString());
                            }
                            catch {
                                intPOLineNumber = 1;
                            }


                            string strItemNumber = gvPODetail.GetRowCellValue(i, "ItemNumber").ToString();
                            var    qryItem       = (from itm in db.ItemMasters
                                                    from itd in db.ItemByCustomers
                                                    where itd.ItemID == itm.ItemID &&
                                                    itd.CustomerID == intCustomerID &&
                                                    itd.ItemNumber == strItemNumber &&
                                                    itd.ItemType.Contains("R")
                                                    select new
                            {
                                ItemID = itm.ItemID,
                                ItemCode = itm.ItemCode
                            }
                                                    ).FirstOrDefault();
                            int      intItemID   = qryItem.ItemID;
                            string   strItemCode = qryItem.ItemCode;
                            DateTime?dtDueDate;
                            try
                            {
                                dtDueDate = Convert.ToDateTime(gvPODetail.GetRowCellValue(i, "DueDate").ToString());
                            }
                            catch
                            {
                                dtDueDate = null;
                            }

                            int intReceivingQty = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "ReceiveQty").ToString());
                            //int intShipGoodQty = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "ShipGoodQty").ToString());
                            //int intShipFunctionFailQty = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "ShipFunctionFailQty").ToString());
                            //int intShipDIPQty = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "ShipDIPQty").ToString());
                            string  strStatus       = gvPODetail.GetRowCellValue(i, "Status").ToString();
                            Boolean blnStatusDetail = Convert.ToBoolean(gvPODetail.GetRowCellValue(i, "Status").ToString());

                            var qryDetail = (from obj in db.PODetails
                                             where obj.PODetailID == intPODetailID
                                             select obj).FirstOrDefault();
                            if (qryDetail == null)
                            {
                                PODetail dtl = new PODetail();
                                dtl.POHeaderID   = intPOHeaderID;
                                dtl.POLineNumber = intPOLineNumber;
                                dtl.PONumber     = strPONumber;
                                dtl.ItemID       = intItemID;
                                dtl.ItemCode     = strItemCode;
                                dtl.ItemNumber   = strItemNumber;
                                dtl.ReceiveQty   = intReceivingQty;
                                dtl.DueDate      = dtDueDate;
                                //dtl.ShipGoodQty = intShipGoodQty;
                                //dtl.ShipDIPQty = intShipDIPQty;
                                //dtl.ShipFunctionFailQty = intShipFunctionFailQty;
                                //dtl.ShipDIPQty = intShipDIPQty;
                                dtl.Status          = blnStatusDetail;
                                dtl.CreatedDate     = dtServerDate;
                                dtl.CreatedHostName = Environment.MachineName;

                                db.PODetails.InsertOnSubmit(dtl);
                            }
                            else
                            {
                                if (!(qryDetail.POHeaderID == intPOHeaderID &&
                                      qryDetail.POLineNumber == intPOLineNumber &&
                                      qryDetail.PONumber == strPONumber &&
                                      qryDetail.ItemID == intItemID &&
                                      qryDetail.ItemCode == strItemCode &&
                                      qryDetail.ItemNumber == strItemNumber &&
                                      qryDetail.ReceiveQty == intReceivingQty
                                      //&& qryDetail.ShipGoodQty == intShipGoodQty
                                      //&& qryDetail.ShipFunctionFailQty == intShipFunctionFailQty
                                      //&& qryDetail.ShipDIPQty == intShipDIPQty
                                      && qryDetail.DueDate == dtDueDate &&
                                      qryDetail.Status == blnStatusDetail))
                                {
                                    qryDetail.POHeaderID   = intPOHeaderID;
                                    qryDetail.PONumber     = strPONumber;
                                    qryDetail.POLineNumber = intPOLineNumber;
                                    qryDetail.ItemID       = intItemID;
                                    qryDetail.ItemCode     = strItemCode;
                                    qryDetail.ItemNumber   = strItemNumber;
                                    qryDetail.ReceiveQty   = intReceivingQty;
                                    qryDetail.DueDate      = dtDueDate;
                                    //qryDetail.ShipGoodQty = intShipGoodQty;
                                    //qryDetail.ShipDIPQty = intShipDIPQty;
                                    //qryDetail.ShipFunctionFailQty = intShipFunctionFailQty;
                                    //qryDetail.ShipDIPQty = intShipDIPQty;
                                    qryDetail.Status          = blnStatus;
                                    qryDetail.CreatedDate     = dtServerDate;
                                    qryDetail.CreatedHostName = Environment.MachineName;
                                }
                            }
                            db.SubmitChanges();

                            if (strEntryStatus == "A")
                            {
                                txtPOHeaderID.Text = intPOHeaderID.ToString();
                                strEntryStatus     = "E";
                            }
                        }
                    }
                    scope.Complete();
                }
                MessageBox.Show("Completed Saved!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Exception Error!" + Environment.NewLine + ex.Message.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                SearchData();
                Cursor.Current = Cursors.Default;
            }
            return(false);
        }
Ejemplo n.º 16
0
        public static List <PurchaseOrder> MapPOData(DataTable DTpo, DataTable dTpod, DataTable dTgrn, DataTable dTdcl)
        {
            List <PurchaseOrder> AllPOs = new List <PurchaseOrder>();

            foreach (DataRow DRpo in DTpo.Rows)
            {
                PurchaseOrder PO = new PurchaseOrder();

                PO.Id     = DRpo["Id"] != null ? new Guid(DRpo["Id"].ToString()) : Guid.Empty;
                PO.Status = DRpo["Status"] != null?MapPOStatus(DRpo["Status"].ToString()) : POStatus.Created;

                PO.CreatedOn = DRpo["CreatedOn"] != DBNull.Value ? DateTime.Parse(DRpo["CreatedOn"].ToString()) : DateTime.MinValue;
                PO.CreatedBy = DRpo["CreatedBy"] != null?UserManager.GetUserRef(DRpo["CreatedBy"].ToString()) : UserManager.GetDefaultRef();

                PO.ModifiedOn = DRpo["ModifiedOn"] != DBNull.Value ? DateTime.Parse(DRpo["ModifiedOn"].ToString()) : DateTime.MinValue;
                PO.ModifiedBy = DRpo["ModifiedBy"] != null?UserManager.GetUserRef(DRpo["ModifiedBy"].ToString()) : UserManager.GetDefaultRef();

                PO.CompletedOn = DRpo["CompletedOn"] != DBNull.Value ? DateTime.Parse(DRpo["CompletedOn"].ToString()) : DateTime.MinValue;
                PO.Lead        = DRpo["LeadId"] != null?UserManager.GetUserRef(DRpo["LeadId"].ToString()) : UserManager.GetDefaultRef();

                PO.ApprovedDate = DRpo["ApprovedDate"] != DBNull.Value ? DateTime.Parse(DRpo["ApprovedDate"].ToString()) : DateTime.MinValue;
                PO.ApprovedBy   = DRpo["ApprovedBy"] != null?UserManager.GetUserRef(DRpo["LeadId"].ToString()) : UserManager.GetDefaultRef();

                PO.PONumber = DRpo["PONumber"] != null ? DRpo["PONumber"].ToString() : "";
                PO.PODate   = DRpo["PODate"] != DBNull.Value ? DateTime.Parse(DRpo["PODate"].ToString()) : DateTime.MinValue;
                PO.Origin   = DRpo["Origin"] != null?CommonDataManager.GetOrigin(DRpo["Origin"].ToString()) : CommonDataManager.GetDefaultRef();

                PO.Size = DRpo["Size"] != null?CommonDataManager.GetSize(DRpo["Size"].ToString()) : CommonDataManager.GetDefaultRef();

                PO.Vessel = DRpo["Vessel"] != null?CommonDataManager.GetVessel(DRpo["Vessel"].ToString()) : CommonDataManager.GetDefaultRef();

                PO.TargetDays = DRpo["TargetDays"] != null?int.Parse(DRpo["TargetDays"].ToString()) : 0;

                PO.Supplier = DRpo["Supplier"] != null?CommonDataManager.GetSupplier(DRpo["Supplier"].ToString()) : CommonDataManager.GetDefaultRef();

                PO.TermsOfPayment    = DRpo["TermsOfPayment"] != null ? DRpo["TermsOfPayment"].ToString() : "";
                PO.BufferQuantityMax = DRpo["BufferQuantityMax"] != null?decimal.Parse(DRpo["BufferQuantityMax"].ToString()) : 10;

                PO.BufferQuantityMin = DRpo["BufferQuantityMin"] != null?decimal.Parse(DRpo["BufferQuantityMin"].ToString()) : 10;

                PO.PODetailsList = new List <PODetail>();
                foreach (DataRow DRpod in dTpod.Rows)
                {
                    Guid poId = DRpod["POId"] != null ? new Guid(DRpod["POId"].ToString()) : Guid.Empty;
                    if (poId != Guid.Empty && poId == PO.Id)
                    {
                        PODetail PODetail = new PODetail();
                        PODetail.Id = DRpod["Id"] != null ? new Guid(DRpod["Id"].ToString()) : Guid.Empty;
                        PODetail.PO = new Reference()
                        {
                            Id = PO.Id, Name = PO.PONumber
                        };
                        PODetail.Customer = DRpod["CustomerId"] != null?CustomerManager.GetCustomerRef(DRpod["CustomerId"].ToString()) : CustomerManager.GetDefaultRef();

                        PODetail.Quantity = DRpod["Quantity"] != null?decimal.Parse(DRpod["Quantity"].ToString()) : 0;

                        PODetail.Rate = DRpod["Rate"] != null?decimal.Parse(DRpod["Rate"].ToString()) : 0;

                        PODetail.CostPerTon = DRpod["CostPerTon"] != null?decimal.Parse(DRpod["CostPerTon"].ToString()) : 0;

                        PODetail.AllowedWaistage = DRpod["AllowedWastage"] != null?decimal.Parse(DRpod["AllowedWastage"].ToString()) : 0;

                        PODetail.TargetDate = DRpod["TargetDate"] != DBNull.Value ? DateTime.Parse(DRpod["TargetDate"].ToString()) : DateTime.MinValue;
                        PODetail.Remarks    = DRpod["Remarks"] != null ? DRpod["Remarks"].ToString() : "";

                        PODetail.GRNsList = new List <GRN>();
                        foreach (DataRow DRgrn in dTgrn.Rows)
                        {
                            Guid podId = DRgrn["PODetailId"] != null ? new Guid(DRgrn["PODetailId"].ToString()) : Guid.Empty;
                            if (podId != Guid.Empty && podId == PODetail.Id)
                            {
                                GRN Grn = new GRN();
                                Grn.Id     = DRgrn["Id"] != null ? new Guid(DRgrn["Id"].ToString()) : Guid.Empty;
                                Grn.Status = DRgrn["Status"] != null?MapGRNStatus(DRgrn["Status"].ToString()) : GRNStatus.Recieved;

                                Grn.CreatedOn = DRgrn["CreatedOn"] != DBNull.Value ? DateTime.Parse(DRgrn["CreatedOn"].ToString()) : DateTime.MinValue;
                                Grn.CreatedBy = DRgrn["CreatedBy"] != null?UserManager.GetUserRef(DRgrn["CreatedBy"].ToString()) : UserManager.GetDefaultRef();

                                Grn.ModifiedOn = DRgrn["ModifiedOn"] != DBNull.Value ? DateTime.Parse(DRgrn["ModifiedOn"].ToString()) : DateTime.MinValue;
                                Grn.ModifiedBy = DRgrn["ModifiedBy"] != null?UserManager.GetUserRef(DRgrn["ModifiedBy"].ToString()) : UserManager.GetDefaultRef();

                                Grn.CompletedOn = DRgrn["CompletedOn"] != DBNull.Value ? DateTime.Parse(DRgrn["CompletedOn"].ToString()) : DateTime.MinValue;

                                Grn.GRNNumber = DRgrn["GRNNumber"] != null ? DRgrn["GRNNumber"].ToString() : "";
                                Grn.GRNDate   = DRgrn["GRNDate"] != DBNull.Value ? DateTime.Parse(DRgrn["GRNDate"].ToString()) : DateTime.MinValue;
                                Grn.PO        = new Reference()
                                {
                                    Id = PO.Id, Name = PO.PONumber
                                };
                                Grn.PODetail = new Reference()
                                {
                                    Id = PODetail.Id, Name = PO.PONumber
                                };
                                Grn.Store = DRgrn["Store"] != null?StoreManager.GetStoreRef(DRgrn["Store"].ToString()) : StoreManager.GetDefaultRef();

                                Grn.InvoiceNo = DRgrn["InvoiceNo"] != null ? DRgrn["InvoiceNo"].ToString() : "";
                                Grn.AdjPrice  = DRgrn["AdjPrice"] != null?decimal.Parse(DRgrn["AdjPrice"].ToString()) : 0;

                                Grn.Quantity = DRgrn["Quantity"] != null?decimal.Parse(DRgrn["Quantity"].ToString()) : 0;

                                Grn.Remarks = DRpod["Remarks"] != null ? DRpod["Remarks"].ToString() : "";

                                PODetail.GRNsList.Add(Grn);
                            }
                        }

                        PODetail.DutyClearsList = new List <DutyClear>();
                        foreach (DataRow DRdcl in dTdcl.Rows)
                        {
                            Guid podId = DRdcl["PODetailId"] != null ? new Guid(DRdcl["PODetailId"].ToString()) : Guid.Empty;
                            if (podId != Guid.Empty && podId == PODetail.Id)
                            {
                                DutyClear Dcl = new DutyClear();
                                Dcl.Id        = DRdcl["Id"] != null ? new Guid(DRdcl["Id"].ToString()) : Guid.Empty;
                                Dcl.CreatedOn = DRdcl["CreatedOn"] != DBNull.Value ? DateTime.Parse(DRdcl["CreatedOn"].ToString()) : DateTime.MinValue;
                                Dcl.CreatedBy = DRdcl["CreatedBy"] != null?UserManager.GetUserRef(DRdcl["CreatedBy"].ToString()) : UserManager.GetDefaultRef();

                                Dcl.ModifiedOn = DRdcl["ModifiedOn"] != DBNull.Value ? DateTime.Parse(DRdcl["ModifiedOn"].ToString()) : DateTime.MinValue;
                                Dcl.ModifiedBy = DRdcl["ModifiedBy"] != null?UserManager.GetUserRef(DRdcl["ModifiedBy"].ToString()) : UserManager.GetDefaultRef();

                                Dcl.DCLNumber = DRdcl["DCLNumber"] != null ? DRdcl["DCLNumber"].ToString() : "";
                                Dcl.DCLDate   = DRdcl["DCLDate"] != DBNull.Value ? DateTime.Parse(DRdcl["DCLDate"].ToString()) : DateTime.MinValue;
                                Dcl.PO        = new Reference()
                                {
                                    Id = PO.Id, Name = PO.PONumber
                                };
                                Dcl.PODetail = new Reference()
                                {
                                    Id = PODetail.Id, Name = PO.PONumber
                                };
                                Dcl.Store = DRdcl["Store"] != null?StoreManager.GetStoreRef(DRdcl["Store"].ToString()) : StoreManager.GetDefaultRef();

                                Dcl.Quantity = DRdcl["Quantity"] != null?decimal.Parse(DRdcl["Quantity"].ToString()) : 0;

                                Dcl.Remarks = DRpod["Remarks"] != null ? DRpod["Remarks"].ToString() : "";

                                PODetail.DutyClearsList.Add(Dcl);
                            }
                        }

                        PO.PODetailsList.Add(PODetail);
                    }
                }

                AllPOs.Add(PO);
            }
            return(AllPOs);
        }
        public RedirectToRouteResult SavePO(string[] arrQty, string[] arrSupplier, string taData)
        {
            // To ensure no empty Entries
            try
            {
                int enteredQty = 0;
                if (arrQty.Count() > 0)
                {
                    for (int i = 0; i < arrQty.Length; i++)
                    {
                        enteredQty += Convert.ToInt32(arrQty[i]);
                    }
                }


                if (enteredQty > 0)
                {
                    List <POFullDetail> poDetailsList = (List <POFullDetail>)Session["newPOList"];
                    List <Supplier>     supplierList  = new List <Supplier>();
                    List <Item>         itemAdded     = new List <Item>();
                    int arrayCount = 0;
                    using (SSISdbEntities m = new SSISdbEntities())
                    {
                        // Checking for number of suppliers to Iterate & later used for creating no. of PO
                        for (int i = 0; i < arrSupplier.Length; i++)
                        {
                            string   supCode  = arrSupplier[i];
                            Supplier supplier = m.Suppliers.Where(x => x.SupplierCode == supCode).FirstOrDefault();
                            if (!supplierList.Contains(supplier))
                            {
                                supplierList.Add(supplier);
                            }
                        }

                        // Change Item Supplier in PODetails for retrieving in list and adding into database later
                        foreach (POFullDetail p in poDetailsList)
                        {
                            string   coy = arrSupplier[arrayCount];
                            Supplier sup = m.Suppliers.Where(x => x.SupplierCode == coy).FirstOrDefault();
                            p.CompanyName = sup.CompanyName;
                            arrayCount++;
                        }

                        // Each Supplier iterates once such that only 1 PO is created for each of them
                        foreach (Supplier s in supplierList)
                        {
                            // Create new PO based on supplier
                            int    count = m.POHeaders.Count() + 1;
                            string poId  = CommonLogic.SerialNo(count, "PO");

                            POHeader newPOHeader = new POHeader();
                            newPOHeader.PONumber        = poId;
                            newPOHeader.Date            = DateTime.Now;
                            newPOHeader.SupplierCode    = s.SupplierCode;
                            newPOHeader.ContactName     = s.ContactName;
                            newPOHeader.DeliverTo       = "Logic University";
                            newPOHeader.EmployeeID      = (string)Session["LoginEmployeeID"];
                            newPOHeader.Remarks         = taData;
                            newPOHeader.Status          = "Open";
                            newPOHeader.TransactionType = "PO";
                            m.POHeaders.Add(newPOHeader);
                            m.SaveChanges();

                            // Loop through PODetails to add items based on selected supplier suppliers
                            foreach (POFullDetail pod in poDetailsList)
                            {
                                // Only add if the item is belonging to the supplier / PO
                                string   supCode  = m.Suppliers.Where(x => x.CompanyName == pod.CompanyName).Select(x => x.SupplierCode).FirstOrDefault();
                                Supplier supplier = m.Suppliers.Where(x => x.SupplierCode == supCode).FirstOrDefault();
                                if (supplier == s)
                                {
                                    // Only add if the item has not been added
                                    PODetail poDetailToAdd = new PODetail();
                                    float    itemUnitPrice = m.SupplierPriceLists.Where(x => x.SupplierCode == s.SupplierCode &&
                                                                                        x.ItemCode == pod.ItemCode).Select(y => y.UnitCost).FirstOrDefault();
                                    poDetailToAdd.PONumber = poId;
                                    poDetailToAdd.ItemCode = pod.ItemCode;
                                    int qty = Convert.ToInt32(arrQty[poDetailsList.IndexOf(pod)]);
                                    poDetailToAdd.QuantityOrdered      = qty;
                                    poDetailToAdd.QuantityBackOrdered  = qty;
                                    poDetailToAdd.QuantityDelivered    = 0;
                                    poDetailToAdd.UnitCost             = itemUnitPrice;
                                    poDetailToAdd.CancelledBackOrdered = 0;
                                    m.PODetails.Add(poDetailToAdd);
                                    m.SaveChanges();

                                    Item item = new Item();
                                    item = m.Items.Where(x => x.ItemCode == pod.ItemCode && pod.CompanyName == supplier.CompanyName).FirstOrDefault();
                                    itemAdded.Add(item);
                                }
                            }
                        }
                    }
                }
            }
            catch (FormatException fe)
            {
                Debug.WriteLine(fe.Message);
            }catch (Exception e)
            {
                Debug.WriteLine(e.Message);
            }

            //add to list meant for already added items
            List <String> tempList = (List <String>)Session["tempList"];

            tempList.Clear();
            Session["tempList"] = tempList;

            Session["newPOList"] = new List <POFullDetail>();

            Session["POListPage"] = "1";

            return(RedirectToAction("POList", "StorePurchase"));
        }
Ejemplo n.º 18
0
        public ActionResult CreateUpdate(POHeader data, List <PODetail> details)
        {
            using (var dbConn = Helpers.OrmliteConnection.openConn())
            {
                try
                {
                    int id = 0;
                    if (accessDetail.them)
                    {
                        string ma_phieu = "";
                        var    loai     = "PO";
                        //var ma_don_vi = currentUser.ma_don_vi;
                        var yyMMdd    = DateTime.Now.ToString("yyMMdd");
                        var existLast = dbConn.SingleOrDefault <POHeader>("SELECT TOP 1 * FROM POHeader ORDER BY id DESC");
                        var nextNo    = 0;
                        var yearNow   = int.Parse(DateTime.Now.Year.ToString().Substring(2, 2));
                        if (existLast != null)
                        {
                            nextNo = int.Parse(existLast.ma_phieu.Substring(8, existLast.ma_phieu.Length - 8)) + 1;
                            var yearOld = int.Parse(existLast.ma_phieu.Substring(2, 2));
                            if (yearOld == yearNow)
                            {
                                ma_phieu = loai + yyMMdd + String.Format("{0:00000}", nextNo);
                            }
                            else
                            {
                                ma_phieu = loai + yyMMdd + "00001";
                            }
                        }
                        else
                        {
                            ma_phieu = loai + yyMMdd + "00001";
                        }

                        data.ma_phieu = ma_phieu;
                        //data.ngay_tao_yeu_cau = !string.IsNullOrEmpty(Request["ngay_tao_yeu_cau"]) ? DateTime.Parse(DateTime.ParseExact(Request["ngay_tao_yeu_cau"], "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd")) : DateTime.Parse("1900-01-01");
                        //data.ngay_cap_thiet_bi = !string.IsNullOrEmpty(Request["ngay_cap_thiet_bi"]) ? DateTime.Parse(DateTime.ParseExact(Request["ngay_cap_thiet_bi"], "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd")) : DateTime.Parse("1900-01-01");
                        //data.ten_phieu = data.ma_phieu;
                        data.ngay_tao       = DateTime.Now;
                        data.nguoi_tao      = currentUser.ma_nguoi_dung;
                        data.ngay_cap_nhat  = DateTime.Parse("1900-01-01");
                        data.nguoi_cap_nhat = "";
                        data.trang_thai     = "MOI";
                        dbConn.Insert(data);
                        id = (int)dbConn.GetLastInsertId();


                        foreach (var item in details)
                        {
                            PODetail newdata = new PODetail();
                            newdata.ma_phieu_header    = data.ma_phieu;
                            newdata.ma_san_pham        = item.ma_san_pham;
                            newdata.so_luong           = item.so_luong;
                            newdata.thong_so_ky_thuat  = item.thong_so_ky_thuat;
                            newdata.muc_dich_su_dung   = "";
                            newdata.nguoi_tao          = currentUser.ma_nguoi_dung;
                            newdata.ma_to_trinh        = item.ma_to_trinh;
                            newdata.id_StatementDetail = item.id_StatementDetail;
                            newdata.don_gia_vat        = item.don_gia_vat;
                            newdata.don_gia            = item.don_gia;
                            newdata.thue_vat           = item.thue_vat;
                            newdata.don_vi_tinh        = item.don_vi_tinh;
                            newdata.chi_phi            = item.chi_phi;
                            newdata.ma_don_vi          = item.ma_don_vi;
                            newdata.ma_chi_nhanh       = item.ma_chi_nhanh;
                            newdata.thong_tin_noi_bo   = item.thong_tin_noi_bo;
                            newdata.ngay_tao           = DateTime.Now;
                            newdata.ngay_cap_nhat      = DateTime.Parse("1900-01-01");
                            newdata.nguoi_cap_nhat     = "";
                            newdata.trang_thai         = "";
                            dbConn.Insert <PODetail>(newdata);
                            StatementDetail detail = dbConn.FirstOrDefault <StatementDetail>(s => s.id == item.id_StatementDetail);
                            detail.ma_don_dat_hang = ma_phieu;
                            dbConn.Update(detail);
                        }
                    }
                    else
                    {
                        return(Json(new { success = false, error = "Bạn không có quyền thêm dữ liệu" }));
                    }
                    return(Json(new { success = true, id = id }));
                }
                catch (Exception ex)
                {
                    return(Json(new { success = false, error = ex.Message }));
                }
            }
        }
Ejemplo n.º 19
0
 private string PODToString(PODetail pod)
 {
     return("POCode: " + pod.PurchaseOrderCode + ", ItemCode: " + pod.ItemCode + ", Quantity: " + pod.Quantity
            + ", Price: " + pod.Price + ", Notes: " + pod.Notes);
 }
Ejemplo n.º 20
0
 public CustomList <PODetail> GetAllPODetail(Int64 POID)
 {
     return(PODetail.GetAllPODetail(POID));
 }
        public RedirectToRouteResult AddPOItem(PODetail item2)
        {
            Item itemToAdd    = new Item();
            bool existingItem = false;

            using (SSISdbEntities m = new SSISdbEntities())
            {
                // Get Item to add into Datatable
                string itemCode = Request.Form["SelectItemChose"].ToString();
                List <POFullDetail> poFullDetailsList = (List <POFullDetail>)Session["newPOList"];
                POFullDetail        pod         = new POFullDetail();
                POFullDetail        existingPoD = new POFullDetail();
                pod.PONumber = (string)Session["newPoId"];

                // Checking if Item is already in list
                foreach (POFullDetail p in poFullDetailsList.ToList())
                {
                    // Iterate through whole list to check for itemcode
                    if (p.ItemCode == itemCode)
                    {
                        // Combine 2 same items (Adding new qty to exisiting qty)
                        existingItem = true;
                        // Create new item so that we can remove old qty & add back new qty
                        existingPoD = p;
                        existingPoD.QuantityOrdered += item2.QuantityOrdered;

                        poFullDetailsList.Remove(p);
                        poFullDetailsList.Add(existingPoD);
                    }
                }

                // Execute when item is not in the list
                if (existingItem == false)
                {
                    // Creating the new item with these
                    itemToAdd             = m.Items.Where(x => x.ItemCode == itemCode).FirstOrDefault();
                    pod.ItemCode          = itemToAdd.ItemCode;
                    pod.QuantityOrdered   = item2.QuantityOrdered;
                    pod.Description       = itemToAdd.Description;
                    pod.UoM               = itemToAdd.UoM;
                    pod.CompanyName       = itemToAdd.Supplier1; //default ddl at supplier 1's
                    pod.UnitCost          = itemToAdd.AvgUnitCost;
                    pod.Supplier1Code     = itemToAdd.Supplier1;
                    pod.Supplier2Code     = itemToAdd.Supplier2;
                    pod.Supplier3Code     = itemToAdd.Supplier3;
                    pod.Supplier1UnitCost = m.SupplierPriceLists.Where(x => x.SupplierCode == itemToAdd.Supplier1 && x.ItemCode == itemToAdd.ItemCode).Select(x => x.UnitCost).FirstOrDefault();
                    pod.Supplier2UnitCost = m.SupplierPriceLists.Where(x => x.SupplierCode == itemToAdd.Supplier2 && x.ItemCode == itemToAdd.ItemCode).Select(x => x.UnitCost).FirstOrDefault();
                    pod.Supplier3UnitCost = m.SupplierPriceLists.Where(x => x.SupplierCode == itemToAdd.Supplier3 && x.ItemCode == itemToAdd.ItemCode).Select(x => x.UnitCost).FirstOrDefault();

                    poFullDetailsList.Add(pod);
                }

                Session["newPOList"] = poFullDetailsList;

                //add to list meant for already added items
                List <String> tempList = (List <String>)Session["tempList"];
                tempList.Add(itemToAdd.ItemCode);
                Session["tempList"] = tempList;

                return(RedirectToAction("Purchase", "Store"));
            }
        }
        public ActionResult GoodsReceipt(string[] arrQty)
        {
            List <POFullDetail> poFullDetailList = (List <POFullDetail>)Session["POItems"];
            string poNumber            = (string)Session["poNumber"];
            int    arrayCount          = 0;
            float  totalInventoryValue = 0;
            string receiptNo           = null;
            bool   invalid             = false;

            int c = 0;

            try
            {
                using (SSISdbEntities m = new SSISdbEntities())
                {
                    foreach (POFullDetail p in poFullDetailList)
                    {
                        if ((p.QuantityOrdered - p.QuantityDelivered) < Convert.ToInt32(arrQty[c]) || Convert.ToInt32(arrQty[c]) < 0)
                        {
                            invalid = true;
                        }
                        if (Convert.ToInt32(arrQty[c]) < 0)
                        {
                            invalid = true;
                        }
                        c++;
                    }

                    if (invalid == false)
                    {
                        int newId = m.POReceiptHeaders.Count() + 1;
                        receiptNo = CommonLogic.SerialNo(newId, "POR");
                        int countQty       = 0;
                        int countInventory = 0;

                        // Tabulate all qty, to ensure total is not 0 (Prevent empty entries)
                        for (int i = 0; i < arrQty.Length; i++)
                        {
                            countQty += Convert.ToInt32(arrQty[i]);
                        }

                        // Create New PO Receipt Header
                        if (countQty > 0)
                        {
                            // Preparation for database update
                            foreach (POFullDetail p in poFullDetailList)
                            {
                                PODetail pod = m.PODetails.Where(x => x.ItemCode == p.ItemCode && x.PONumber == p.PONumber).FirstOrDefault();
                                totalInventoryValue += pod.UnitCost;
                            }

                            // Create PO Receipt Header first
                            POReceiptHeader porh = new POReceiptHeader();
                            porh.ReceiptNo       = receiptNo;
                            porh.PONumber        = poNumber;
                            porh.DeliveryOrderNo = "";
                            porh.ReceivedDate    = DateTime.Now;
                            porh.Receiver        = (string)Session["LoginEmployeeID"];
                            porh.Remarks         = "";
                            porh.TransactionType = "PO Receipt";
                            porh.TotalAmount     = totalInventoryValue;
                            m.POReceiptHeaders.Add(porh);
                            m.SaveChanges();
                            TempData["ReceiptNo"] = receiptNo;

                            // Adding into Database based on Items
                            foreach (POFullDetail p in poFullDetailList)
                            {
                                PODetail pod = m.PODetails.Where(x => x.ItemCode == p.ItemCode && x.PONumber == p.PONumber).FirstOrDefault();
                                int      qty = Convert.ToInt32(arrQty[arrayCount]);

                                // Only execute if qty > 0, meaning there's good received.
                                if (qty > 0 && (pod.QuantityOrdered - pod.QuantityDelivered) != 0)
                                {
                                    // Update PO Details Table
                                    if (pod.QuantityBackOrdered == qty)
                                    {
                                        pod.QuantityBackOrdered = 0;
                                    }
                                    else
                                    {
                                        pod.QuantityBackOrdered = pod.QuantityBackOrdered - qty;
                                    }
                                    pod.QuantityDelivered += qty;
                                    m.SaveChanges();

                                    // Update Item on Hand
                                    Item item = m.Items.Where(x => x.ItemCode == p.ItemCode).FirstOrDefault();
                                    item.Quantity += qty;
                                    m.SaveChanges();

                                    // Update Item Transaction
                                    ItemTransaction itemTransaction = new ItemTransaction();
                                    itemTransaction.TransDateTime   = DateTime.Now;
                                    itemTransaction.DocumentRefNo   = poNumber;
                                    itemTransaction.ItemCode        = item.ItemCode;
                                    itemTransaction.TransactionType = "PO Receipt";
                                    itemTransaction.Quantity        = qty;
                                    itemTransaction.UnitCost        = pod.UnitCost;
                                    itemTransaction.Amount          = pod.UnitCost * qty;
                                    m.ItemTransactions.Add(itemTransaction);
                                    m.SaveChanges();

                                    // Update POReceipt Details
                                    POReceiptDetail pord = new POReceiptDetail();
                                    pord.ReceiptNo        = receiptNo;
                                    pord.PONumber         = poNumber;
                                    pord.ItemCode         = item.ItemCode;
                                    pord.QuantityReceived = qty;
                                    pord.UnitCost         = pod.UnitCost;
                                    pord.Amount           = pod.UnitCost * qty;
                                    m.POReceiptDetails.Add(pord);
                                    m.SaveChanges();

                                    p.QuantityOrdered   = pod.QuantityBackOrdered;
                                    p.QuantityDelivered = pod.QuantityDelivered;
                                }
                                arrayCount++;
                            }

                            // Checking for completion of PO
                            foreach (POFullDetail p in poFullDetailList)
                            {
                                PODetail pod = m.PODetails.Where(x => x.ItemCode == p.ItemCode && x.PONumber == p.PONumber).FirstOrDefault();
                                countInventory += pod.QuantityBackOrdered;
                            }


                            POHeader poh = m.POHeaders.Where(x => x.PONumber == poNumber).FirstOrDefault();
                            // Completed PO
                            if (countInventory == 0)
                            {
                                poh.Status = "Completed";
                            }
                            else
                            {
                                poh.Status = "Outstanding";
                            }
                            m.SaveChanges();
                            Session["GRListPage"] = "2";
                            Session["poStatus"]   = "Completed";
                        }
                    }
                    else
                    {
                        Debug.WriteLine("invalid qty");
                        ViewBag.ErrorAmt = "Invalid Quantity!";
                        Session["StorePurchaseTabIndex"] = "2";
                        return(View("DisplayPO"));
                    }
                }
            }
            catch (Exception)
            {
                TempData["ErrorMsg"]             = "Please enter a valid number!";
                Session["StorePurchaseTabIndex"] = "2";
                return(View("DisplayPO"));
            }

            Session["POItems"]           = poFullDetailList;
            Session["poDetailsEditMode"] = false;
            Session["grId"] = receiptNo;
            Session["StorePurchaseTabIndex"] = "3";

            return(RedirectToAction("DisplayGR", "StorePurchase"));
        }
Ejemplo n.º 23
0
 public int UpdatePODetail(PODetail poDetail)
 {
     return(poDetailsDAO.UpdatePODetail(poDetail));
 }
Ejemplo n.º 24
0
        /// <summary>
        /// 获取滚动排期表数据
        /// </summary>
        /// <param name="factoryID">工厂id</param>
        /// <param name="poCode">生产单号</param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="orderType">Eric添加 生产单类型:实单1,非实单0 </param>
        private void InitData(int factoryID, string poCode, DateTime startDate, DateTime endDate, int orderType, string lotNO)
        {
            //客户信息
            this.DicAllCustomers = Customer.GetDictionary(null);
            //产品分类
            this.DicProductType = ProductType.GetDictionary(null);
            this.InitLstReportSetting();

            //返回选中的工厂ID字符串
            /// 多个用逗号隔开,默认全选
            /// 格式:"1,2,3,4,5,6"
            //string FactorySelectIDsStr = "1,2,3,12,14,15,16,17";
            string FactorySelectIDsStr = factoryID.ToString();

            this.DicSimulation.Clear();
            this.DicVirProdEvent.Clear();

            // 目标生产线集合
            Filter filter = new Filter();

            filter.AddSort("FactoryID");
            filter.AddSort("ID");
            //if (!string.IsNullOrEmpty(groupNames))
            //    filter.Add("GroupName", groupNames, RELEATTION_TYPE.IN, LOGIC_TYPE.AND);
            filter.Add("FactoryID", FactorySelectIDsStr, RELEATTION_TYPE.IN, LOGIC_TYPE.AND);

            List <Facility> lstFacility = Facility.GetList(filter);

            this.LstVirtualFacility = new List <VirtualFacility>();
            List <int> ids = new List <int>();

            //
            // 相关的生产计划
            foreach (Facility fa in lstFacility)
            {
                if (!AMOData.Settings.ImpSetting.IsOutsourcedScheduling && fa.IsSubCon)//外发不排产需过滤外发线
                {
                    continue;
                }
                ids.Add(fa.ID);
                LstVirtualFacility.Add(new VirtualFacility(fa));
            }
            string wherein = string.Join(",", (from p in ids.Distinct() select p.ToString()).ToArray());

            if (string.IsNullOrEmpty(wherein))
            {
                return;
            }

            filter = new Filter();
            filter.Add(AMODataHelper.GetStringFromList(ids, 1000, "FacilityID"), LOGIC_TYPE.AND);
            filter.Add("StartTime", endDate.Date.AddDays(1), RELEATTION_TYPE.LESS, LOGIC_TYPE.AND);
            filter.Add("EndTime", startDate.Date, RELEATTION_TYPE.GREATEREQUAL, LOGIC_TYPE.AND);

            /*
             * if (orderType > -1)
             *  filter.Add("ISFIRMORDER", orderType, RELEATTION_TYPE.EQUAL, LOGIC_TYPE.AND);
             */
            if (orderType > -1)
            {
                filter.AddFrom("productioneventdetail", "ProductionEvent.ID=productioneventdetail.ProductionEventID", JOIN_TYPE.LEFT);
                filter.AddFrom("PO", "PO.ID = productioneventdetail.POID", JOIN_TYPE.LEFT);
                filter.Add("PO.ISFIRMORDER", orderType, RELEATTION_TYPE.EQUAL, LOGIC_TYPE.AND);
            }
            if (string.IsNullOrEmpty(lotNO) == false)
            {
                string sql = string.Format("(select id from po where LotNO like '%{0}%')", lotNO);
                filter.Add("ProductionEvent.POID", sql, RELEATTION_TYPE.IN, LOGIC_TYPE.AND);
            }
            filter.AddSort("StartTime");
            this.LstProdEvent   = ProductionEvent.GetList(filter);
            this.DicFaProdEvent = new Dictionary <int, IEnumerable <ProductionEvent> >();
            foreach (var g in this.LstProdEvent.GroupBy(x => x.FacilityID))
            {
                this.DicFaProdEvent[g.Key] = g.ToList();
            }
            //获取计划完成日期
            var peFilter = new Filter();

            peFilter.Add(AMODataHelper.GetStringFromList(ids, 1000, "PRODUCTIONEVENT.FacilityID"), LOGIC_TYPE.AND);
            peFilter.Add("PRODUCTIONEVENT.StartTime", endDate.Date.AddDays(1), RELEATTION_TYPE.LESS, LOGIC_TYPE.AND);
            peFilter.Add("PRODUCTIONEVENT.EndTime", startDate.Date, RELEATTION_TYPE.GREATEREQUAL, LOGIC_TYPE.AND);
            peFilter.Add("PRODUCTIONEVENT.STATUS", 1, RELEATTION_TYPE.EQUAL, LOGIC_TYPE.AND);
            this.DicProdFinishDates = ProductionSchedule.GetProductionFinishedDate(peFilter);

            //动态人数
            Filter fwnFilter = new Filter();
            string idStr     = string.Join(",", (from p in ids.Distinct() select p.ToString()).ToArray());

            fwnFilter.Add("FacilityID", idStr, RELEATTION_TYPE.IN, LOGIC_TYPE.AND);
            var lstFwn = FacilityWorkerNumber.GetList(fwnFilter);

            this.DicFwn = new Dictionary <int, IEnumerable <FacilityWorkerNumber> >();
            foreach (var g in lstFwn.GroupBy(x => x.FacilityID))
            {
                DicFwn[g.Key] = g.ToList();
            }
            //ids = new List<int>();
            //ids = (from item in this.LstProdEvent select item.POID).ToList();
            //this.LstProdEvent = ProductionEvent.GetList(filter);

            if (this.LstProdEvent.Count > 0)
            {
                var mylist = this.LstProdEvent.Where(x => !string.IsNullOrEmpty(x.GroupID));
                if (mylist.Any())
                {
                    var gids = mylist.Select(x => x.GroupID).Distinct();
                    var lst  = gids.ToList();
                    groupIdCodes = AMO.BLL.ProductionEvent.GetAboutGroupIdList(lst); //获取与组ID关联的POCODE列表
                }
            }



            //生产计划细分
            ids    = new List <int>();
            filter = new Filter();
            ids    = (from item in this.LstProdEvent select item.ID).ToList();
            this.DicProdEventDetail = new Dictionary <int, List <ProductionEventDetail> >();
            List <ProductionEventDetail> lstProdEventDetail = new List <ProductionEventDetail>();

            if (ids.Count > 0)
            {
                filter.Add(AMODataHelper.GetStringFromList(ids, 1000, "ProductionEventID"), LOGIC_TYPE.AND);
                if (!string.IsNullOrEmpty(poCode))
                {
                    filter.Add("POID", string.Format("SELECT id FROM dbo.PO WHERE CODE LIKE '%{0}%'", poCode), RELEATTION_TYPE.IN, LOGIC_TYPE.AND);
                }

                lstProdEventDetail = ProductionEventDetail.GetList(filter);
                foreach (var g in lstProdEventDetail.GroupBy(x => x.ProductionEventID))
                {
                    this.DicProdEventDetail[g.Key] = g.ToList();
                }
            }

            //生产单信息
            ids    = new List <int>();
            filter = new Filter();
            ids    = (from item in lstProdEventDetail select item.POID).Distinct().ToList();
            string sokeySql = string.Empty;

            if (ids.Count > 0)
            {
                filter.Add(AMODataHelper.GetStringFromList(ids, 1000, "ID"), LOGIC_TYPE.AND);
                if (!string.IsNullOrEmpty(poCode))
                {
                    filter.Add("Code", poCode, RELEATTION_TYPE.LIKE, LOGIC_TYPE.AND);
                }
                string poidSql = DBHelper.GetDistinctSql("PO", "ID", filter);
                sokeySql   = DBHelper.GetDistinctSql("PO", "SoKeyID", filter);
                this.DicPO = PO.GetDictionary(filter);
                filter     = new Filter();
                filter.Add("POID", poidSql, RELEATTION_TYPE.IN, LOGIC_TYPE.AND);
                this.LstPODetail = PODetail.GetList(filter, false);

                //关键事件(物料ETA)日期,有实际区实际,没实际区预计
                var eventFilter = new Filter();
                eventFilter.AddFrom("EVENTFLOWNODE", "EVENTFLOWNODE.ID=POEVENT.EVENTFLOWNODEID", JOIN_TYPE.INNER);
                eventFilter.Add("EVENTFLOWNODE.CRITICALEVENTID", AMOData.Settings.SysSetting.Rpt_ActualMaterialETA, RELEATTION_TYPE.EQUAL, LOGIC_TYPE.AND);
                eventFilter.Add("POEVENT.POID", poidSql, RELEATTION_TYPE.IN, LOGIC_TYPE.AND);
                List <POEvent> lstPOEvent = POEvent.GetList(eventFilter);
                this.DicPOEvents = new Dictionary <int, POEvent>();
                foreach (POEvent model in lstPOEvent)
                {
                    if (DicPOEvents.ContainsKey(model.POID) == false)
                    {
                        DicPOEvents.Add(model.POID, model);
                    }
                }
            }
            else
            {
                this.DicPO       = new Dictionary <int, PO>();
                this.LstPODetail = new List <PODetail>();
            }



            //
            if (!string.IsNullOrEmpty(sokeySql))
            {
                Filter sokeyFilter = new Filter();
                sokeyFilter.Add("SoKeyID", sokeySql, RELEATTION_TYPE.IN, LOGIC_TYPE.AND);
                sokeyFilter.Add("MaterialStyle", 6, RELEATTION_TYPE.NOTEQUAL, LOGIC_TYPE.AND);
                LstPOMaterialRequest = POMaterialRequest.GetListOnlySample(sokeyFilter);
                LstPOMaterialRequest.Sort(POMaterialRequest.ComparerByDate);
            }

            #region 用于计算 计划的每日计划产量
            List <VirtualProdEvent> lstVirProdEvent = this.CreateVirtualProdEvent(this.LstProdEvent, lstProdEventDetail);
            this.DicVirProdEvent = lstVirProdEvent.ToDictionary(x => x.ID);

            if (this.LstReportSetting.Find(x => x.ColumnName == "AreaPlanQty" || x.ColumnName == "AreaOutput") != null)//AMOHB-3684 增加区间排单数、区间产值
            {
                var gsVpe = lstVirProdEvent.GroupBy(x => x.FacilityID);
                foreach (var g in gsVpe)
                {
                    var virFacility = this.LstVirtualFacility.Find(x => x.ID == g.Key);
                    if (virFacility != null)
                    {
                        foreach (var vpe in g.ToList())
                        {
                            vpe.FactoryID = virFacility.FactoryID;
                        }
                    }
                }

                //按工厂生产simulation对象
                var gsFacility = this.LstVirtualFacility.GroupBy(x => x.FactoryID);
                foreach (var g in gsFacility)
                {
                    if (!DicSimulation.ContainsKey(g.Key))
                    {
                        //Simulation sim = this.CreateSimulation(g.Key, lstVirProdEvent.Where(x => x.FactoryID == g.Key).ToList());
                        var lstVirProdEventFinded = lstVirProdEvent.Where(x => x.FactoryID == g.Key);
                        if (lstVirProdEventFinded != null && lstVirProdEventFinded.Count() > 0)
                        {
                            Simulation sim = this.CreateSimulation(g.Key, lstVirProdEventFinded.ToList());
                            DicSimulation.Add(g.Key, sim);
                        }
                    }
                }
            }
            #endregion
        }
Ejemplo n.º 25
0
 public void UpdatePODetail(PODetail poDetail)
 {
     context.Entry(poDetail).State = EntityState.Modified;
 }
Ejemplo n.º 26
0
 public static PurchaseOrder ValidatePOForm(Dictionary <string, string> values)
 {
     try
     {
         string ErrorMessage = string.Empty;
         if (values["Origin"] == "0")
         {
             ErrorMessage += "Origin, ";
         }
         if (values["Size"] == "0")
         {
             ErrorMessage += "Size, ";
         }
         if (values["Vessel"] == "0")
         {
             ErrorMessage += "Vessel, ";
         }
         if (string.IsNullOrEmpty(values["PODate"]))
         {
             ErrorMessage += "PO Date, ";
         }
         if (string.IsNullOrEmpty(values["TargetDays"]))
         {
             ErrorMessage += "Target Days, ";
         }
         if (string.IsNullOrEmpty(values["Supplier"]))
         {
             ErrorMessage += "Supplier, ";
         }
         if (string.IsNullOrEmpty(values["Lead"]))
         {
             ErrorMessage += "Lead, ";
         }
         // if (key == "PaymentTerms" && string.IsNullOrEmpty(value)) throw new Exception("PaymentTerms is required");
         if (string.IsNullOrEmpty(values["BufferMin"]))
         {
             ErrorMessage += "Buffer Min %, ";
         }
         if (string.IsNullOrEmpty(values["BufferMax"]))
         {
             ErrorMessage += "Buffer Max %, ";
         }
         if (values["Customer_1"] == "0")
         {
             ErrorMessage += "Customer, ";
         }
         if (string.IsNullOrEmpty(ErrorMessage))
         {
             bool error = false;
             for (int i = 1; i <= 10; i++)
             {
                 if (values["Customer_" + i] == "0")
                 {
                     continue;
                 }
                 if (string.IsNullOrEmpty(values["Quantity_" + i]))
                 {
                     error = true;
                 }
                 if (string.IsNullOrEmpty(values["Rate_" + i]))
                 {
                     error = true;
                 }
                 if (string.IsNullOrEmpty(values["AllowedWastage_" + i]))
                 {
                     error = true;
                 }
                 if (string.IsNullOrEmpty(values["CostPerTon_" + i]))
                 {
                     error = true;
                 }
                 DateTime tdate = new DateTime();
                 if (!DateTime.TryParse(values["TargetDate_" + i], out tdate))
                 {
                     error = true;
                 }
                 if (error)
                 {
                     ErrorMessage += "PO Detail";
                     break;
                 }
             }
         }
         if (string.IsNullOrEmpty(ErrorMessage))
         {
             PurchaseOrder PO = NewPO();
             PO.Lead              = UserManager.GetUserRef(values["Lead"]);
             PO.PODate            = values.ContainsKey("PODate") ? DateTime.Parse(values["PODate"]) : DateTime.Now;
             PO.Origin            = Common.GetOrigin(values["Origin"]);
             PO.Size              = Common.GetSize(values["Size"]);
             PO.Vessel            = Common.GetVessel(values["Vessel"]);
             PO.TargetDays        = values.ContainsKey("TargetDays") ? int.Parse(values["TargetDays"]) : 0;
             PO.Supplier          = Common.GetSupplier(values["Supplier"]);
             PO.TermsOfPayment    = values["PaymentTerms"];
             PO.BufferQuantityMin = values.ContainsKey("BufferMin") ? decimal.Parse(values["BufferMin"]) : 10;
             PO.BufferQuantityMax = values.ContainsKey("BufferMax") ? decimal.Parse(values["BufferMax"]) : 10;
             for (int i = 1; i <= 10; i++)
             {
                 if (values.ContainsKey("Customer_" + i.ToString()))
                 {
                     if (values["Customer_" + i.ToString()] != "0")
                     {
                         PODetail pod = NewPODetail(PO);
                         pod.Customer        = CustomerManager.GetCustomerRef(values["Customer_" + i.ToString()]);
                         pod.Quantity        = values.ContainsKey("Quantity_" + i.ToString()) ? decimal.Parse(values["Quantity_" + i.ToString()]) : 0;
                         pod.Rate            = values.ContainsKey("Rate_" + i.ToString()) ? decimal.Parse(values["Rate_" + i.ToString()]) : 0;
                         pod.AllowedWaistage = values.ContainsKey("AllowedWastage_" + i.ToString()) ? decimal.Parse(values["AllowedWastage_" + i.ToString()]) : 0;
                         pod.CostPerTon      = values.ContainsKey("CostPerTon_" + i.ToString()) ? decimal.Parse(values["CostPerTon_" + i.ToString()]) : 0;
                         pod.TargetDate      = values.ContainsKey("TargetDate_" + i.ToString()) ? DateTime.Parse(values["TargetDate_" + i.ToString()]) : DateTime.MaxValue;
                         PO.PODetailsList.Add(pod);
                     }
                 }
             }
             PO = PurchaseDataManager.CalculatePO(PO);
             if (PO.isValid)
             {
                 return(PO);
             }
         }
         throw new Exception("Enter required fields: " + ErrorMessage);
     }
     catch (Exception ex)
     {
         ExceptionHandler.Error(ex.Message);
     }
     return(null);
 }
Ejemplo n.º 27
0
 public void InsertPODetail(PODetail poDetail)
 {
     context.PODetails.Add(poDetail);
 }
        public RedirectToRouteResult AddToPO(string[] arr1, string[] arr2, string[] arrSupplier)
        {
            try
            {
                int enteredQty = 0;
                if (arr1 != null)
                {
                    for (int i = 0; i < arr1.Length; i++)
                    {
                        enteredQty += Convert.ToInt32(arr1[i]);
                    }
                }

                if (enteredQty > 0)
                {
                    List <ReorderList> poDetailsList = (List <ReorderList>)Session["ReorderList"];
                    List <Supplier>    supplierList  = new List <Supplier>();
                    List <Item>        itemAdded     = new List <Item>();
                    using (SSISdbEntities m = new SSISdbEntities())
                    {
                        // Checking for number of suppliers to Iterate & later used for creating no. of PO
                        for (int i = 0; i < arrSupplier.Length; i++)
                        {
                            string   supCode  = arrSupplier[i];
                            Supplier supplier = m.Suppliers.Where(x => x.CompanyName == supCode).FirstOrDefault();
                            if (!supplierList.Contains(supplier))
                            {
                                supplierList.Add(supplier);
                            }
                        }

                        // Change Item Supplier in PODetails for retrieving in list and adding into database later
                        foreach (ReorderList p in poDetailsList)
                        {
                            if (arr2.Contains(p.Description))
                            {
                                int      index = arr2.ToList().FindIndex(x => x == p.Description);
                                string   coy   = arrSupplier[index];
                                Supplier sup   = m.Suppliers.Where(x => x.CompanyName == coy).FirstOrDefault();
                                p.s1 = sup.CompanyName;
                            }
                        }

                        // Each Supplier iterates once such that only 1 PO is created for each of them
                        foreach (Supplier s in supplierList)
                        {
                            // Create new PO based on supplier
                            int    count = m.POHeaders.Count() + 1;
                            string poId  = CommonLogic.SerialNo(count, "PO");

                            POHeader newPOHeader = new POHeader();
                            newPOHeader.PONumber        = poId;
                            newPOHeader.Date            = DateTime.Now;
                            newPOHeader.SupplierCode    = s.SupplierCode;
                            newPOHeader.ContactName     = s.ContactName;
                            newPOHeader.DeliverTo       = "Logic University";
                            newPOHeader.EmployeeID      = (string)Session["LoginEmployeeID"];
                            newPOHeader.Remarks         = "";
                            newPOHeader.Status          = "Open";
                            newPOHeader.TransactionType = "PO";
                            m.POHeaders.Add(newPOHeader);
                            m.SaveChanges();

                            // Loop through PODetails to add items based on selected supplier suppliers
                            foreach (ReorderList pod in poDetailsList)
                            {
                                // Only add if the item is belonging to the supplier / PO
                                string   supName  = pod.s1;
                                Supplier supplier = m.Suppliers.Where(x => x.CompanyName == supName).FirstOrDefault();
                                if (supplier == s)
                                {
                                    // Only add if the item has not been added
                                    Item i = m.Items.Where(x => x.ItemCode == pod.ItemCode).FirstOrDefault();
                                    if (!itemAdded.Contains(i))
                                    {
                                        PODetail poDetailToAdd = new PODetail();
                                        float    itemUnitPrice = m.SupplierPriceLists.Where(x => x.SupplierCode == s.SupplierCode &&
                                                                                            x.ItemCode == pod.ItemCode).Select(y => y.UnitCost).FirstOrDefault();
                                        poDetailToAdd.PONumber = poId;
                                        poDetailToAdd.ItemCode = pod.ItemCode;

                                        int index = arr2.ToList().FindIndex(x => x == pod.Description);
                                        if (index != -1)
                                        {
                                            int qty = Convert.ToInt32(arr1[index]);
                                            poDetailToAdd.QuantityOrdered      = qty;
                                            poDetailToAdd.QuantityBackOrdered  = qty;
                                            poDetailToAdd.QuantityDelivered    = 0;
                                            poDetailToAdd.UnitCost             = itemUnitPrice;
                                            poDetailToAdd.CancelledBackOrdered = 0;
                                            m.PODetails.Add(poDetailToAdd);
                                        }

                                        m.SaveChanges();
                                        itemAdded.Add(i);
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    TempData["ErrorMsg"] = "You have not included any quantity";
                }
                Session["newPOList"] = new List <PODetail>();
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                TempData["ErrorMsg"] = "Please key in a valid quantity";
            }


            return(RedirectToAction("Inventory", "Store"));
        }
Ejemplo n.º 29
0
        public void DeletePODetail(string poNumber, string itemCode)
        {
            PODetail poDetail = context.PODetails.Where(x => x.PONumber == poNumber && x.ItemCode == itemCode).First();

            context.PODetails.Remove(poDetail);
        }
Ejemplo n.º 30
0
 //update PODetail
 private int UpdatePODetail(PODetail pod)
 {
     return(new PODetailsDAO().UpdatePODetail(pod));
 }