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); }
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); }
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); }