Exemplo n.º 1
0
        public ActionResult BatchCheckOrderLines(OrderLineBatchCheckArg arg)
        {
            try
            {
                List <OrderLineItem> olList = new List <OrderLineItem>();

                OrderLineCheckArg olArg = new OrderLineCheckArg
                {
                    primarySysID     = arg.primarySysID,
                    primaryWareHouse = arg.primaryWareHouse,
                    altSysID         = arg.altSysID,
                    altWareHosue     = arg.altWareHosue,
                    customerNo       = arg.customerNo
                };
                foreach (var item in arg.olItemList)
                {
                    olArg.olItem = item;
                    CheckOrderLineItemAction(olArg);
                    olList.Add(olArg.olItem);
                }
                return(Json(olList));
            }
            catch (Exception ex)
            {
                //log
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Content(ex.Message));
            }
        }
Exemplo n.º 2
0
 public ActionResult CheckOrderLineItem(OrderLineCheckArg olArg)
 {
     try
     {
         string msg = CheckOrderLineItemAction(olArg);
         if (string.IsNullOrEmpty(msg))
         {
             return(Json(olArg.olItem));
         }
         else
         {
             Response.StatusCode = (int)HttpStatusCode.BadRequest;
             return(Content(msg));
         }
     }
     catch (Exception ee)
     {
         Response.StatusCode = (int)HttpStatusCode.InternalServerError;
         return(Content(ee.Message));
     }
 }
Exemplo n.º 3
0
        public ActionResult InitOrder(decimal orderSeq)
        {
            //if (Session[CHubConstValues.SessionUser] == null)
            //    return RedirectToAction("Login", "Account");

            using (CHubEntities db = new CHubEntities())
            {
                string appUser = Session[CHubConstValues.SessionUser].ToString();

                ExVAliasAddr         priAddr  = null;
                ExVAliasAddr         AltAddr  = null;
                List <OrderLineItem> olReslut = new List <OrderLineItem>();
                bool   isSaved = false;
                bool   splInd  = true;
                string poNum   = "";
                string dueDate = "";
                string note    = "";

                V_ALIAS_ADDR_DFLT_BLL dfltBLL = new V_ALIAS_ADDR_DFLT_BLL(db);
                V_ALIAS_ADDR_SPL_BLL  splBLL  = new V_ALIAS_ADDR_SPL_BLL(db);

                TS_OR_HEADER_BLL    hBLL  = new TS_OR_HEADER_BLL(db);
                List <TS_OR_HEADER> hList = hBLL.GetHeadersBySeq(orderSeq);
                if (hList != null && hList.Count > 0)
                {
                    isSaved = true;
                    //Get primary addr and Alt addr
                    foreach (var item in hList)
                    {
                        //special ship
                        if (item.SPL_IND == CHubConstValues.IndY)
                        {
                            splInd = true;
                            if (item.SHIPFROM_SEQ == 0)
                            {
                                poNum   = item.CUSTOMER_PO_NO;
                                dueDate = item.DUE_DATE.ToString("yyyy-MM-dd");
                                note    = item.ORDER_NOTES;
                                priAddr = splBLL.GetSpecifyAliasAddrSPL(item.ALIAS_NAME, item.TO_SYSTEM, item.CUSTOMER_NO, item.BILL_TO_LOCATION, item.SHIP_TO_LOCATION, item.DEST_LOCATION);
                            }
                            if (item.SHIPFROM_SEQ == 1)
                            {
                                AltAddr = splBLL.GetSpecifyAliasAddrSPL(item.ALIAS_NAME, item.TO_SYSTEM, item.CUSTOMER_NO, item.BILL_TO_LOCATION, item.SHIP_TO_LOCATION, item.DEST_LOCATION);
                            }
                        }
                        else
                        {
                            splInd = false;
                            if (item.SHIPFROM_SEQ == 0)
                            {
                                poNum   = item.CUSTOMER_PO_NO;
                                dueDate = item.DUE_DATE.ToString("yyyy-MM-dd");
                                note    = item.ORDER_NOTES;
                                priAddr = dfltBLL.GetSpecifyAliasAddrDFLT(item.ALIAS_NAME, item.TO_SYSTEM, item.CUSTOMER_NO, item.BILL_TO_LOCATION, item.SHIP_TO_LOCATION);
                            }
                            if (item.SHIPFROM_SEQ == 1)
                            {
                                AltAddr = dfltBLL.GetSpecifyAliasAddrDFLT(item.ALIAS_NAME, item.TO_SYSTEM, item.CUSTOMER_NO, item.BILL_TO_LOCATION, item.SHIP_TO_LOCATION);
                            }
                        }
                    }

                    TS_OR_DETAIL_BLL    dBLL  = new TS_OR_DETAIL_BLL(db);
                    List <TS_OR_DETAIL> dList = dBLL.GetDetailsBySeq(orderSeq);

                    //change detail ot orderLine
                    OrderLineCheckArg arg = new OrderLineCheckArg();
                    arg.primarySysID     = priAddr.SysID;
                    arg.primaryWareHouse = priAddr.WareHouse;
                    arg.customerNo       = priAddr.CustomerNo;
                    if (AltAddr != null)
                    {
                        arg.altSysID     = AltAddr.SysID;
                        arg.altWareHosue = AltAddr.WareHouse;
                    }
                    foreach (var item in dList)
                    {
                        arg.olItem = new OrderLineItem();
                        arg.olItem.CustomerPartNo = item.CUSTOMER_PART_NO;
                        arg.olItem.Qty            = item.BUY_QTY;
                        arg.olItem.OrderLineNo    = item.ORDER_LINE_NO;
                        CheckOrderLineItemAction(arg);
                        olReslut.Add(arg.olItem);
                    }
                }
                else
                {
                    TS_OR_HEADER_STAGE_BLL    hsBLL  = new TS_OR_HEADER_STAGE_BLL(db);
                    List <TS_OR_HEADER_STAGE> hsList = hsBLL.GetHeaderStageBySeq(orderSeq);

                    if (hsList != null && hsList.Count > 0)
                    {
                        isSaved = false;
                        //Get primary addr and Alt addr stage
                        foreach (var item in hsList)
                        {
                            //special ship
                            if (item.SPL_IND == CHubConstValues.IndY)
                            {
                                splInd = true;
                                if (item.SHIPFROM_SEQ == 0)
                                {
                                    poNum   = item.CUSTOMER_PO_NO;
                                    dueDate = item.DUE_DATE.ToString("yyyy-MM-dd");
                                    note    = item.ORDER_NOTES;
                                    priAddr = splBLL.GetSpecifyAliasAddrSPL(item.ALIAS_NAME, item.TO_SYSTEM, item.CUSTOMER_NO, item.BILL_TO_LOCATION, item.SHIP_TO_LOCATION, item.DEST_LOCATION);
                                }
                            }
                            else
                            {
                                splInd = false;
                                if (item.SHIPFROM_SEQ == 0)
                                {
                                    poNum   = item.CUSTOMER_PO_NO;
                                    dueDate = item.DUE_DATE.ToString("yyyy-MM-dd");
                                    note    = item.ORDER_NOTES;
                                    priAddr = dfltBLL.GetSpecifyAliasAddrDFLT(item.ALIAS_NAME, item.TO_SYSTEM, item.CUSTOMER_NO, item.BILL_TO_LOCATION, item.SHIP_TO_LOCATION);
                                }
                            }
                        }


                        TS_OR_DETAIL_STAGE_BLL    dsBLL  = new TS_OR_DETAIL_STAGE_BLL(db);
                        List <TS_OR_DETAIL_STAGE> dsList = dsBLL.GetDetailsStageByOrderSeq(orderSeq);

                        //change detail ot orderLine
                        OrderLineCheckArg arg = new OrderLineCheckArg();
                        arg.primarySysID     = priAddr.SysID;
                        arg.primaryWareHouse = priAddr.WareHouse;
                        arg.customerNo       = priAddr.CustomerNo;
                        arg.altSysID         = null;
                        arg.altWareHosue     = null;

                        foreach (var item in dsList)
                        {
                            arg.olItem = new OrderLineItem();
                            arg.olItem.CustomerPartNo = item.CUSTOMER_PART_NO;
                            arg.olItem.Qty            = item.BUY_QTY;
                            arg.olItem.OrderLineNo    = item.ORDER_LINE_NO;
                            CheckOrderLineItemAction(arg);
                            olReslut.Add(arg.olItem);
                        }
                    }
                    else
                    {
                        this.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                        return(Content("Wrong Order Seq"));
                    }
                }

                var obj = new
                {
                    priAddr    = priAddr,
                    altAddr    = AltAddr,
                    orderLines = olReslut,
                    isSaved    = isSaved,
                    splInd     = splInd,
                    poNum      = poNum,
                    dueDate    = dueDate,
                    note       = note
                };

                return(Json(obj));
            }
        }
Exemplo n.º 4
0
        public string CheckOrderLineItemAction(OrderLineCheckArg olArg)
        {
            //reset
            olArg.olItem.PartNo            = string.Empty;
            olArg.olItem.AltAVLCheckColor  = string.Empty;
            olArg.olItem.PriAVLCheckColor  = string.Empty;
            olArg.olItem.PartNoPlaceHolder = string.Empty;
            olArg.olItem.PriAVLCheck       = null;
            olArg.olItem.AltAVLCheck       = null;
            olArg.olItem.DescCN            = string.Empty;
            olArg.olItem.Description       = string.Empty;
            olArg.olItem.ItemBackColor     = string.Empty;
            olArg.olItem.WarningMsg        = string.Empty;
            olArg.olItem.WarningColor      = string.Empty;

            olArg.olItem.LastCheckNo = olArg.olItem.CustomerPartNo;
            olArg.olItem.LastQty     = olArg.olItem.Qty;

            string msg = string.Empty;

            olArg.olItem.PartNo = GetPartNoFromCustPartNo(olArg.olItem.CustomerPartNo, olArg.customerNo);


            olArg.olItem.PartNoPlaceHolder = string.Empty;
            if (string.IsNullOrEmpty(olArg.olItem.PartNo))
            {
                olArg.olItem.PartNoPlaceHolder = "Can't find Part NO";
                olArg.olItem.ItemBackColor     = CHubConstValues.ErrorColor;
                return(null);
            }
            else
            {
                CHubEntities           db       = new CHubEntities();
                G_PART_DESCRIPTION_BLL pDescBLL = new G_PART_DESCRIPTION_BLL(db);

                //Get description
                G_PART_DESCRIPTION pDesc = pDescBLL.GetPartDescription(olArg.olItem.PartNo);
                olArg.olItem.Description = pDesc.DESCRIPTION;
                olArg.olItem.DescCN      = pDesc.DESC_CN;

                //check inactive status
                if (pDesc.PART_STATUS == PartStatusEnum.I.ToString())
                {
                    olArg.olItem.WarningMsg = string.Format("SSC:{0},", pDesc.CURRENT_SALES_STATUS_CODE);
                    //olArg.olItem.WarningColor = CHubConstValues.WarningColor;
                }

                string usingSysID = olArg.primarySysID;
                //Do AVL check
                if (olArg.olItem.Qty > 0)
                {
                    if (string.IsNullOrEmpty(olArg.primarySysID) || string.IsNullOrEmpty(olArg.primaryWareHouse))
                    {
                        msg = "No Primary SysID and WareHouse information";
                    }


                    G_NETAVL_BLL netBLL = new G_NETAVL_BLL(db);
                    //Primary AVL check
                    decimal priNet = netBLL.GetSpecifyNETAVL(olArg.primarySysID, olArg.olItem.PartNo, olArg.primaryWareHouse);
                    if (priNet == 0)
                    {
                        olArg.olItem.PriAVLCheckColor = CHubConstValues.NoStockColor;
                    }
                    else if (priNet >= olArg.olItem.Qty)
                    {
                        olArg.olItem.PriAVLCheckColor = CHubConstValues.SatisfyStockColor;
                    }
                    else
                    {
                        olArg.olItem.PriAVLCheckColor = CHubConstValues.PartialStockColor;
                    }
                    olArg.olItem.PriAVLCheck = priNet;

                    //if primary is no enough do  Alt AVL check
                    if (priNet < olArg.olItem.Qty)
                    {
                        if (!(string.IsNullOrEmpty(olArg.altSysID) || string.IsNullOrEmpty(olArg.altWareHosue)))
                        {
                            decimal altNet = netBLL.GetSpecifyNETAVL(olArg.altSysID, olArg.olItem.PartNo, olArg.altWareHosue);
                            if (altNet == 0)
                            {
                                olArg.olItem.AltAVLCheckColor = CHubConstValues.NoStockColor;
                            }
                            else if (altNet >= olArg.olItem.Qty)
                            {
                                olArg.olItem.AltAVLCheckColor = CHubConstValues.SatisfyStockColor;
                                usingSysID = olArg.altSysID;
                            }
                            else
                            {
                                olArg.olItem.AltAVLCheckColor = CHubConstValues.PartialStockColor;
                            }
                            olArg.olItem.AltAVLCheck = altNet;
                        }
                    }
                }

                //Do G_OESALES_CATALOG_VALIDATION
                G_OESALES_CATALOG_VALIDATION oeSaleValidation = new G_OESALES_CATALOG_VALIDATION(usingSysID, olArg.olItem.PartNo, olArg.olItem.Qty);
                olArg.olItem.WarningMsg += oeSaleValidation.ValidationAction();
                if (!string.IsNullOrEmpty(olArg.olItem.WarningMsg))
                {
                    olArg.olItem.WarningColor = CHubConstValues.WarningColor;
                }
            }

            return(msg);
        }