flexbiz-server
Version:
Flexible Server
77 lines (76 loc) • 10.6 kB
JavaScript
const vatvao=global.getModel("vatvao"),vatra=global.getModel("vatra"),kbmtkgtgt=global.getModel("kbmTkgtgt"),{calcGrid,sumByCondition}=require("../../libs/utils"),controller=require("../../controllers/controllerRPT"),moment=require("moment"),buildHTKKXml=($reportData$$,$companyInfo$$,$headerData$$)=>{let $values$$={};"21 22 23 24 25 26 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43".split(" ").forEach($f$$=>$values$$[`ct${$f$$}`]=0);$reportData$$.forEach($row$$=>{$row$$.ma_in_tien&&($values$$[`ct${$row$$.ma_in_tien}`]=
$row$$.t_tien||0);$row$$.ma_in_thue&&($values$$[`ct${$row$$.ma_in_thue}`]=$row$$.t_thue||0);$row$$.ma_so==="21"&&($values$$.ct21=$row$$.t_tien||$row$$.t_thue?"true":"false")});return`<?xml version="1.0" encoding="UTF-8"?>
<HSoThueDTu xmlns="http://kekhaithue.gdt.gov.vn/TKhai" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HSoKhaiThue>
<TTinChung>
<maTKhai>01/GTGT</maTKhai>
<tenTKhai>T\u1edd khai thu\u1ebf gi\u00e1 tr\u1ecb gia t\u0103ng (01/GTGT)</tenTKhai>
<moTaBMau>(Ban h\u00e0nh k\u00e8m theo Th\u00f4ng t\u01b0 s\u1ed1 80/2021/TT-BTC ng\u00e0y 29 th\u00e1ng 9 n\u0103m 2021 c\u1ee7a B\u1ed9 T\u00e0i ch\u00ednh)</moTaBMau>
<pbanTKhaiXML>2.4.2</pbanTKhaiXML>
<loaiTKhai>${$headerData$$.loai_tkhai||"C"}</loaiTKhai>
<soLan>${$headerData$$.so_lan||0}</soLan>
<KyKKhaiThue>
<kieuKy>${$headerData$$.kieu_ky_xml}</kieuKy>
<kyKKhai>${$headerData$$.ky_khai}</kyKKhai>
<kyKKhaiTuNgay>${$headerData$$.tu_ngay_str}</kyKKhaiTuNgay>
<kyKKhaiDenNgay>${$headerData$$.den_ngay_str}</kyKKhaiDenNgay>
<kyKKhaiNgay>${$headerData$$.ky_khai}</kyKKhaiNgay>
</KyKKhaiThue>
<maCqtNoiNop>${$companyInfo$$.ma_cqt||""}</maCqtNoiNop>
<tenCqtNoiNop>${$companyInfo$$.ten_cqt||""}</tenCqtNoiNop>
<ngayLapTKhai>${$headerData$$.ngay_lap}</ngayLapTKhai>
<nguoiKy>${$headerData$$.nguoi_ky}</nguoiKy>
<ngayKy>${$headerData$$.ngay_ky}</ngayKy>
<nganhNgheKD>
<maNganhNgheKD>${$companyInfo$$.ma_nganh_kd||""}</maNganhNgheKD>
<tenNganhNgheKD>${$companyInfo$$.ten_nganh_kd||""}</tenNganhNgheKD>
</nganhNgheKD>
<NNT>
<mst>${$companyInfo$$.ma_so_thue}</mst>
<tenNNT>${$companyInfo$$.ten_cong_ty}</tenNNT>
<dchiNNT>${$companyInfo$$.dia_chi}</dchiNNT>
<phuongXa></phuongXa>
<quanHuyen></quanHuyen>
<tinhThanh></tinhThanh>
<dthoaiNNT>${$companyInfo$$.dien_thoai||""}</dthoaiNNT>
<emailNNT>${$companyInfo$$.email||""}</emailNNT>
</NNT>
</TTinChung>
<CTieuToKhai>
<ct21>${$values$$.ct21||"false"}</ct21>
<ct22>${$values$$.ct22}</ct22>
<ct23>${$values$$.ct23}</ct23>
<ct24>${$values$$.ct24}</ct24>
<ct25>${$values$$.ct25}</ct25>
<ct26>${$values$$.ct26}</ct26>
<ct29>${$values$$.ct29}</ct29>
<ct30>${$values$$.ct30}</ct30>
<ct31>${$values$$.ct31}</ct31>
<ct32>${$values$$.ct32}</ct32>
<ct33>${$values$$.ct33}</ct33>
<ct34>${$values$$.ct34}</ct34>
<ct35>${$values$$.ct35}</ct35>
<ct36>${$values$$.ct36}</ct36>
<ct37>${$values$$.ct37}</ct37>
<ct38>${$values$$.ct38}</ct38>
<ct39>${$values$$.ct39}</ct39>
<ct40>${$values$$.ct40}</ct40>
<ct41>${$values$$.ct41}</ct41>
<ct42>${$values$$.ct42}</ct42>
<ct43>${$values$$.ct43}</ct43>
</CTieuToKhai>
</HSoKhaiThue>
</HSoThueDTu>`};
module.exports=function($router$$){new controller($router$$,"tkgtgt",async function($req$$,$callback$$){const $query$$=$req$$.query;if(!$query$$.nam)return $callback$$({message:"B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1: nam"});var $condition_kbm_query_nam_ngayLap$$=Number($query$$.nam),$ModelSelector_kyKhai_quy_thang$$="";let $kieuKyXml$$="M";if(($query$$.kieu_ky||"T").toUpperCase()==="Q"){if(!$query$$.quy)return $callback$$({message:"Ki\u1ec3u k\u1ef3 l\u00e0 Qu\u00fd y\u00eau c\u1ea7u tham s\u1ed1: quy"});$ModelSelector_kyKhai_quy_thang$$=
Number($query$$.quy);if($ModelSelector_kyKhai_quy_thang$$<1||$ModelSelector_kyKhai_quy_thang$$>4)return $callback$$({message:"Qu\u00fd kh\u00f4ng h\u1ee3p l\u1ec7 (1-4)"});var $dbTuNgay_startMonthIndex$$=($ModelSelector_kyKhai_quy_thang$$-1)*3;var $dbDenNgay_endMonthIndex$$=$dbTuNgay_startMonthIndex$$+2;$dbTuNgay_startMonthIndex$$=moment({year:$condition_kbm_query_nam_ngayLap$$,month:$dbTuNgay_startMonthIndex$$,day:1}).startOf("day").toDate();$dbDenNgay_endMonthIndex$$=moment({year:$condition_kbm_query_nam_ngayLap$$,
month:$dbDenNgay_endMonthIndex$$}).endOf("month").endOf("day").toDate();$ModelSelector_kyKhai_quy_thang$$=`Q${$ModelSelector_kyKhai_quy_thang$$}/${$condition_kbm_query_nam_ngayLap$$}`;$kieuKyXml$$="Q"}else{if(!$query$$.thang)return $callback$$({message:"Ki\u1ec3u k\u1ef3 l\u00e0 Th\u00e1ng y\u00eau c\u1ea7u tham s\u1ed1: thang"});$ModelSelector_kyKhai_quy_thang$$=Number($query$$.thang);if($ModelSelector_kyKhai_quy_thang$$<1||$ModelSelector_kyKhai_quy_thang$$>12)return $callback$$({message:"Th\u00e1ng kh\u00f4ng h\u1ee3p l\u1ec7 (1-12)"});
$dbTuNgay_startMonthIndex$$=moment({year:$condition_kbm_query_nam_ngayLap$$,month:$ModelSelector_kyKhai_quy_thang$$-1,day:1}).startOf("day").toDate();$dbDenNgay_endMonthIndex$$=moment({year:$condition_kbm_query_nam_ngayLap$$,month:$ModelSelector_kyKhai_quy_thang$$-1}).endOf("month").endOf("day").toDate();$ModelSelector_kyKhai_quy_thang$$=`${$ModelSelector_kyKhai_quy_thang$$.toString().padStart(2,"0")}/${$condition_kbm_query_nam_ngayLap$$}`;$kieuKyXml$$="M"}const $id_app$$=$query$$.id_app;$condition_kbm_query_nam_ngayLap$$=
$query$$.ngay_lap_to_khai?moment($query$$.ngay_lap_to_khai):moment();const $ngayKy$$=$query$$.ngay_ky?moment($query$$.ngay_ky):$condition_kbm_query_nam_ngayLap$$,$headerData$$={kieu_ky_xml:$kieuKyXml$$,ky_khai:$ModelSelector_kyKhai_quy_thang$$,tu_ngay_str:moment($dbTuNgay_startMonthIndex$$).format("DD/MM/YYYY"),den_ngay_str:moment($dbDenNgay_endMonthIndex$$).format("DD/MM/YYYY"),ngay_lap:$condition_kbm_query_nam_ngayLap$$.format("YYYY-MM-DD"),ngay_ky:$ngayKy$$.format("YYYY-MM-DD"),nguoi_ky:$query$$.nguoi_ky||
$query$$.phu_trach||"",loai_tkhai:$query$$.loai_tkhai||"C",so_lan:$query$$.so_lan||0};try{$condition_kbm_query_nam_ngayLap$$={id_app:$id_app$$};$condition_kbm_query_nam_ngayLap$$.id_rptform=$query$$.id_rptform?$query$$.id_rptform:{$in:[void 0,null,""]};let $report$$=await kbmtkgtgt.find($condition_kbm_query_nam_ngayLap$$).sort({stt:1}).lean().exec();for(let $r$$ of $report$$)if($r$$.cach_tinh!=="2")$r$$.t_tien=$r$$.t_tien||0,$r$$.t_thue=$r$$.t_thue||0;else if($condition_kbm_query_nam_ngayLap$$={ngay_ct:{$gte:$dbTuNgay_startMonthIndex$$,
$lte:$dbDenNgay_endMonthIndex$$},id_app:$id_app$$},$query$$.ma_dvcs&&($condition_kbm_query_nam_ngayLap$$.ma_dvcs=$query$$.ma_dvcs),$r$$.ma_thue&&$r$$.ma_thue.length>0&&$r$$.ma_thue[0]!==""&&($condition_kbm_query_nam_ngayLap$$.ma_thue={$in:$r$$.ma_thue}),$ModelSelector_kyKhai_quy_thang$$=null,$r$$.bang_du_lieu&&$r$$.bang_du_lieu.toLowerCase()==="vatvao"?($ModelSelector_kyKhai_quy_thang$$=vatvao,$r$$.ma_tc&&$r$$.ma_tc.length>0&&$r$$.ma_tc[0]!==""&&($condition_kbm_query_nam_ngayLap$$.ma_tc={$in:$r$$.ma_tc}),
$r$$.tk&&$r$$.tk.length>0&&($condition_kbm_query_nam_ngayLap$$.tk_thue_no={$regex:"^"+$r$$.tk,$options:"i"})):$r$$.bang_du_lieu&&$r$$.bang_du_lieu.toLowerCase()==="vatra"&&($ModelSelector_kyKhai_quy_thang$$=vatra,$r$$.tk&&$r$$.tk.length>0&&($condition_kbm_query_nam_ngayLap$$.tk_thue_co={$regex:"^"+$r$$.tk,$options:"i"})),$ModelSelector_kyKhai_quy_thang$$){const $data$$=await sumByCondition($ModelSelector_kyKhai_quy_thang$$,["t_tien","t_thue"],$condition_kbm_query_nam_ngayLap$$);$r$$.t_thue=$r$$.phan_loai==
"1"||$r$$.phan_loai=="2"?$data$$.t_thue:0;$r$$.t_tien=$r$$.phan_loai=="1"||$r$$.phan_loai=="3"?$data$$.t_tien:0}calcGrid($report$$,{t_tien:function($err$$,$rlq$$){$rlq$$.phan_loai=="3"||$rlq$$.phan_loai=="1"?$rlq$$.kieu_gia_tri=="1"&&$rlq$$.t_tien<0?$rlq$$.t_tien=0:$rlq$$.kieu_gia_tri=="2"&&$rlq$$.t_tien>0?$rlq$$.t_tien=0:$rlq$$.kieu_gia_tri=="3"&&($rlq$$.t_tien=Math.abs($rlq$$.t_tien)):$rlq$$.t_tien=0},t_thue:function($err$$,$rlq$$){$rlq$$.phan_loai=="2"||$rlq$$.phan_loai=="1"?$rlq$$.kieu_gia_tri==
"1"&&$rlq$$.t_thue<0?$rlq$$.t_thue=0:$rlq$$.kieu_gia_tri=="2"&&$rlq$$.t_thue>0?$rlq$$.t_thue=0:$rlq$$.kieu_gia_tri=="3"&&($rlq$$.t_thue=Math.abs($rlq$$.t_thue)):$rlq$$.t_thue=0}},async function($rs$$){const $exportType$$=($req$$.query.export||"").toLowerCase();var $company_companyInfo$$=await global.getModel("app").findOne({_id:$id_app$$}).lean();if(!$company_companyInfo$$)return $callback$$({message:"Kh\u00f4ng t\u00ecm th\u1ea5y th\u00f4ng tin c\u00f4ng ty"});$company_companyInfo$$={ma_so_thue:$company_companyInfo$$.ma_so_thue||
$company_companyInfo$$.mst,ten_cong_ty:$company_companyInfo$$.name||$company_companyInfo$$.ten_cong_ty,dia_chi:$company_companyInfo$$.address||$company_companyInfo$$.dia_chi,ma_cqt:$company_companyInfo$$.ma_cqt,ten_cqt:$company_companyInfo$$.ten_cqt,dien_thoai:$company_companyInfo$$.phone||$company_companyInfo$$.dien_thoai,email:$company_companyInfo$$.email,ma_nganh_kd:$company_companyInfo$$.ma_nganh_kd,ten_nganh_kd:$company_companyInfo$$.ten_nganh_kd};if($exportType$$==="xml")try{const $xmlString$$=
buildHTKKXml($rs$$,$company_companyInfo$$,$headerData$$),$xmlBuffer$$=Buffer.from($xmlString$$,"utf-8");return $callback$$(null,$xmlBuffer$$)}catch($err$$){return $callback$$({message:"L\u1ed7i t\u1ea1o XML: "+$err$$.message})}$callback$$(null,{reportData:$rs$$,companyInfo:$company_companyInfo$$,headerData:$headerData$$})})}catch($e$$){console.error("L\u1ed7i b\u00e1o c\u00e1o thu\u1ebf:",$e$$),$callback$$($e$$)}},{cache:!1,resHandler:async($req$$,$periodStr_result$$,$res$$)=>{const {error:$error$$,
data:$data$$}=$periodStr_result$$;if($error$$)return $res$$.status(400).send($error$$);($req$$.query.export||"").toLowerCase()==="xml"&&($periodStr_result$$=$req$$.query.kieu_ky==="Q"?`Q${$req$$.query.quy}`:`T${$req$$.query.thang}`,$res$$.setHeader("Content-Type","application/xml"),$res$$.setHeader("Content-Disposition",`attachment; filename="01_GTGT_${$req$$.query.nam}_${$periodStr_result$$}.xml"`));$res$$.send($data$$)}})};