예제 #1
0
파일: Code.cs 프로젝트: vbimard/CLIPPER_SP5
    public override void OnAfterEndCuttingEvent(IContext context, AfterEndCuttingArgs args)
    {
        //  ce code est exécuté autant de fois qu'il y a de multiplicité
        //  fonctionnement identique cloture à la tôle ou au placement
        IEntity nestingToCut        = args.ToCutSheetEntity;
        IEntity nesting             = context.EntityManager.GetEntity(nestingToCut.GetFieldValueAsInt("_TO_CUT_NESTING"), "_NESTING");
        int     nestingMultiplicity = nesting.GetFieldValueAsInt("_QUANTITY");

        IEntityList tolesCoupees = context.EntityManager.GetEntityList("_SHEET", "_SEQUENCED_NESTING", ConditionOperator.Equal, nesting.Id32);

        tolesCoupees.Fill(false);

        foreach (IEntity toleCoupee in tolesCoupees)
        {
            string toleName = toleCoupee.GetFieldValueAsString("_REFERENCE");

            string counterName = toleCoupee.GetFieldValueAsString("_REFERENCE");

            long counter = CounterManager.GetNextCounterValue(context, counterName);

            IEntityList stocks = context.EntityManager.GetEntityList("_STOCK", "_SHEET", ConditionOperator.Equal, toleCoupee.Id32);
            stocks.Fill(false);

            foreach (IEntity stock in stocks)
            {
                if (!stock.GetFieldValueAsBoolean("AF_STOCK_CFAO"))
                {
                    if (!stock.GetFieldValueAsBoolean("AF_STOCK_RENAME"))
                    {
                        stock.SetFieldValue("AF_STOCK_NAME", 0.ToString("00"));

                        if (stock.GetFieldValueAsInt("_QUANTITY") == 1)
                        {
                            stock.Delete();
                            IEntityList stockCFAO = context.EntityManager.GetEntityList("_STOCK", LogicOperator.And, "_SHEET", ConditionOperator.Equal, toleCoupee.Id32, "AF_STOCK_CFAO", ConditionOperator.Equal, true);
                            stockCFAO.Fill(false);
                            IEntity toleCFAO = stockCFAO.FirstOrDefault();

                            //Cree une nouvelle ligne de stock
                            toleCFAO.SetFieldValue("AF_STOCK_NAME", counterName + "-" + counter.ToString("00"));
                            toleCFAO.SetFieldValue("AF_STOCK_CFAO", false);
                            toleCFAO.SetFieldValue("AF_STOCK_RENAME", true);
                            toleCFAO.SetFieldValue("_QUANTITY", 1);
                            toleCFAO.Complete = true;
                            toleCFAO.Save();
                        }

                        if (stock.GetFieldValueAsInt("_QUANTITY") > 1)
                        {
                            //  on eclate le stock 1 x qté5 devient 5 x qté1
                            //Décrémente le stock de 1
                            stock.SetFieldValue("_QUANTITY", stock.GetFieldValueAsLong("_QUANTITY") - 1);

                            IEntityList stockCFAO = context.EntityManager.GetEntityList("_STOCK", LogicOperator.And, "_SHEET", ConditionOperator.Equal, toleCoupee.Id32, "AF_STOCK_CFAO", ConditionOperator.Equal, true);
                            stockCFAO.Fill(false);
                            IEntity toleCFAO = stockCFAO.FirstOrDefault();

                            //Cree une nouvelle ligne de stock
                            toleCFAO.SetFieldValue("AF_STOCK_NAME", counterName + "-" + counter.ToString("00"));
                            toleCFAO.SetFieldValue("AF_STOCK_CFAO", false);
                            toleCFAO.SetFieldValue("AF_STOCK_RENAME", true);
                            toleCFAO.SetFieldValue("_QUANTITY", 1);
                            toleCFAO.Complete = true;
                            toleCFAO.Save();
                        }

                        try
                        {
                            stock.Save();
                        }
                        catch
                        {
                        }
                    }
                }
            }
        }
    }