public bool End(usrc_FVI_SLO_MessageBox xusrc_FVI_SLO_MessageBox) { FiscalSettings = null; taxService = null; usrc_FVI_SLO_Message xusrc_FVI_SLO_Message_END = new usrc_FVI_SLO_Message(0,usrc_FVI_SLO_Message.eMessage.NONE, null); Thread_FVI_Message fvi_message_END = new Thread_FVI_Message(0,Thread_FVI_Message.eMessage.END, null); message_box.Post(fvi_message_END); long StartTicks = DateTime.Now.Ticks; for (;;) { if (xusrc_FVI_SLO_MessageBox.Get(ref xusrc_FVI_SLO_Message_END)== Result_MessageBox_Get.OK) { if (xusrc_FVI_SLO_Message_END.Message == usrc_FVI_SLO_Message.eMessage.Thread_FVI_END) { return true; } } if ((DateTime.Now.Ticks- StartTicks)>100000000) { return false; } } }
private void Run(object othdata) { ThreadData thdata = (ThreadData)othdata; usrc_FVI_SLO_MessageBox xusrc_FVI_SLO_MessageBox = thdata.m_usrc_FVI_SLO_MessageBox; Thread_FVI_Message fvi_message = new Thread_FVI_Message(0,Thread_FVI_Message.eMessage.NONE,null); usrc_FVI_SLO_Message xusrc_FVI_SLO_Message = new usrc_FVI_SLO_Message(0,usrc_FVI_SLO_Message.eMessage.Thread_FVI_START, null); xusrc_FVI_SLO_MessageBox.Post(xusrc_FVI_SLO_Message); try { if (File.Exists(thdata.certificateFileName)) { X509Certificate2 certificate = GetCertFromFile(thdata.certificateFileName, thdata.CertPass); FiscalSettings = Settings.Create(certificate, thdata.fursWebServiceURL, thdata.fursXmlNamespace, thdata.timeOutInSec); taxService = TaxService.Create(FiscalSettings); //create service with settings } else { xusrc_FVI_SLO_Message.Set(fvi_message.Message_ID, usrc_FVI_SLO_Message.eMessage.ERROR,null, lngRPM.sFileDoesNotExist.s + ":" + thdata.certificateFileName,MessageType.Unknown,null,false,null,null,null); xusrc_FVI_SLO_MessageBox.Post(xusrc_FVI_SLO_Message); return; } } catch (Exception ex) { xusrc_FVI_SLO_Message.Set(fvi_message.Message_ID, usrc_FVI_SLO_Message.eMessage.ERROR, null, ex.Message, MessageType.Unknown, null, false, null, null, null); xusrc_FVI_SLO_MessageBox.Post(xusrc_FVI_SLO_Message); return; } for (;;) { ReturnValue rv = null; string xml_returned = null; switch (message_box.Get(ref fvi_message)) { case Result_MessageBox_Get.OK: switch (fvi_message.Message) { case Thread_FVI_Message.eMessage.POST_ECHO: rv = taxService.Send(fvi_message.XML_Data); xml_returned = prettyXml(rv.originalMessage); xusrc_FVI_SLO_Message.Set(fvi_message.Message_ID, usrc_FVI_SLO_Message.eMessage.FVI_RESPONSE_ECHO, xml_returned); xusrc_FVI_SLO_Message.Success = rv.Success; xusrc_FVI_SLO_MessageBox.Post(xusrc_FVI_SLO_Message); break; case Thread_FVI_Message.eMessage.POST_SINGLE_INVOICE: rv = taxService.Send(fvi_message.XML_Data); xml_returned = prettyXml(rv.originalMessage); if (rv.BarCodes!=null) { string BarCodeValue = rv.BarCodes.BarCodeValue; if (BarCodeValue != null) { Image img_QRCode = rv.BarCodes.DrawQRCode(Properties.Settings.Default.QRImageWidth, System.Drawing.Imaging.ImageFormat.Png); xusrc_FVI_SLO_Message.Set(fvi_message.Message_ID, usrc_FVI_SLO_Message.eMessage.FVI_RESPONSE_SINGLE_INVOICE, xml_returned, rv.ErrorMessage, rv.MessageType, rv.ProtectedID, rv.Success, rv.UniqueInvoiceID, BarCodeValue, img_QRCode); } else { xusrc_FVI_SLO_Message.Set(fvi_message.Message_ID, usrc_FVI_SLO_Message.eMessage.FVI_RESPONSE_SINGLE_INVOICE, xml_returned, rv.ErrorMessage, rv.MessageType, rv.ProtectedID, rv.Success, rv.UniqueInvoiceID, null, null); } } else { xusrc_FVI_SLO_Message.Set(fvi_message.Message_ID, usrc_FVI_SLO_Message.eMessage.FVI_RESPONSE_SINGLE_INVOICE, xml_returned, rv.ErrorMessage, rv.MessageType, rv.ProtectedID, rv.Success, rv.UniqueInvoiceID, null, null); } xusrc_FVI_SLO_MessageBox.Post(xusrc_FVI_SLO_Message); break; case Thread_FVI_Message.eMessage.POST_BUSINESSPREMISE: rv = taxService.Send(fvi_message.XML_Data); xml_returned = prettyXml(rv.originalMessage); xusrc_FVI_SLO_Message.Set(fvi_message.Message_ID, usrc_FVI_SLO_Message.eMessage.FVI_RESPONSE_PP, xml_returned); xusrc_FVI_SLO_Message.Success = rv.Success; xusrc_FVI_SLO_Message.ErrorMessage = rv.ErrorMessage; xusrc_FVI_SLO_MessageBox.Post(xusrc_FVI_SLO_Message); break; case Thread_FVI_Message.eMessage.POST_MANY_INVOICES: rv = taxService.Send(fvi_message.XML_Data); xml_returned = prettyXml(rv.originalMessage); xusrc_FVI_SLO_Message.Set(fvi_message.Message_ID, usrc_FVI_SLO_Message.eMessage.FVI_RESPONSE_SINGLE_INVOICE, xml_returned); xusrc_FVI_SLO_MessageBox.Post(xusrc_FVI_SLO_Message); break; case Thread_FVI_Message.eMessage.END: xusrc_FVI_SLO_Message.Set(0,usrc_FVI_SLO_Message.eMessage.Thread_FVI_END, null); xusrc_FVI_SLO_MessageBox.Post(xusrc_FVI_SLO_Message); return; } break; case Result_MessageBox_Get.TIMEOUT: break; } } }