private void CalcMarker(tbl_MarkerTransactionHeader markerheader, tbl_MarkerDetail row, WorkFlowManagerDBEntities entities, out int status) { var noOfLayers = entities.TblMarkerTemps.FirstOrDefault( x => x.MarkerNo == row.MarkerNo && x.MarkerTransactionHeader == row.MarkerTransactionHeader && x.TblColor == row.StyleColorCode).NoOfLayers; var totalReqFabric = noOfLayers * row.MarkerL; var inspections = entities.Inspections.Where(x => x.markerIserial == row.Iserial).ToList(); var totalAvaFabric = inspections.Sum(x => x.RemainingMarkerRollQty); if (inspections.FirstOrDefault().Unit == "Kgg") { totalAvaFabric = (float)inspections.Sum(x => x.qtyPerKilo); } row.Status = 0; if (totalReqFabric <= totalAvaFabric) { row.Status = 1; status = 1; var listOfInspections = inspections.Where(w => totalReqFabric < w.RemainingMarkerRollQty); Inspection choosedRoll; if (listOfInspections.Any()) { choosedRoll = listOfInspections.OrderBy(x => x.RemainingMarkerRollQty).FirstOrDefault(); double rollassigned = 0; switch (markerheader.TblMarkerType) { case 0: if (inspections.FirstOrDefault().Unit == "Kgg") { rollassigned = (double)(totalReqFabric * (choosedRoll.RollWMT * (choosedRoll.M2WeightGm / 100))); } else { rollassigned = (double)totalReqFabric; } break; case 1: rollassigned = choosedRoll.RemainingMarkerRollQty; break; } var cuttingRow = new Tbl_Wf_CuttingOrder { MarkerHeaderTransaction = row.MarkerTransactionHeader, InspectionIserial = choosedRoll.Iserial, RollUnit = choosedRoll.Unit, MarkerIserial = choosedRoll.markerIserial, RollAssignedQty = rollassigned, CuttingSelection = "C", Barcode = choosedRoll.RollBatch, TblMarkerType = 0, }; SavingCuttingOrder(cuttingRow); } else { var listOfMarkerList = new List <Inspection>(); var remaining = totalReqFabric; foreach (var variable in inspections.OrderByDescending(x => x.RemainingMarkerRollQty)) { if (remaining > 0) { var remlist = inspections.Where(x => listOfMarkerList.Any(s => s.RollBatch != x.RollBatch)); var templist = remlist.Where(x => remaining < x.RemainingMarkerRollQty); if (inspections.FirstOrDefault().Unit == "Kgg") { //templist = //inspections // .Where(x => !listOfMarkerList.Contains(x) && remaining < x.qtyPerKilo); } if (templist.Any()) { choosedRoll = templist.OrderBy(x => x.RemainingMarkerRollQty).FirstOrDefault(); if (inspections.FirstOrDefault().Unit == "Kgg") { choosedRoll = templist.OrderBy(x => x.qtyPerKilo).FirstOrDefault(); } } else { choosedRoll = variable; } listOfMarkerList.Add(choosedRoll); double rollassigned = 0; switch (markerheader.TblMarkerType) { case 0: if (templist.Any()) { rollassigned = (double)remaining; if (inspections.FirstOrDefault().Unit == "Kgg") { rollassigned = (double)(rollassigned * (choosedRoll.RollWMT * (choosedRoll.M2WeightGm / 100))); } } else { rollassigned = choosedRoll.RemainingMarkerRollQty; } break; case 1: rollassigned = choosedRoll.RemainingMarkerRollQty; break; } remaining = remaining - rollassigned; var cuttingRow = new Tbl_Wf_CuttingOrder { MarkerHeaderTransaction = row.MarkerTransactionHeader, InspectionIserial = choosedRoll.Iserial, RollUnit = choosedRoll.Unit, MarkerIserial = choosedRoll.markerIserial, RollAssignedQty = rollassigned, CuttingSelection = "C", Barcode = choosedRoll.RollBatch, TblMarkerType = 0, }; SavingCuttingOrder(cuttingRow); } else { break; } } } } else { status = 0; } }
public static MarkerListViewModel MapToMarkerDetail(tbl_MarkerDetail markerObject) { var markerMeterPersizes = new ObservableCollection <MeterPerSize>(); foreach (var meterPerSize in markerObject.tbl_MarkerDetailMeterPerSize) { markerMeterPersizes.Add(MapToMeterPerSize(meterPerSize)); } var styleColorlist = new ObservableCollection <MarkerSalesOrderDetail> { new MarkerSalesOrderDetail { StyleColorCode = markerObject.TblColor.Code, StyleColorIserial = markerObject.TblColor.Iserial } }; var fabricColorList = new ObservableCollection <MarkerSalesOrderDetail> { new MarkerSalesOrderDetail { FabricColorCode = markerObject.TblColor1.Code, FabricColorIserial = markerObject.TblColor1.Iserial } }; var listOfCutting = new ObservableCollection <CuttingOrderViewModel>(); foreach (var variable in markerObject.Tbl_Wf_CuttingOrder) { var newrow = new CuttingOrderViewModel().InjectFrom(variable) as CuttingOrderViewModel; listOfCutting.Add(newrow); } double totalreq = 0; if (markerObject.TotalReq != null) { totalreq = (double)markerObject.TotalReq; } if (markerObject.Status == null) { markerObject.Status = 0; } var row = new MarkerListViewModel { Iserial = markerObject.Iserial, BatchNo = markerObject.BatchNo, StyleColorCode = markerObject.StyleColorCode, FabricCode = markerObject.FabricCode, FabricColorCode = markerObject.FabricColorCode, FabricColorList = fabricColorList, StyleDetailsList = styleColorlist, MarkerL = markerObject.MarkerL, MarkerNo = markerObject.MarkerNo, MarkerW = markerObject.MarkerW, SizeRange = markerObject.SizeRange, StyleNo = markerObject.StyleNo, SalesOrder = markerObject.SalesOrder, MarkerTransactionHeader = markerObject.MarkerTransactionHeader, CloretteCmPerPc = markerObject.CloretteCmPerPc, Status = (int)markerObject.Status, SavedCuttingOrderlist = listOfCutting, TotalReq = totalreq }; GenericMapper.InjectFromObCollection(row.MeterPerSizeList, markerMeterPersizes); return(row); }