public string PullAndSaveToOGAPS(string ponum)
        {
            try
            {
                using (var client = new HttpClient())
                {
                    string url = ConfigurationManager.AppSettings.Get("webService:URL") + "maximo/oslc/os/KA_MXPO_REC?lean=1&oslc.select=*&oslc.where=ponum=" + "\"" + ponum + "\" and status in [\"APPR\",\"CLOSE\",\"INPRG\",\"WAPPR\"]";
                    client.BaseAddress = new Uri(url);

                    client.DefaultRequestHeaders.Add("MAXAUTH", "Q09MX1NWQ19Lb2ZheF9PQ1JJbWFnZXM6SzA1QFgxbnQzNnQxb24=");

                    HttpResponseMessage response = client.GetAsync("").Result;
                    this.LogoutMaximo();
                    client.Dispose();

                    if (response.IsSuccessStatusCode)
                    {
                        var jsonString = response.Content.ReadAsStringAsync();
                        jsonString.Wait();

                        JToken root = JObject.Parse(jsonString.Result)["member"];

                        if (root.Count() == 0)
                        {
                            return("not found");
                        }

                        poheader = JsonConvert.DeserializeObject <POHeader>(root[0].ToString());

                        using (PullPOHelper pohelper = new PullPOHelper(poheader))
                        {
                            return(pohelper.StoreToDB());
                        }
                    }
                    else
                    {
                        return(response.StatusCode + " : " + response.ReasonPhrase);
                    }
                }
            }
            catch (Exception ex)
            {
                return("failed :" + ex.Message);
            }
        }
 private void UpdatePo(POHeader poHeader)
 {
     try
     {
         var connString = ConfigurationManager.ConnectionStrings["ADONET35"].ToString();
         using (var oConnection = new PsqlConnection(connString))
         {
             oConnection.Open();
             var insertCommand = CreateInsertStatement(oConnection, poHeader);
             insertCommand.ExecuteNonQuery();
             oConnection.Close();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public ActionResult DisplayPO(FormCollection data)
        {
            Session["POListPage"] = "2";
            string poNumber = data["PONumber"];

            Session["poNumber"] = poNumber;
            using (SSISdbEntities m = new SSISdbEntities())
            {
                List <POFullDetail> poFullDetailList = m.POFullDetails.Where(x => x.PONumber == poNumber).ToList();
                POHeader            ph = m.POHeaders.Where(x => x.PONumber == poNumber).FirstOrDefault();
                Session["PORemarks"] = ph.Remarks;

                Session["POItems"]  = poFullDetailList;
                Session["poStatus"] = m.POHeaders.Where(x => x.PONumber == poNumber).Select(x => x.Status).FirstOrDefault();
            }

            return(View());
        }
Beispiel #4
0
 public POHeaderModel Create(POHeader pOHeader)
 {
     if (pOHeader == null)
     {
         return(null);
     }
     return(new POHeaderModel()
     {
         Company = pOHeader.Company,
         PONum = pOHeader.PONum,
         DONum = pOHeader.DONum,
         SuppNum = pOHeader.SuppNum,
         SuppId = pOHeader.SuppId,
         SuppName = pOHeader.SuppName,
         CartonLabel = pOHeader.CartonLabel,
         PODetails = pOHeader.PODetails?.Select(c => Create(c))
     });
 }
        private PsqlCommand CreateInsertStatement(PsqlConnection oConnection, POHeader poHeader)
        {
            var commandText = "INSERT INTO PO_Header (po_no, NewJobNumber, activity, vendor_id, po_type, release_date, cancelled_date, payment_amount," +
                              "subtotal, tax, total, egm_amount, vpo_yes_no, UserID, LastModifiedDate, Community, Product, Building, Unit," +
                              "taxable_amount, job_no, eSubmittalDate, ApprovePaymentDate, Invoice, TaxRate, eMeasurementPO, SapphirePONumber, SapphireObjID," +
                              "SapphireObjRID)" +
                              "VALUES (@po_no,@NewJobNumber, @activity, @vendor_id, @po_type, @release_date, @cancelled_date, @payment_amount,@subtotal, @tax," +
                              "@total, @egm_amount,@vpo_yes_no, @UserID, @LastModifiedDate, @Community,@Product, @Building,@Unit, @taxable_amount," +
                              "@job_no, @eSubmittalDate, @ApprovePaymentDate, @Invoice,@TaxRate, @eMeasurementPO, @SapphirePONumber, @SapphireObjID, @SapphireObjRID)";

            var command = new PsqlCommand
            {
                Connection  = oConnection,
                CommandText = commandText
            };

            CreateCommandParameters(command, poHeader);
            return(command);
        }
Beispiel #6
0
        public ActionResult ExportPrint(int Id = 0, bool isView = true, string listPO = "")
        {
            using (var dbConn = Helpers.OrmliteConnection.openConn())
            {
                ViewBag.listitem = dbConn.Select <PODetail>(@"
                                        SELECT detail.*, pr.ten_san_pham AS ten_san_pham, d.ten_chi_nhanh as ten_don_vi,d.dia_chi as dia_chi_dv,
                                        detail.don_gia * detail.so_luong as thanh_tien, std.ngay_tao as ngay_to_trinh, p.gia_tri as ten_don_vi_tinh,detail.ma_phieu_header,std.ma_pyc_header as ma_phieu_PR
                                        FROM PODetail detail
                                        LEFT JOIN dbo.Product pr
                                        ON detail.ma_san_pham=pr.ma_san_pham
                                        LEFT JOIN Parameters p ON pr.ma_don_vi_tinh = p.ma_tham_so
                                        LEFT JOIN Branch d
                                        ON detail.ma_don_vi = d.ma_don_vi
                                        INNER JOIN StatementDetail std
                                        ON detail.id_StatementDetail = std.id
                                        WHERE detail.ma_phieu_header={0}
                                        order by d.ten_chi_nhanh
	                                    "    .Params(listPO));

                //string[] listSP = dbConn.FirstOrDefault<PODetail>(@"select p.ma_san_pham
                //                                        from PODetail p
                //                                        where p.ma_phieu_header=".Params(listPO));
                //foreach (var item in listSP)
                //{
                //    ViewBag.listSTM = dbConn.Select<PODetail>(@"select DISTINCT po.ma_to_trinh
                //                                                from PODetail po, StatementDetail st
                //                                                where st.ma_phieu_header=po.ma_to_trinh and st.ma_san_pham={0}".Params(item.ma_san_pham));
                //}


                //POHeader itemHeader = dbConn.FirstOrDefault<POHeader>(s => s.ma_phieu == listPO);
                POHeader itemHeader = dbConn.SqlList <POHeader>("EXEC ExportPrintPOHeader @WhereCondition", new { WhereCondition = " AND ma_phieu = {0}".Params(listPO) }).FirstOrDefault();
                ViewBag.ItemHeader = itemHeader;
                ViewBag.Vendor     = dbConn.FirstOrDefault <Vendor>(s => s.nha_cung_cap_id == itemHeader.ma_nha_cung_cap);

                var subtemplate = "_template_product_table_po";
                ViewBag.subWiewName = subtemplate;
                string viewName = "_template_export_po";
                string html     = RenderPartialViewToString(viewName);
                return(View(viewName));
            }
        }
Beispiel #7
0
        public async Task <IActionResult> UpdatePO([FromBody] POHeader header)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    await PoHeader.UpdatePOHeader(header);

                    return(Ok());
                }
                catch (Exception ex)
                {
                    if (ex.GetType().FullName == "Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException")
                    {
                        return(NotFound());
                    }

                    return(BadRequest());
                }
            }

            return(BadRequest());
        }
Beispiel #8
0
        public static POHeaderDTO MapFromDatabaseEntity(POHeader projectPOHeader)
        {
            if (projectPOHeader == null)
            {
                return(null);
            }

            return(new POHeaderDTO
            {
                Id = projectPOHeader.Id,
                Supplier = projectPOHeader.Supplier,
                PurchaseOrderNumber = projectPOHeader.PurchaseOrderNumber,
                ShippingAddress = projectPOHeader.ShippingAddress,
                OrderDate = projectPOHeader.OrderDate,
                OrderTotal = projectPOHeader.OrderTotal,
                Currency = projectPOHeader.Currency,
                AccountingTotalCurrency = projectPOHeader.AccountingTotalCurrency,

                ProjectId = projectPOHeader.ProjectId,

                POLineItems = projectPOHeader.POLineItems?.Select(POLineItemDTO.MapFromDatabaseEntity).ToList() ??
                              new List <POLineItemDTO>(),
            });
        }
Beispiel #9
0
 public ActionResult Update(POHeader data, List <PODetail> details)
 {
     using (var dbConn = Helpers.OrmliteConnection.openConn())
     {
         try
         {
             if (accessDetail.sua)
             {
                 var exist = dbConn.SingleOrDefault <POHeader>("id={0}", data.id);
                 //exist.ten_phieu = data.ten_phieu;
                 exist.nguoi_cap_nhat = currentUser.ma_nguoi_dung;
                 exist.ngay_cap_nhat  = DateTime.Now;
                 dbConn.Update(exist);
                 foreach (var item in details)
                 {
                     var detail = dbConn.FirstOrDefault <PODetail>(s => s.id == item.id);
                     detail.thong_so_ky_thuat = item.thong_so_ky_thuat;
                     detail.muc_dich_su_dung  = item.muc_dich_su_dung;
                     detail.thong_tin_noi_bo  = item.thong_tin_noi_bo;
                     detail.nguoi_cap_nhat    = currentUser.ma_nguoi_dung;
                     detail.ngay_cap_nhat     = DateTime.Now;
                     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, id = data.id }));
         }
         catch (Exception ex)
         {
             return(Json(new { success = false, error = ex.Message }));
         }
     }
 }
        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"));
        }
Beispiel #11
0
 public POHeader Add(POHeader poHeader)
 {
     return(_context.PurchaseOrderHeaders.Add(poHeader).Entity);
 }
Beispiel #12
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);
        }
        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"));
        }
Beispiel #14
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 }));
                }
            }
        }
 public void UpdatePOHeader(POHeader poHeader)
 {
     context.Entry(poHeader).State = EntityState.Modified;
 }
        public void DeletePOHeader(string poNumber)
        {
            POHeader poHeader = context.POHeaders.Find(poNumber);

            context.POHeaders.Remove(poHeader);
        }
 public void InsertPOHeader(POHeader poHeader)
 {
     context.POHeaders.Add(poHeader);
 }
        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"));
        }
        public POHeaderDTO Add(POHeaderDTO pOHeader)
        {
            var response = _projectPurchaseOrderRepository.Add(POHeader.MapFromDomainEntity(pOHeader));

            return(POHeaderDTO.MapFromDatabaseEntity(response));
        }
Beispiel #20
0
        public HttpResponseMessage Post([FromBody] POHeaderModel objPOHeaderModel)
        {
            try
            {
                if (objPOHeaderModel != null)
                {
                    if (objPOHeaderModel.PODetails == null)
                    {
                        throw new Exception("PODetails is Null!");
                    }
                    if (objPOHeaderModel.PODetails.Count() > 1)
                    {
                        throw new Exception("PODetails more than one row!");
                    }

                    var podtlRcvQty = objPOHeaderModel.PODetails.Where(x => x.OrdQty < (x.Qty + x.PrevRcvQty)).SingleOrDefault();
                    if (podtlRcvQty != null)
                    {
                        throw new Exception("Receivng Qty is more than OrderQty!");
                    }
                    var tuid = objPOHeaderModel.PODetails.Select(s => s.TuId).ToList <string>().FirstOrDefault();
                    if (string.IsNullOrEmpty(tuid))
                    {
                        throw new Exception("TuId is Empty!");
                    }
                    var lotNum   = objPOHeaderModel.PODetails.Select(s => s.LotNum).ToList <string>().FirstOrDefault();
                    var tracklot = objPOHeaderModel.PODetails.Select(s => s.TrackLot).ToList <bool>().FirstOrDefault();

                    if (string.IsNullOrEmpty(lotNum) && tracklot)
                    {
                        throw new Exception("LotNum is Empty!");
                    }


                    if (tracklot)
                    {
                        var objLotAtt = objPOHeaderModel.PODetails.Select(s => s.LotAttribute).ToList <LotAttributeModel>().FirstOrDefault();
                        if (objLotAtt == null)
                        {
                            throw new Exception("Lot Attribute is Null!");
                        }
                        else
                        {
                            if (objLotAtt.AttBatch == "M" && string.IsNullOrEmpty(objLotAtt.Batch))
                            {
                                throw new Exception("Batch Attribute is Mandatory!");
                            }

                            if (objLotAtt.AttMfgBatch == "M" && string.IsNullOrEmpty(objLotAtt.MBatch))
                            {
                                throw new Exception("MBatch Attribute is Mandatory!");
                            }
                            if (objLotAtt.AttMfgLot == "M" && string.IsNullOrEmpty(objLotAtt.MLot))
                            {
                                throw new Exception("MLot Attribute is Mandatory!");
                            }

                            if (objLotAtt.AttHeat == "M" && string.IsNullOrEmpty(objLotAtt.Heat))
                            {
                                throw new Exception("Heat Attribute is Mandatory!");
                            }
                            if (objLotAtt.AttFirmware == "M" && string.IsNullOrEmpty(objLotAtt.Firm))
                            {
                                throw new Exception("Firm Attribute is Mandatory!");
                            }

                            if (objLotAtt.AttBeforeDt == "M" && objLotAtt.BestBefore == null)
                            {
                                throw new Exception("BeforeDate Attribute is Mandatory!");
                            }
                            if (objLotAtt.AttMfgDt == "M" && objLotAtt.OrigMfg == null)
                            {
                                throw new Exception("OrigMfg Date Attribute is Mandatory!");
                            }
                            if (objLotAtt.AttCureDt == "M" && objLotAtt.Cure == null)
                            {
                                throw new Exception("CureDate Attribute is Mandatory!");
                            }
                            if (objLotAtt.AttExpDt == "M" && objLotAtt.Expire == null)
                            {
                                throw new Exception("ExpiryDate Attribute is Mandatory!");
                            }
                        }
                    }

                    POHeader      objPOHeader = _pOReceiptModelFactory.Convert(objPOHeaderModel);
                    BusinessLayer BL          = new BusinessLayer();
                    string        msg         = BL.InsertPOHeader(objPOHeader);
                    if (msg == "")
                    {
                        return(Request.CreateResponse(HttpStatusCode.OK, msg));
                    }
                    else
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, msg));
                    }
                }
                else
                {
                    throw new Exception("POHeader is Null!");
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }