コード例 #1
0
ファイル: MarkerOperations.cs プロジェクト: Osama91/CCWFM
        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;
            }
        }
コード例 #2
0
ファイル: MarkerMapper.cs プロジェクト: Osama91/CCWFM
        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);
        }