UNPKG

flexbiz-server

Version:

Flexible Server

77 lines (76 loc) 10.6 kB
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$$)}})};