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 { } } } } } }