Beispiel #1
0
        public static bool readMaterialsFromSAP(out List <Material> mats)
        {
            mats = new List <Material>();
            var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);

            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
            binding.MaxReceivedMessageSize = 5000000;

            var address = new EndpointAddress(CommonData.webServiceEndPoint);

            ZStandalonePackingClient  client = new ZStandalonePackingClient(binding, address);
            ZGetFinishedGoodMaterials toSAP  = new ZGetFinishedGoodMaterials();

            toSAP.Device = CommonData.sapSettings.device;

            client.ClientCredentials.UserName.UserName = CommonData.sapSettings.user;
            client.ClientCredentials.UserName.Password = CryptoSystem.Decrypt(CommonData.sapSettings.password);
            ZGetFinishedGoodMaterialsResponse fromSAP;

            try
            {
                fromSAP = client.ZGetFinishedGoodMaterials(toSAP);
            }
            catch (CommunicationException ex)
            {
                MessageLogger.Add("Error reading materials from SAP", MessageLogger.MsgLevel.error);
                MessageLogger.Add(ex.ToString(), MessageLogger.MsgLevel.additional);
                return(false);
            }

            foreach (ZsapaFinGoodMat finGood in fromSAP.FinGoods)
            {
                Material newMat = new Material(finGood.MatNumber);
                newMat.description     = finGood.Description;
                newMat.labelLine1      = finGood.LabelLine1;
                newMat.labelLine2      = finGood.LabelLine2;
                newMat.labelLine3      = finGood.LabelLine3;
                newMat.labelLine4      = finGood.LabelLine4;
                newMat.maxWeight       = limitWeight(finGood.MaxWeight);
                newMat.minWeight       = limitWeight(finGood.MinWeight);
                newMat.nomWeight       = limitWeight(finGood.NomWeight);
                newMat.baseUom         = finGood.BaseUom;
                newMat.parallelUom     = finGood.ParallelUom;
                newMat.overdelPerc     = finGood.OverdelPerc;
                newMat.Ean             = finGood.Ean;
                newMat.labelFile       = finGood.LabelFile;
                newMat.shelfLife       = finGood.ShelfLife;
                newMat.madeToOrd       = finGood.MadeToOrd.Equals("X");
                newMat.fixedWeight     = finGood.FixedWeight.Equals("X");
                newMat.unlimOverdel    = finGood.UnlimOverdel.Equals("X");
                newMat.custMatNumber   = finGood.CustMatNum;
                newMat.oldMatNumber    = finGood.OldMatNum;
                newMat.targetMatNumber = finGood.TargetMatNum;
                newMat.woolGrp         = finGood.WoolGrp;

                mats.Add(newMat);
            }
            return(true);
        }
Beispiel #2
0
        public static bool SendPacks()
        {
            DBOperations.BeginTransaction();

            var packs = ReadUnsentPacks();

            if (packs.Count == 0)
            {
                DBOperations.CommitTransaction();
                return(true);  //Okay - no cartons need to be sent
            }

            var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);

            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
            binding.MaxReceivedMessageSize = 1000000;
            var address = new EndpointAddress(CommonData.webServiceEndPoint);
            ZStandalonePackingClient client = new ZStandalonePackingClient(binding, address);

            var toSAP = new ZReceiptCartons();

            toSAP.Cartons = new ZsapaCarton[packs.Count];

            int i = 0;

            foreach (var p in packs)
            {
                toSAP.Cartons[i] = new ZsapaCarton();

                toSAP.Cartons[i].Serial         = p.serial.ToString();
                toSAP.Cartons[i].MaterialNum    = p.materialNum;
                toSAP.Cartons[i].Batch          = p.batch;
                toSAP.Cartons[i].OrderNum       = p.orderNum;
                toSAP.Cartons[i].Plant          = p.plant;
                toSAP.Cartons[i].StorageLctn    = p.storage_lctn;
                toSAP.Cartons[i].PackedQty      = p.qty;
                toSAP.Cartons[i].PackedUom      = p.uom;
                toSAP.Cartons[i].Weight         = p.netWeight;
                toSAP.Cartons[i].PlannedWeight  = p.plannedWeight;
                toSAP.Cartons[i].ActualWeight   = p.actualWeight;
                toSAP.Cartons[i].TareWeight     = p.tareWeight;
                toSAP.Cartons[i].PackedOn       = p.packedOn.ToString("yyyy-MM-dd");
                toSAP.Cartons[i].PackedAt       = p.packedOn.ToString("HHmmss");
                toSAP.Cartons[i].ManuDate       = p.manuDate.ToString("yyyy-MM-dd");
                toSAP.Cartons[i].ExpiryDate     = p.expiryDate.ToString("yyyy-MM-dd");
                toSAP.Cartons[i].SlaughterDates = p.slaughterDates;
                toSAP.Cartons[i].Device         = p.terminal;
                toSAP.Cartons[i].UseFreezer     = p.useFreezer ? "X" : "";
                toSAP.Cartons[i].DgaUser        = p.user;
                toSAP.Cartons[i].GrReversal     = p.cancelled ? "X" : "";
                i++;
            }

            client.ClientCredentials.UserName.UserName = CommonData.sapSettings.user;
            client.ClientCredentials.UserName.Password = CryptoSystem.Decrypt(CommonData.sapSettings.password);

            ZReceiptCartonsResponse fromSAP;

            try
            {
                fromSAP = client.ZReceiptCartons(toSAP);
            }
            catch (Exception e)
            {
                MessageLogger.Add("Error sending packs to SAP " + e.ToString(), MessageLogger.MsgLevel.error);
                DBOperations.RollbackTransaction();
                return(false);
            }

            foreach (var c in fromSAP.ReturnMsgs)
            {
                MessageLogger.Add("Flagging carton " + c.Serial + " " + c.Msg, MessageLogger.MsgLevel.info);

                FlagAsSent(ulong.Parse(c.Serial), c.Msg);
            }
            DBOperations.CommitTransaction();
            return(true);
        }
Beispiel #3
0
        public static bool ReadOrdersFromSAP(out List <Order> normalOrders, out List <Order> reworkOrders, out List <Order.PackedOn> slDates)
        {
            normalOrders = new List <Order>();
            reworkOrders = new List <Order>();
            slDates      = new List <PackedOn>();

            var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);

            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
            binding.MaxReceivedMessageSize = 1000000;

            var address = new EndpointAddress(CommonData.webServiceEndPoint);
            var client  = new ZStandalonePackingClient(binding, address);
            var toSAP   = new ZGetProductionOrders();

            toSAP.Device = CommonData.sapSettings.device;

            client.ClientCredentials.UserName.UserName = CommonData.sapSettings.user;
            client.ClientCredentials.UserName.Password = CryptoSystem.Decrypt(CommonData.sapSettings.password);
            ZGetProductionOrdersResponse fromSAP;

            try
            {
                fromSAP = client.ZGetProductionOrders(toSAP);
            }
            catch (CommunicationException ex)
            {
                MessageLogger.Add("Error reading orders from SAP", MessageLogger.MsgLevel.error);
                MessageLogger.Add(ex.ToString(), MessageLogger.MsgLevel.additional);
                return(false);
            }
            string prevMatNumber = "~";

            Order normalOrder         = null;
            Order reworkOrder         = null;
            bool  missingMaterialData = false;

            foreach (ZsapaProdOrder sapOrd in fromSAP.Orders)
            {
                var  newIncOrd = new IncOrder(sapOrd);
                bool rework    = sapOrd.OrderType.Equals("YREW");

                if (!sapOrd.MaterialNum.Equals(prevMatNumber))
                {
                    normalOrder         = reworkOrder = null;
                    missingMaterialData = false;

                    var ord = new Order(newIncOrd);
                    if (ord.material == null)
                    {
                        missingMaterialData = true;
                        MessageLogger.Add("No master data for material " + ord.materialNum, MessageLogger.MsgLevel.warning);
                    }
                    else if (rework)
                    {
                        reworkOrder = ord;
                        reworkOrders.Add(ord);
                    }
                    else
                    {
                        normalOrder = ord;
                        normalOrders.Add(ord);
                    }
                }
                if (missingMaterialData)
                {
                    continue;
                }

                if (rework)
                {
                    if (reworkOrder == null)
                    {
                        reworkOrder = new Order(newIncOrd);
                        reworkOrders.Add(reworkOrder);
                    }
                    reworkOrder.AddIncOrder(newIncOrd);
                }
                else
                {
                    if (normalOrder == null)
                    {
                        normalOrder = new Order(newIncOrd);
                        normalOrders.Add(normalOrder);
                    }
                    normalOrder.AddIncOrder(newIncOrd);
                }
                prevMatNumber = sapOrd.MaterialNum;
            }
            foreach (var sl in fromSAP.ProdDates)
            {
                slDates.Add(new Order.PackedOn(sl));
            }
            return(true);
        }