示例#1
0
        //move reserve stock
        public static void moveReserveStock(int idCstmPODt_Free, int idCstmPODt
                                            , int id_tb_Stock, decimal ReserveQty)
        {
            using (var db = new DataClasses1DataContext())
            {
                var tbst = db.tb_Stocks.Where(x => x.id == id_tb_Stock).FirstOrDefault();
                //**เขียน ShipQty ออกจาก Job
                //เขียน SHipping Header
                tb_ShippingH gg = new tb_ShippingH();
                int          idProductionOrderRM = 0;
                string       shipNo = dbClss.GetNo(5, 2);
                gg.ShippingNo = shipNo;
                gg.ShipDate   = DateTime.Now;
                gg.UpdateBy   = ClassLib.Classlib.User;
                gg.UpdateDate = DateTime.Now;
                gg.CreateBy   = ClassLib.Classlib.User;
                gg.CreateDate = DateTime.Now;
                gg.ShipName   = ClassLib.Classlib.User;
                var po = db.mh_CustomerPODTs.Where(x => x.id == idCstmPODt)
                         .Join(db.mh_CustomerPOs.Where(x => x.DemandType == 0)
                               , dt => dt.idCustomerPO
                               , hd => hd.id
                               , (dt, hd) => new { hd, dt }).FirstOrDefault();
                string cstmPOno = (po != null && po.hd != null) ? po.hd.CustomerPONo : idCstmPODt.ToSt();
                gg.Remark      = $"Shipping for Move Stock to new CustomerPO ({cstmPOno})";
                gg.JobCard     = "";
                gg.TempJobCard = "";
                byte[] barcode = null;
                gg.BarCode    = barcode;
                gg.Status     = "Completed";
                gg.ToLocation = "Warehouse";
                db.tb_ShippingHs.InsertOnSubmit(gg);
                db.SubmitChanges();
                //Shipping ADD
                var tool    = db.mh_Items.Where(x => x.InternalNo == tbst.CodeNo).FirstOrDefault();
                var uom     = db.mh_ItemUOMs.Where(x => x.UOMCode == tool.BaseUOM && x.ItemNo == tbst.CodeNo).FirstOrDefault();
                var pcsunit = 1.00m;
                if (uom != null)
                {
                    pcsunit = uom.QuantityPer;
                }
                db.sp_024_tb_Shipping_ADD(shipNo, tbst.CodeNo
                                          , ReserveQty //QtyPlan
                                          , ReserveQty //QtyShip
                                          , "", "", "", ""
                                          , tbst.LotNo
                                          , "Completed", ClassLib.Classlib.User
                                          , "", ""//txtTempJobCard.Text.Trim()
                                          , 0, tbst.Location, "Warehouse", tool.BaseUOM, pcsunit
                                          , tool.BaseUOM, pcsunit, idCstmPODt_Free
                                          , idProductionOrderRM
                                          , 1
                                          );

                //**Stock Receive ใส่ Customer PODt id ใบใหม่
                var amntCost = Math.Round(tbst.UnitCost.ToDecimal() * ReserveQty.ToDecimal(), 2);
                var s        = new tb_Stock();
                s.AppDate     = Convert.ToDateTime(DateTime.Now, new CultureInfo("en-US"));
                s.Seq         = 1;
                s.App         = "Receive";
                s.Appid       = 1;
                s.CreateBy    = ClassLib.Classlib.User;
                s.CreateDate  = Convert.ToDateTime(DateTime.Now, new CultureInfo("en-US"));
                s.DocNo       = dbClss.GetNo(33, 2); //MOS -- Move stock free to new CustomerPO
                s.RefNo       = id_tb_Stock.ToSt();  //Refer id tb_Stock ของ stock free Customer PO เก่า
                s.CodeNo      = tbst.CodeNo;
                s.Type        = "Move Stock Free to New Sale Order";
                s.QTY         = ReserveQty;
                s.Inbound     = s.QTY;
                s.Outbound    = 0;
                s.Type_i      = 1;
                s.Category    = "Invoice";
                s.Refid       = idCstmPODt_Free; //old idCstmPODt ---> Free Stock
                s.idCSTMPODt  = idCstmPODt;      //new idCstmPODt
                s.Type_in_out = "In";
                s.AmountCost  = amntCost;
                if (s.AmountCost > 0)
                {
                    s.UnitCost = Math.Round(s.AmountCost.ToDecimal() / s.QTY.ToDecimal(), 6);
                }
                else
                {
                    s.UnitCost = 0;
                }

                decimal RemainQty      = (Convert.ToDecimal(db.Cal_QTY_Remain_Location(s.CodeNo, "Free", 0, "Warehouse", -1)));
                decimal sum_Remain     = Convert.ToDecimal(dbClss.Get_Stock(s.CodeNo, "", "", "RemainAmount", "Warehouse", 0 /*idCstmPODt*/)) + s.AmountCost.ToDecimal();
                decimal sum_Qty        = RemainQty.ToDecimal() + s.QTY.ToDecimal();
                var     RemainAmount   = sum_Remain;
                decimal RemainUnitCost = 0.00m;
                if (sum_Qty <= 0)
                {
                    RemainUnitCost = 0;
                }
                else
                {
                    RemainUnitCost = Math.Round((Math.Abs(RemainAmount) / Math.Abs(sum_Qty)), 6);
                }
                s.RemainQty      = sum_Qty;
                s.RemainUnitCost = RemainUnitCost;
                s.RemainAmount   = RemainAmount;
                s.Avg            = 0;
                s.CalDate        = null;
                s.Status         = "Active";
                s.Flag_ClearTemp = 0;
                s.TLCost         = s.AmountCost;
                s.TLQty          = s.QTY;
                s.ShipQty        = 0;
                s.Location       = "Warehouse";
                s.LotNo          = tbst.LotNo;
                s.ShelfNo        = tbst.ShelfNo;
                //ต้องไม่ใช่ Item ที่มีในระบบ
                var c = (from ix in db.mh_Items
                         where ix.InternalNo.Trim().ToUpper() == s.CodeNo.Trim().ToUpper() && ix.Active
                         select ix).ToList();
                if (c.Count <= 0)
                {
                    s.TLQty   = 0;
                    s.ShipQty = s.QTY;
                }

                db.tb_Stocks.InsertOnSubmit(s);
                db.SubmitChanges();

                //update Stock เข้า item
                db.sp_010_Update_StockItem(Convert.ToString(s.CodeNo), "");
            }
        }
示例#2
0
        void DeleteE()
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                using (var db = new DataClasses1DataContext())
                {
                    string pkNo = txtPackingNo.Text.Trim();
                    var    m    = db.mh_Packings.Where(x => x.Active && x.PackingNo == pkNo).FirstOrDefault();
                    if (m != null)
                    {
                        //Shipping H
                        var    shipH  = new tb_ShippingH();
                        string shipNo = dbClss.GetNo(5, 2);
                        shipH.ShippingNo  = shipNo;
                        shipH.ShipDate    = DateTime.Now;
                        shipH.UpdateBy    = ClassLib.Classlib.User;
                        shipH.UpdateDate  = DateTime.Now;
                        shipH.CreateBy    = ClassLib.Classlib.User;
                        shipH.CreateDate  = DateTime.Now;
                        shipH.ShipName    = ClassLib.Classlib.User;
                        shipH.Remark      = $"Shipping for Canncel Packing stock {pkNo}.";
                        shipH.JobCard     = "";
                        shipH.TempJobCard = "";
                        byte[] barcode = null;
                        shipH.BarCode    = barcode;
                        shipH.Status     = "Completed";
                        shipH.ToLocation = "Warehouse";
                        db.tb_ShippingHs.InsertOnSubmit(shipH);
                        db.SubmitChanges();

                        dbClss.AddHistory(this.Name, "Packing", $"Cancel Packing {pkNo}", pkNo);

                        var dt = db.mh_PackingDts.Where(x => x.Active && x.PackingNo == pkNo).ToList();
                        foreach (var d in dt)
                        {
                            //tb_Stock --> Shipping
                            var st = db.tb_Stocks.Where(x => x.RefidJobCode == d.id && x.RefTempJobCode == m.PackingNo &&
                                                        x.TLQty > 0).ToList();
                            if (st.Count <= 0)
                            {
                                continue;
                            }
                            var tool    = db.mh_Items.Where(x => x.InternalNo == d.ItemNo).FirstOrDefault();
                            var uom     = db.mh_ItemUOMs.Where(x => x.ItemNo == d.ItemNo && x.UOMCode == tool.BaseUOM).FirstOrDefault();
                            var pcsunit = 1.00m;
                            if (uom != null)
                            {
                                pcsunit = uom.QuantityPer;
                            }
                            foreach (var ss in st)
                            {
                                //คืน Qty Customer P/O Dt
                                var so = db.mh_SaleOrderDTs.Where(x => x.id == d.idCstmPODt).FirstOrDefault();
                                if (so != null)
                                {
                                    so.OutQty += d.Qty;
                                    db.SubmitChanges();
                                }
                                //คืน Qty Production ORder
                                var pro = db.mh_ProductionOrders.Where(x => x.id == d.idJob).FirstOrDefault();
                                if (pro != null)
                                {
                                    pro.OutQty  += d.Qty;
                                    pro.CloseJob = false;
                                    db.SubmitChanges();

                                    dbClss.AddHistory("ProductionOrder", "Job Order Sheet", $"Cancel Packing {pkNo} : {d.Qty}", pro.JobNo);
                                }

                                ////stock กลับมาเป็นไม่ฟรี
                                //var slist = db.tb_Stocks.Where(x => x.idCSTMPODt == d.idCstmPODt && x.TLQty > 0).ToList();
                                //foreach (var s1 in slist)
                                //{
                                //    if (s1.Free.ToBool()) s1.Free = null;
                                //}
                                //db.SubmitChanges();

                                //เขียน ship ออก จาก id tb_Stock
                                db.sp_057_Cut_Stock(pkNo, ss.CodeNo, ss.TLQty, ClassLib.Classlib.User
                                                    , "", m.PackingNo, d.id, "Warehouse", "Shipping", "Shipping - Cancel Packing", 3
                                                    , ss.id, ss.idCSTMPODt, ss.LotNo, 0);

                                //
                                var shipDt = new tb_Shipping
                                {
                                    BasePCSUOM      = pcsunit,
                                    BaseUOM         = tool.BaseUOM,
                                    Calbit          = false,
                                    ClearDate       = null,
                                    ClearFlag       = false,
                                    CodeNo          = ss.CodeNo,
                                    idCSTMPODt      = ss.idCSTMPODt,
                                    ItemDescription = tool.InternalName,
                                    ItemNo          = ss.CodeNo,
                                    LineName        = "",
                                    Location        = "Warehouse",
                                    LotNo           = ss.LotNo,
                                    MachineName     = "",
                                    PCSUnit         = pcsunit,
                                    QTY             = ss.TLQty.ToDecimal(),
                                    QTYPlan         = ss.TLQty.ToDecimal(),
                                    Refid           = 0,
                                    RefNo           = "",
                                    Remark          = "Cancel Packing",
                                    Seq             = ss.Seq.ToInt(),
                                    SerialNo        = "",
                                    ShippingNo      = shipNo,
                                    ShipType        = "Cancel Packing",
                                    Status          = "Completed",
                                    ToLocation      = "Warehouse",
                                    UnitCost        = ss.UnitCost,
                                    UnitShip        = tool.BaseUOM,
                                };
                                db.tb_Shippings.InsertOnSubmit(shipDt);
                                db.SubmitChanges();
                            }
                        }

                        m.UpdateDate = DateTime.Now;
                        m.UpdateBy   = ClassLib.Classlib.User;
                        m.Active     = false;

                        dbClss.AddHistory(this.Name, "Packing", $"Cancel Packing {pkNo}", pkNo);

                        db.SubmitChanges();

                        baseClass.Info("Delete complete.\n");
                        lblStatus.Text    = "Inactive";
                        btnDelete.Enabled = false;
                        btnSave.Enabled   = false;
                        btnNew.Enabled    = true;
                    }
                }
            }
            catch (Exception ex)
            {
                baseClass.Error(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }