Exemple #1
0
        public bool ValidateBeforeSave(BO.p41Task rec, string premessage = "")
        {
            if (String.IsNullOrEmpty(rec.p41Name) || string.IsNullOrEmpty(rec.p41Code))
            {
                _db.CurrentUser.AddMessage(premessage + "Chybí vyplnit název nebo kód zakázky.");
                return(false);
            }
            if (rec.p27ID == 0)
            {
                _db.CurrentUser.AddMessage(premessage + "Chybí vyplnit středisko.");
                return(false);
            }
            if (rec.p41MasterID == 0 && rec.p52ID == 0)
            {
                _db.CurrentUser.AddMessage(premessage + "Chybí vazba na položku objednávky.");
                return(false);
            }
            if (rec.p41MasterID == 0 && rec.p41PlanUnitsCount <= 0)
            {
                _db.CurrentUser.AddMessage(premessage + "Plánované množství musí být větší než NULA.");
                return(false);
            }
            if (rec.p41MasterID == 0 && rec.p41PlanUnitsCount > 0)
            {
                var c = _mother.p27MszUnitBL.Load(rec.p27ID);
                if (c.p27Capacity < rec.p41PlanUnitsCount)
                {
                    _db.CurrentUser.AddMessage(premessage + "Plánované množství nesmí být větší než kapacita střediska.");
                    return(false);
                }
                double n     = _db.Load <BO.COM.GetDouble>("select sum(p41PlanUnitsCount) as Value FROM p41Task WHERE p52ID=@p52id AND p41ID<>@pid", new { p52id = rec.p52ID, pid = rec.pid }).Value;
                double limit = _mother.p52OrderItemBL.Load(rec.p52ID).Recalc2Kg;
                if (limit < n + rec.p41PlanUnitsCount)
                {
                    _db.CurrentUser.AddMessage(premessage + "Plánované množství zakázky nesmí překročit objednané množství.");
                    return(false);
                }
            }
            if (rec.p41MasterID == 0 && rec.p41PlanStart == null)
            {
                _db.CurrentUser.AddMessage(premessage + "Chybí vyplnit čas plánovaného zahájení.");
                return(false);
            }

            if (String.IsNullOrEmpty(rec.p41Code) == false)
            {
                if (LoadByCode(rec.p41Code, rec.pid) != null)
                {
                    _db.CurrentUser.AddMessage(string.Format(premessage + "Zadaný kód {0} nemůže být duplicitní s jinou zákazkou [{1}].", rec.p41Code, LoadByCode(rec.p41Code, rec.pid).p41Name));
                    return(false);
                }
            }


            return(true);
        }
Exemple #2
0
        public int Save(BO.p41Task rec)
        {
            if (ValidateBeforeSave(rec) == false)
            {
                return(0);
            }
            var p = new DL.Params4Dapper();

            p.AddInt("pid", rec.p41ID);
            if (rec.j02ID_Owner == 0)
            {
                rec.j02ID_Owner = _db.CurrentUser.j02ID;
            }
            p.AddInt("j02ID_Owner", rec.j02ID_Owner, true);
            p.AddInt("p27ID", rec.p27ID, true);
            p.AddInt("p52ID", rec.p52ID, true);
            if (rec.pid == 0)
            {
                rec.b02ID = _mother.b02StatusBL.LoadStartStatusPID("p41", rec.b02ID);  //startovací workflow stav
            }
            p.AddInt("b02ID", rec.b02ID, true);
            p.AddInt("p41MasterID", rec.p41MasterID, true);         //ID master zakázky
            p.AddInt("p41SuccessorID", rec.p41SuccessorID, true);   //ID následníka
            p.AddBool("p41IsDraft", rec.p41IsDraft);
            p.AddString("p41Name", rec.p41Name);
            p.AddString("p41Code", rec.p41Code);
            p.AddString("p41Memo", rec.p41Memo);
            p.AddString("p41StockCode", rec.p41StockCode);

            if (rec.p41PlanStart.Year > 1900)
            {
                p.AddDateTime("p41PlanStart", rec.p41PlanStart);
            }


            p.AddDouble("p41PlanUnitsCount", rec.p41PlanUnitsCount);

            int intPID = _db.SaveRecord("p41Task", p.getDynamicDapperPars(), rec);

            run_p41_after_save(intPID);

            return(intPID);
        }
Exemple #3
0
 public BO.Result MoveStatus(string p41code, string b02code)
 {
     BO.b02Status c = _mother.b02StatusBL.LoadByCode(b02code);
     if (c == null)
     {
         return(new BO.Result(true, "Status s tímto kódem nelze načíst."));
     }
     BO.p41Task rec = LoadByCode(p41code, 0);
     if (rec == null)
     {
         return(new BO.Result(true, "Zakázka s tímto kódem nelze načíst."));
     }
     if (_db.RunSql("UPDATE p41Task set b02ID=@b02id WHERE p41ID=@pid", new { b02id = c.pid, pid = rec.pid }))
     {
         return(new BO.Result(false, "Status nahozen."));
     }
     else
     {
         return(new BO.Result(true, "Chyba"));
     }
 }
Exemple #4
0
        public int CreateChild(BO.p41Task rec, BO.p41Task recMaster, List <BO.AppendPostPreP44Oper> lisDestP44, int p18flag)
        {
            if (p18flag == 2 && LoadSuccessor(recMaster.pid) != null)
            {
                _mother.CurrentUser.AddMessage("K této zakázce již byl založen předchůdce.");
                return(0);
            }
            if (p18flag == 3 && recMaster.p41SuccessorID > 0)
            {
                _mother.CurrentUser.AddMessage("Tato zakázka již má založeného následníka.");
                return(0);
            }
            if (lisDestP44.Count == 0)
            {
                _mother.CurrentUser.AddMessage("Musíte zaškrtnout minimálně jednu operaci.");
                return(0);
            }
            if (rec.p27ID == 0 || String.IsNullOrEmpty(rec.p41Name) == true)
            {
                _mother.CurrentUser.AddMessage("Středisko a název jsou povinné informace.");
                return(0);
            }
            var p = new DL.Params4Dapper();

            p.AddInt("j02ID_Owner", _db.CurrentUser.j02ID, true);
            p.AddInt("p27ID", rec.p27ID, true);
            p.AddInt("b02ID", rec.b02ID, true);
            p.AddInt("p41MasterID", recMaster.pid, true);         //ID master zakázky
            if (p18flag == 2)
            {
                p.AddInt("p41SuccessorID", recMaster.pid, true);   //ID následníka pro PRE zakázku
            }


            p.AddString("p41Name", rec.p41Name);
            p.AddBool("p41IsDraft", rec.p41IsDraft);
            if (p18flag == 2)
            {
                p.AddString("p41Code", recMaster.p41Code + ".PRE");
            }
            if (p18flag == 3)
            {
                p.AddString("p41Code", recMaster.p41Code + ".POST");
            }
            p.AddString("p41Memo", rec.p41Memo);
            p.AddString("p41StockCode", rec.p41StockCode);



            int intPID = _db.SaveRecord("p41Task", p.getDynamicDapperPars(), rec);

            if (p18flag == 3)   //pro POST zakázku je následník MASTER zakázka
            {
                _db.RunSql("UPDATE p41Task set p41SuccessorID=@pid WHERE p41ID=@masterpid", new { pid = intPID, masterpid = recMaster.pid });
            }

            rec = Load(intPID);
            AppendPos(rec, lisDestP44, p18flag, false); //bez volání SP p41_after_save

            if (p18flag == 2)                           //spočítat p41PlanStart
            {
                _db.RunSql("UPDATE p41Task set p41Duration=dbo.p44_calc_duration(@pid),p41PlanStart=DATEADD(MINUTE,-1*dbo.p44_calc_duration(@pid),@d0) WHERE p41ID=@pid", new { pid = intPID, masterpid = recMaster.pid, d0 = recMaster.p41PlanStart });
            }
            if (p18flag == 3)
            {
                _db.RunSql("UPDATE p41Task set p41Duration=dbo.p44_calc_duration(@pid),p41PlanStart=@d0 WHERE p41ID=@pid", new { pid = intPID, d0 = recMaster.p41PlanEnd });
            }

            run_p41_after_save(intPID);

            return(intPID);
        }
Exemple #5
0
        public int AppendPos(BO.p41Task recP41, List <BO.AppendPostPreP44Oper> lisDestP44, int p18flag, bool bolRunSpAfter)   //uložit do plánu PO operace p18flag>1
        {
            if (recP41 == null)
            {
                _mother.CurrentUser.AddMessage("Chybí vazba na zakázku.");
                return(0);
            }
            if (lisDestP44.Where(p => p.p18Flag <= 1).Count() > 0)
            {
                _mother.CurrentUser.AddMessage("Do plánu lze vkládat pouze [PO] operace.");
                return(0);
            }

            _db.RunSql("DELETE FROM p44TaskOperPlan WHERE p41ID=@p41id AND p18ID IN (select p18ID FROM p18OperCode WHERE p18flag=@p18flag)", new { p41id = recP41.pid, p18flag = p18flag });

            int x = 0;

            if (p18flag == 3)
            {   //u POST operace zjistit poslední použité OperNum z TO operací a poté ho navyšovat o 10
                x = _db.Load <BO.COM.GetInteger>("SELECT MAX(p44OperNum) as Value FROM p44TaskOperPlan WHERE p41ID=@p41id AND p18ID IN (select p18ID FROM p18OperCode WHERE p18flag=1)", new { p41id = recP41.pid }).Value;
            }
            int rets = 0;

            foreach (var c in lisDestP44.Where(p => p.p18Flag == p18flag).OrderBy(p => p.p18Code))
            {
                var recP18 = _mother.p18OperCodeBL.Load(c.p18ID);
                var rec    = new BO.p44TaskOperPlan()
                {
                    p18ID = recP18.pid, p19ID = recP18.p19ID, p41ID = recP41.pid
                };

                var p = new DL.Params4Dapper();
                p.AddInt("p41ID", recP41.pid, true);
                p.AddInt("p19ID", rec.p19ID, true);
                p.AddInt("p18ID", rec.p18ID, true);
                p.AddDouble("p44DurationPreOper", recP18.p18DurationPreOper);
                p.AddDouble("p44DurationOper", recP18.p18DurationOper);
                p.AddDouble("p44DurationPostOper", recP18.p18DurationPostOper);
                if (recP18.p18IsManualAmount)
                {
                    p.AddDouble("p44MaterialUnitsCount", c.p44MaterialUnitsCount);
                }
                if (p18flag == 2)
                {   //u PRE operace je 1-9 použitelných pozic
                    rec.p44RowNum  = -1000 + x;
                    rec.p44OperNum = x + 1;
                    x += 1;
                }
                if (p18flag == 3)
                {   //u POST operace navyšovat stále o 10
                    rec.p44RowNum  = x + 900;
                    rec.p44OperNum = x + 10;
                    x += 10;
                }
                p.AddInt("p44RowNum", rec.p44RowNum);
                p.AddInt("p44OperNum", rec.p44OperNum);

                if (_db.SaveRecord("p44TaskOperPlan", p.getDynamicDapperPars(), rec) > 0)
                {
                    rets += 1;
                }
            }
            if (lisDestP44.Count() == 0)
            {
                rets = 1;   //pouze vyčištění
            }
            _db.RunSql("update a set p44RowNum=RowID from (SELECT ROW_NUMBER() OVER(ORDER BY p44RowNum ASC) AS RowID,* FROM p44TaskOperPlan WHERE p41ID=@p41id) a", new { p41id = recP41.pid });

            if (bolRunSpAfter)
            {
                run_p41_after_save(recP41.pid);
            }



            return(rets);
        }