flexbiz-server 12.3.35 → 12.3.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.3.35",
5
+ "version": "12.3.36",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -1,3 +1,3 @@
1
1
  'use strict';const mailaccountSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_link:{type:String},fullname:{type:String,required:!0},username:{type:String,required:!0},password:{type:String,required:!0},imap:{host:{type:String},port:{type:Number,default:993},secure:{type:Boolean,default:!0},mailbox:{type:String,default:"INBOX"},fetchsenders:{type:String,default:"invoice,hoadon"}},smtp:{host:{type:String,required:!0},port:{type:Number,default:465,required:!0},ssl:{type:Boolean,
2
- default:!0}},error:{},status_string:{type:String},status_code:Number,provider:{type:String,default:"generic"},lastChecked:{type:Date,default:null},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
2
+ default:!0}},error:{},status_string:{type:String},status_code:Number,provider:{type:String,default:"generic"},last_checked:{type:Date,default:null},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
3
3
  (global.configs||{}).createIndexes&&(mailaccountSchema.index({id_app:1,username:"text",fullname:"text"}),mailaccountSchema.index({id_app:1,username:1}),mailaccountSchema.index({id_app:1,fullname:1}),mailaccountSchema.index({id_app:1,id_link:1}),mailaccountSchema.index({id_app:1,status:1}),mailaccountSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}));const model=mongoose.models.mailaccount||mongoose.model("mailaccount",mailaccountSchema);module.exports=model;
@@ -1,2 +1,2 @@
1
- 'use strict';const InvoiceSchema$$module$models$receivedinvoice=new Schema({id_app:{type:String,required:!0},invoiceNumber:{type:String,required:!0},invoiceSymbol:{type:String},issueDate:{type:Date},sellerTaxCode:{type:String},buyerTaxCode:{type:String},total:{type:Number},xmlContent:{type:String},sourceEmail:{type:String},id_ct:String,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,
2
- default:""}});InvoiceSchema$$module$models$receivedinvoice.index({id_app:1,invoiceNumber:1,invoiceSymbol:1,sellerTaxCode:1},{unique:!0});InvoiceSchema$$module$models$receivedinvoice.index({id_app:1,sourceEmail:1});var $jscompDefaultExport$$module$models$receivedinvoice=mongoose.model("receivedinvoice",InvoiceSchema$$module$models$receivedinvoice),module$models$receivedinvoice={};module$models$receivedinvoice.default=$jscompDefaultExport$$module$models$receivedinvoice;
1
+ 'use strict';const InvoiceSchema$$module$models$receivedinvoice=new Schema({id_app:{type:String,required:!0},invoice_number:{type:String,required:!0},invoice_symbol:{type:String},issue_date:{type:Date},seller_taxCode:{type:String},buyer_tax_code:{type:String},total:{type:Number},items:[],xml_content:{type:String},source_email:{type:String},id_ct:String,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},
2
+ user_updated:{type:String,default:""}});InvoiceSchema$$module$models$receivedinvoice.index({id_app:1,invoice_number:1,invoice_symbol:1,seller_tax_code:1},{unique:!0});InvoiceSchema$$module$models$receivedinvoice.index({id_app:1,source_email:1});var $jscompDefaultExport$$module$models$receivedinvoice=mongoose.model("receivedinvoice",InvoiceSchema$$module$models$receivedinvoice),module$models$receivedinvoice={};module$models$receivedinvoice.default=$jscompDefaultExport$$module$models$receivedinvoice;
@@ -3,13 +3,13 @@ async function convertXmlToJson$$module$services$invoiceFetcher($xml$$){return p
3
3
  function extractIntermediateLink$$module$services$invoiceFetcher($emailBody$jscomp$1_match$$){return($emailBody$jscomp$1_match$$=$emailBody$jscomp$1_match$$.match(/https?:\/\/[^\s"'<>]+\/Invoice\/ViewFromEmail\?[^"'<>]+/gi))?$emailBody$jscomp$1_match$$[0]:null}
4
4
  async function extractXmlLinkDeep$$module$services$invoiceFetcher($emailBody$$){$emailBody$$=extractIntermediateLink$$module$services$invoiceFetcher($emailBody$$);if(!$emailBody$$)return null;try{const $html$$=await fetch$$module$services$invoiceFetcher($emailBody$$).then($res$$=>$res$$.text()),$xmlMatch$$=$html$$.match(/https?:\/\/[^\s"'<>]+\.xml/gi);if($xmlMatch$$&&$xmlMatch$$[0])return $xmlMatch$$[0];const $altMatch$$=$html$$.match(/href="([^"]+)"[^>]*>(T\u1ea3i|Download).*XML/i);if($altMatch$$&&
5
5
  $altMatch$$[1]){let $url$$=$altMatch$$[1];$url$$.startsWith("http")||($url$$=`${$emailBody$$.split("/Invoice")[0]}${$url$$}`);return $url$$}}catch($err$$){console.warn("\u26a0\ufe0f Kh\u00f4ng th\u1ec3 truy c\u1eadp link trung gian:",$err$$.message)}return null}
6
- function extractInvoiceSummary$$module$services$invoiceFetcher($info_json$$){$info_json$$=$info_json$$?.HDon?.DLHDon;if(!$info_json$$)return null;var $arr$$=$info_json$$?.NDHDon?.DSHHDVu?.HHDVu;$arr$$=Array.isArray($arr$$)?$arr$$:[$arr$$];return{invoiceNumber:$info_json$$?.TTChung?.SHDon||"",invoiceSymbol:$info_json$$?.TTChung?.KHHDon||"",issueDate:$info_json$$?.TTChung?.NLap||null,sellerTaxCode:$info_json$$?.NDHDon?.NBan?.MST||"",buyerTaxCode:$info_json$$?.NDHDon?.NMua?.MST||"",total:Number($info_json$$?.NDHDon?.TToan?.TgTTTBSo)||
6
+ function extractInvoiceSummary$$module$services$invoiceFetcher($info_json$$){$info_json$$=$info_json$$?.HDon?.DLHDon;if(!$info_json$$)return null;var $arr$$=$info_json$$?.NDHDon?.DSHHDVu?.HHDVu;$arr$$=Array.isArray($arr$$)?$arr$$:[$arr$$];return{invoice_number:$info_json$$?.TTChung?.SHDon||"",invoice_symbol:$info_json$$?.TTChung?.KHHDon||"",issue_date:$info_json$$?.TTChung?.NLap||null,seller_tax_code:$info_json$$?.NDHDon?.NBan?.MST||"",buyer_tax_code:$info_json$$?.NDHDon?.NMua?.MST||"",total:Number($info_json$$?.NDHDon?.TToan?.TgTTTBSo)||
7
7
  0,items:$arr$$}}
8
- async function fetchInvoicesFromEmailConfig$$module$services$invoiceFetcher($emailConfig$$,$body_fetchFromDate_sinceDate$$){const $client$$=new ImapFlow$$module$services$invoiceFetcher({host:$emailConfig$$.imap.host,port:$emailConfig$$.imap.port,secure:$emailConfig$$.imap.secure,auth:{user:$emailConfig$$.username,pass:$emailConfig$$.password}});await $client$$.connect();await $client$$.mailboxOpen("INBOX");$body_fetchFromDate_sinceDate$$=$body_fetchFromDate_sinceDate$$?new Date($body_fetchFromDate_sinceDate$$):$emailConfig$$.lastChecked||
9
- new Date(Date.now()-2592E6);var $senderFilters_xmlLink$$=($emailConfig$$.fetchsenders?.length?$emailConfig$$.fetchsenders.split(","):["invoice","hoadon"]).map($keyword$$=>["FROM",$keyword$$]);let $allMessages$$=new Set;for(var $sender_xmlContent$$ of $senderFilters_xmlLink$$)(await $client$$.search([$sender_xmlContent$$,["SINCE",$body_fetchFromDate_sinceDate$$]].flat(),{sort:["ARRIVAL"],limit:100})).forEach($uid$$=>$allMessages$$.add($uid$$));console.log(`\ud83d\udce8 [${$emailConfig$$.username}] T\u00ecm th\u1ea5y ${$allMessages$$.size} email k\u1ec3 t\u1eeb ${$body_fetchFromDate_sinceDate$$.toLocaleDateString("vi-VN")}`);
10
- for await(const $msg$$ of $client$$.fetch($allMessages$$,{envelope:!0,source:!0,attachments:!0})){$sender_xmlContent$$=null;if($msg$$.attachments?.length)for(const $att$$ of $msg$$.attachments)if($att$$.filename.endsWith(".xml")){$sender_xmlContent$$=$att$$.content.toString("utf8");break}$sender_xmlContent$$||($body_fetchFromDate_sinceDate$$=$msg$$.source.toString("utf8"),($senderFilters_xmlLink$$=extractXmlLink$$module$services$invoiceFetcher($body_fetchFromDate_sinceDate$$))||($senderFilters_xmlLink$$=
11
- await extractXmlLinkDeep$$module$services$invoiceFetcher($body_fetchFromDate_sinceDate$$)),$senderFilters_xmlLink$$&&($sender_xmlContent$$=await (await fetch$$module$services$invoiceFetcher($senderFilters_xmlLink$$)).text()));if($sender_xmlContent$$)try{const $json$$=await convertXmlToJson$$module$services$invoiceFetcher($sender_xmlContent$$),$summary$$=extractInvoiceSummary$$module$services$invoiceFetcher($json$$);$summary$$&&(await Invoice$$module$services$invoiceFetcher.findOne({invoiceNumber:$summary$$.invoiceNumber,
12
- invoiceSymbol:$summary$$.invoiceSymbol,sellerTaxCode:$summary$$.sellerTaxCode})?console.log(`\u23e9 H\u00f3a \u0111\u01a1n ${$summary$$.invoiceNumber} \u0111\u00e3 t\u1ed3n t\u1ea1i.`):(await Invoice$$module$services$invoiceFetcher.create({...$summary$$,xmlContent:$sender_xmlContent$$,sourceEmail:$emailConfig$$._id.toString(),id_app:$emailConfig$$.id_app}),console.log(`\u2705 \u0110\u00e3 l\u01b0u h\u00f3a \u0111\u01a1n ${$summary$$.invoiceNumber} t\u1eeb ${$emailConfig$$.user}`)))}catch($e$$){console.error("L\u1ed7i x\u1eed l\u00fd email:",
8
+ async function fetchInvoicesFromEmailConfig$$module$services$invoiceFetcher($emailConfig$$,$body_fetchFromDate_sinceDate$$){const $client$$=new ImapFlow$$module$services$invoiceFetcher({host:$emailConfig$$.imap.host,port:$emailConfig$$.imap.port,secure:$emailConfig$$.imap.secure,auth:{user:$emailConfig$$.username,pass:$emailConfig$$.password}});await $client$$.connect();await $client$$.mailboxOpen("INBOX");$body_fetchFromDate_sinceDate$$=$body_fetchFromDate_sinceDate$$?new Date($body_fetchFromDate_sinceDate$$):$emailConfig$$.last_checked||
9
+ new Date(Date.now()-2592E6);var $senderFilters_xmlLink$$=($emailConfig$$.fetchsenders?.length?$emailConfig$$.fetchsenders.split(","):["invoice","hoadon"]).map($keyword$$=>["FROM",$keyword$$]);let $allMessages$$=new Set;for(var $sender_xml_content$$ of $senderFilters_xmlLink$$)(await $client$$.search([$sender_xml_content$$,["SINCE",$body_fetchFromDate_sinceDate$$]].flat(),{sort:["ARRIVAL"],limit:100})).forEach($uid$$=>$allMessages$$.add($uid$$));console.log(`\ud83d\udce8 [${$emailConfig$$.username}] T\u00ecm th\u1ea5y ${$allMessages$$.size} email k\u1ec3 t\u1eeb ${$body_fetchFromDate_sinceDate$$.toLocaleDateString("vi-VN")}`);
10
+ for await(const $msg$$ of $client$$.fetch($allMessages$$,{envelope:!0,source:!0,attachments:!0})){$sender_xml_content$$=null;if($msg$$.attachments?.length)for(const $att$$ of $msg$$.attachments)if($att$$.filename.endsWith(".xml")){$sender_xml_content$$=$att$$.content.toString("utf8");break}$sender_xml_content$$||($body_fetchFromDate_sinceDate$$=$msg$$.source.toString("utf8"),($senderFilters_xmlLink$$=extractXmlLink$$module$services$invoiceFetcher($body_fetchFromDate_sinceDate$$))||($senderFilters_xmlLink$$=
11
+ await extractXmlLinkDeep$$module$services$invoiceFetcher($body_fetchFromDate_sinceDate$$)),$senderFilters_xmlLink$$&&($sender_xml_content$$=await (await fetch$$module$services$invoiceFetcher($senderFilters_xmlLink$$)).text()));if($sender_xml_content$$)try{const $json$$=await convertXmlToJson$$module$services$invoiceFetcher($sender_xml_content$$),$summary$$=extractInvoiceSummary$$module$services$invoiceFetcher($json$$);$summary$$&&(await Invoice$$module$services$invoiceFetcher.findOne({invoice_number:$summary$$.invoice_number,
12
+ invoice_symbol:$summary$$.invoice_symbol,seller_tax_code:$summary$$.seller_tax_code})?console.log(`\u23e9 H\u00f3a \u0111\u01a1n ${$summary$$.invoice_number} \u0111\u00e3 t\u1ed3n t\u1ea1i.`):(await Invoice$$module$services$invoiceFetcher.create({...$summary$$,xml_content:$sender_xml_content$$,source_email:$emailConfig$$._id.toString(),id_app:$emailConfig$$.id_app}),console.log(`\u2705 \u0110\u00e3 l\u01b0u h\u00f3a \u0111\u01a1n ${$summary$$.invoice_number} t\u1eeb ${$emailConfig$$.user}`)))}catch($e$$){console.error("L\u1ed7i x\u1eed l\u00fd email:",
13
13
  $e$$.message)}}await $client$$.logout()}
14
- async function fetchAllInvoices$$module$services$invoiceFetcher($configs_id_app$$){$configs_id_app$$=(await mailaccount$$module$services$invoiceFetcher.find({id_app:$configs_id_app$$,status:!0})).filter($a$$=>$a$$.imap&&$a$$.imap.host);for(const $cfg$$ of $configs_id_app$$)console.log(`\ud83d\udcec \u0110ang \u0111\u1ecdc email t\u1eeb c\u1ea5u h\u00ecnh: ${$cfg$$.fullname} (${$cfg$$.username})`),await fetchInvoicesFromEmailConfig$$module$services$invoiceFetcher($cfg$$),$cfg$$.lastChecked=new Date,
14
+ async function fetchAllInvoices$$module$services$invoiceFetcher($configs_id_app$$){$configs_id_app$$=(await mailaccount$$module$services$invoiceFetcher.find({id_app:$configs_id_app$$,status:!0})).filter($a$$=>$a$$.imap&&$a$$.imap.host);for(const $cfg$$ of $configs_id_app$$)console.log(`\ud83d\udcec \u0110ang \u0111\u1ecdc email t\u1eeb c\u1ea5u h\u00ecnh: ${$cfg$$.fullname} (${$cfg$$.username})`),await fetchInvoicesFromEmailConfig$$module$services$invoiceFetcher($cfg$$),$cfg$$.last_checked=new Date,
15
15
  await $cfg$$.save()}var module$services$invoiceFetcher={};module$services$invoiceFetcher.fetchAllInvoices=fetchAllInvoices$$module$services$invoiceFetcher;