const { sequelize, Entities , Financials , Itemsmaster , Entityfinyear} = require('../models') const { Op } = require("sequelize"); const { logMsg } = require('../services/logger.js'); function addNewFyFlag(Y1) { try { const Year_1 = Y1; const current_year = new Date().getFullYear(); const current_month = new Date().getMonth() + 1; let add_new_FY_flag; if(Year_1 >= current_year && 3 < current_month) { add_new_FY_flag = {show_add_finyear_button:0,FY:0}; } else { add_new_FY_flag = {show_add_finyear_button:1,FY:Year_1 + 1}; } return add_new_FY_flag; } catch (error) { console.log(error); } } function createSkeleton(losid,entityid) { try { // create skeletion with itemmaster data (itemmaster(id) == financial(itemid)) Itemsmaster.findAll({ where :{manual:1,is_active : 1},attributes: ['id'] , order: [['statement', 'ASC'],['section', 'ASC'],['itemorder', 'ASC']] }) .then(ItemsmasterData => { var year = new Date().getFullYear(); year_data = [{fy:year - 1},{fy:year - 2},{fy:year - 3}]; year_data.forEach(year_value => { Entityfinyear.create({ "losid":losid,"entityid":entityid,"FY":year_value.fy,"st_type": 0 }) .then(Entityfinyearsdata => { //construct lineitem array for bulk insert using itemmaster primarykey (id) var SkeletonInsert = new Promise((resolve, reject) => { let fin_data_array = []; ItemsmasterData.forEach( (itemvalue , index , itemvaluearray) => { fin_data_obj = { "entity_id":Entityfinyearsdata.dataValues.entityid,"st_type":Entityfinyearsdata.dataValues.st_type,"itemid":itemvalue.dataValues.id,"fy":Entityfinyearsdata.dataValues.FY,"value":0,"is_active":1,"createdby":4} fin_data_array.push(fin_data_obj); if (index === itemvaluearray.length -1) { resolve(fin_data_array); } }) }); SkeletonInsert.then((Query_data)=>{ Financials.bulkCreate(Query_data).then(data=>{ logMsg.info("Skeleton created for LosId ="+losid+" - EntityId = "+entityid); Entities.update({ "probe42_data_status": 2 },{ where: { id: entityid }}); }).catch(err=>(console.log(err))); //skeleton bulk create query }); }).catch(err => { res.status(404).send({'status':404, message: err.message || "Some error occurred while insertinging statements." ,'data': "No data" }); }); // end of entity fin year table data insert }); //end of forEach }).catch(err=>(console.log(err))); //itemmaster query } catch (error) { console.log(error); } } module.exports = { addNewFyFlag : addNewFyFlag , createSkeleton : createSkeleton }