|
@@ -70,6 +70,7 @@ namespace TCCInvoice
|
|
|
private const string PREINVOICE_PATH = @"C:\UXB2B_EIVO\PreInvoice\";
|
|
|
private const string PREINVOICE_RESPONSE_PATH = @"C:\UXB2B_EIVO\PreInvoice(Response)\";
|
|
|
private const string SELLER_INVOICE_RESPONSE_PATH = @"C:\Gateway-83196607\logs\InvoiceNoInspector\SellerInvoice(Response)\";
|
|
|
+ private const string RESPONSE_BACKUP_PATH = @"C:\UXB2B_EIVO\ResponseBackup\";
|
|
|
#endregion
|
|
|
|
|
|
#region Properties
|
|
@@ -227,7 +228,8 @@ namespace TCCInvoice
|
|
|
public delegate void InvoiceAssignNumberFailEventHandler(string dataNumber, string description);
|
|
|
public event InvoiceAssignNumberFailEventHandler InvoiceAssignNumberFailed;
|
|
|
|
|
|
- public delegate void InvoiceUploadFailEventHandler(string dataNumber, string invoiceNumber, string description);
|
|
|
+ public delegate void InvoiceUploadFailEventHandler(string dataNumber, string invoiceNumber, string randomNumber,
|
|
|
+ string description);
|
|
|
public event InvoiceUploadFailEventHandler InvoiceUploadFailed;
|
|
|
|
|
|
private void PreInvoiceResponse_Created(object sender, FileSystemEventArgs e)
|
|
@@ -246,6 +248,8 @@ namespace TCCInvoice
|
|
|
{
|
|
|
responseInvoiceError = xDoc.Descendants("Description").ElementAt(0).Value;
|
|
|
responseDataNumber = xDoc.Descendants("DataNumber").ElementAt(0).Value;
|
|
|
+ randomNumber = null;
|
|
|
+ BackupResponse(-1);
|
|
|
|
|
|
InvoiceAssignNumberFailed?.Invoke(responseDataNumber, responseInvoiceError);
|
|
|
}
|
|
@@ -261,6 +265,7 @@ namespace TCCInvoice
|
|
|
string invoicenumber = xDoc.Descendants("InvoiceNumber").ElementAt(0).Value;
|
|
|
if (!String.IsNullOrEmpty(responseInvoiceNumber) && responseInvoiceNumber == invoicenumber)
|
|
|
{
|
|
|
+ BackupResponse(1);
|
|
|
InvoiceGenerated?.Invoke(responseDataNumber, responseInvoiceNumber, responseInvoiceDate,
|
|
|
responseInvoiceTime, this.randomNumber);
|
|
|
}
|
|
@@ -271,7 +276,9 @@ namespace TCCInvoice
|
|
|
responseInvoiceError = xDoc.Descendants("Description").ElementAt(0).Value;
|
|
|
if (!String.IsNullOrEmpty(responseInvoiceNumber) && responseInvoiceNumber == invoicenumber)
|
|
|
{
|
|
|
- InvoiceUploadFailed?.Invoke(responseDataNumber, responseInvoiceNumber, responseInvoiceError);
|
|
|
+ BackupResponse(0);
|
|
|
+ InvoiceUploadFailed?.Invoke(responseDataNumber, responseInvoiceNumber, this.randomNumber,
|
|
|
+ responseInvoiceError);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -320,6 +327,45 @@ namespace TCCInvoice
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void SearchResponseByDataNumber(string dataNumber)
|
|
|
+ {
|
|
|
+ string fileToCheck = RESPONSE_BACKUP_PATH + dataNumber + ".xml";
|
|
|
+ if (!File.Exists(fileToCheck)) // 檔案不存在
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ XDocument xDoc = XDocument.Load(fileToCheck);
|
|
|
+
|
|
|
+ string invoicenumber, datanumber, invoicedate, invoicetime, description, randomnumber;
|
|
|
+ string status = xDoc.Descendants("Status").ElementAt(0).Value;
|
|
|
+ switch (status)
|
|
|
+ {
|
|
|
+ case "1" : // 發票配號成功且上傳成功
|
|
|
+ invoicenumber = xDoc.Descendants("InvoiceNumber").ElementAt(0).Value;
|
|
|
+ datanumber = xDoc.Descendants("DataNumber").ElementAt(0).Value;
|
|
|
+ invoicedate = xDoc.Descendants("InvoiceDate").ElementAt(0).Value;
|
|
|
+ invoicetime = xDoc.Descendants("InvoiceTime").ElementAt(0).Value;
|
|
|
+ randomnumber = xDoc.Descendants("RandomNumber").ElementAt(0).Value;
|
|
|
+ InvoiceGenerated?.Invoke(datanumber, invoicenumber, invoicedate, invoicetime, randomnumber);
|
|
|
+ break;
|
|
|
+ case "0" : // 發票配號成功但上傳失敗
|
|
|
+ invoicenumber = xDoc.Descendants("InvoiceNumber").ElementAt(0).Value;
|
|
|
+ datanumber = xDoc.Descendants("DataNumber").ElementAt(0).Value;
|
|
|
+ randomnumber = xDoc.Descendants("RandomNumber").ElementAt(0).Value;
|
|
|
+ description = xDoc.Descendants("Description").ElementAt(0).Value;
|
|
|
+ InvoiceUploadFailed?.Invoke(datanumber, invoicenumber, randomnumber, description);
|
|
|
+ break;
|
|
|
+ case "-1" : // 配號失敗
|
|
|
+ datanumber = xDoc.Descendants("DataNumber").ElementAt(0).Value;
|
|
|
+ description = xDoc.Descendants("Description").ElementAt(0).Value;
|
|
|
+ InvoiceAssignNumberFailed?.Invoke(datanumber, description);
|
|
|
+ break;
|
|
|
+ default :
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void GeneratePreinvoiceXML()
|
|
|
{
|
|
|
XDocument xDoc = new XDocument();
|
|
@@ -376,6 +422,25 @@ namespace TCCInvoice
|
|
|
xDoc.Save(PREINVOICE_PATH + dataNumber + ".xml");
|
|
|
}
|
|
|
|
|
|
+ private void BackupResponse(int status)
|
|
|
+ {
|
|
|
+ XDocument xDoc = new XDocument();
|
|
|
+ xDoc.Declaration = new XDeclaration("1.0", "UTF-8", "");
|
|
|
+
|
|
|
+ XElement root = new XElement("Response");
|
|
|
+ root.Add(new XElement("Status", status.ToString()),
|
|
|
+ new XElement("Description", responseInvoiceError),
|
|
|
+ new XElement("DataNumber", responseDataNumber),
|
|
|
+ new XElement("InvoiceNumber", responseInvoiceNumber),
|
|
|
+ new XElement("InvoiceDate", responseInvoiceDate),
|
|
|
+ new XElement("InvoiceTime", responseInvoiceTime),
|
|
|
+ new XElement("RandomNumber", randomNumber)
|
|
|
+ );
|
|
|
+
|
|
|
+ xDoc.Add(root);
|
|
|
+ xDoc.Save(RESPONSE_BACKUP_PATH + responseDataNumber + ".xml");
|
|
|
+ }
|
|
|
+
|
|
|
private void Reset()
|
|
|
{
|
|
|
dataNumber = null;
|