public PrintParcelsResponseType PrintParcel(PrintParcelsRequestType request, bool dumpXml) { WMSInterfaceClient client = new WMSInterfaceClient("BasicHttpBinding_IWMSInterface", _url); try { RenewTicket(false); request.Ticket = _ticket; if (dumpXml) { new XMLHelper().DumpToFile(new XMLHelper().InterfaceClassToXml(request), LogFileName("DataToCentiro_PrintParcel")); } PrintParcelsResponseType response = client.PrintParcels(request); client.Close(); if (dumpXml) { new XMLHelper().DumpToFile(new XMLHelper().InterfaceClassToXml(response), LogFileName("DataFromCentiro_PrintParcel")); } if (response.StatusCode == CentiroService.StatusCode.Ok) { return(response); } else if (response.StatusCode == CentiroService.StatusCode.InvalidTicket) { if (!_invalidTicketError) { RenewTicket(true); _invalidTicketError = true; return(PrintParcel(request, dumpXml)); } else { return(response); } } else { Tracing.TraceEvent(TraceEventType.Error, 0, String.Format("Error for print Parcel .\nError status = {0}\nError Message = {1}", response.StatusCode, GetErrorString(response.StatusMessages))); throw new CentiroServiceAgentException(String.Format("Error for Print Parcel .\nError status = {0}\nError Message = {1}", response.StatusCode, GetErrorString(response.StatusMessages))); } } catch (CommunicationException) { Tracing.TraceEvent(TraceEventType.Error, 0, "Error calling PrintParcel."); client.Abort(); throw; } catch (TimeoutException) { Tracing.TraceEvent(TraceEventType.Error, 0, "Error calling PrintParcel."); throw; } }
private void PrintParcel(string requestClob, string whId) { CentiroPrintParcels report = _printParcelSerializer.Deserialize(new StringReader(requestClob)) as CentiroPrintParcels; if (_fetchEachPrinterType) { _printerType = GetPrinterType(report.terminal, "C*CPL", whId); } PrintParcelsRequestType request = _businessDataMapper.Map(report, _printerType); if (request == null) { throw new CentiroAdapterException( string.Format("Failed to deserialize PrintParcel clob. Data = {0}", requestClob)); } else { MessageId = Convert.ToString(DateTime.Now.Ticks); request.MessageId = MessageId; if (_isXmlDumpEnabled) { new XMLHelper().DumpToFile(new XMLHelper().InterfaceClassToXml(request), LogFileName("PrintParcel_Request")); } CentiroServiceAgent csAdapter = GetCachedAdapter(report.url); PrintParcelsResponseType ur = csAdapter.PrintParcel(request, _isXmlDumpEnabled); if (ur == null) { throw new CentiroAdapterException( string.Format("No data in PrintParcel response. MessageId = {0}", request.MessageId)); } else { if (ur.LabelCode != null) { GenericReport document = new GenericReport(); document.MetaData = new MetaDataType(); document.MetaData.applicationIdentity = "Warehouse"; document.MetaData.documentType = "C*CPL"; document.MetaData.documentSubType = ""; document.MetaData.terminalIdentity = report.terminal; document.MetaData.userIdentity = report.user; if (report.printerIdentity == null) { document.MetaData.printerIdentity = ""; } else { document.MetaData.printerIdentity = report.printerIdentity; } document.MetaData.numberOfCopies = 1; document.Data = ur.LabelCode; _receivedDocuments.Add(document); } if (ur.ParcelDetails != null) { foreach (ParcelDetails p in ur.ParcelDetails) { SaveParcel(p); } } } } }