611 lines
16 KiB
TypeScript
Executable File
611 lines
16 KiB
TypeScript
Executable File
import { CMyPage } from '../../../components/CMyPage/index'
|
|
|
|
import { shared_consts } from '@src/common/shared_vuejs'
|
|
import { tools } from '@src/store/Modules/tools'
|
|
|
|
import { defineComponent, ref, onMounted } from 'vue'
|
|
import { useI18n } from '@src/boot/i18n'
|
|
import { useUserStore } from '@store/UserStore'
|
|
import { useGlobalStore } from '@store/globalStore'
|
|
import { useQuasar } from 'quasar'
|
|
import { IParamsQuery } from 'model'
|
|
import { toolsext } from '@store/Modules/toolsext'
|
|
import { StringDecoder } from 'string_decoder'
|
|
|
|
export default defineComponent({
|
|
name: 'Sendpushnotif',
|
|
components: { CMyPage },
|
|
setup(props, { emit }) {
|
|
const $q = useQuasar()
|
|
const { t } = useI18n()
|
|
const userStore = useUserStore()
|
|
const globalStore = useGlobalStore()
|
|
|
|
const arrSector = ref(<any[]>[])
|
|
const arrSectorGood = ref(<any[]>[])
|
|
const arrSkill = ref(<any[]>[])
|
|
const arrGood = ref(<any[]>[])
|
|
|
|
const importasulserver = ref(false)
|
|
const skipfirstrow = ref(true)
|
|
|
|
const incaricamento = ref(false)
|
|
const checkAggiornaQta = ref(false)
|
|
|
|
const cosafare = ref(shared_consts.Cmd.PRODUCTS_V2)
|
|
|
|
const inputfile = ref('')
|
|
const risultato = ref('')
|
|
const risraw = ref('')
|
|
|
|
const caricaDatiToggle = ref(false)
|
|
|
|
const ListaCmd = ref(
|
|
[
|
|
{
|
|
label: 'Importa Prodotti',
|
|
value: shared_consts.Cmd.PRODUCTS
|
|
},
|
|
{
|
|
label: 'Importa Prodotti Versione 2',
|
|
value: shared_consts.Cmd.PRODUCTS_V2
|
|
},
|
|
{
|
|
label: 'Importa Inventario',
|
|
value: shared_consts.Cmd.INVENTARIO
|
|
},
|
|
{
|
|
label: 'Importa Province',
|
|
value: shared_consts.Cmd.PROVINCE
|
|
},
|
|
{
|
|
label: 'Importa Comuni',
|
|
value: shared_consts.Cmd.COMUNI
|
|
},
|
|
{
|
|
label: 'Tabella Cities',
|
|
value: shared_consts.Cmd.CITIES_SERVER
|
|
},
|
|
{
|
|
label: 'Importa Categorie Servizi da TXT',
|
|
value: shared_consts.Cmd.CAT_SKILL_TXT
|
|
},
|
|
{
|
|
label: 'Importa Categorie Beni (Goods) da TXT',
|
|
value: shared_consts.Cmd.CAT_GOODS_TXT
|
|
},
|
|
{
|
|
label: 'converti da TXT seperato senza spazi',
|
|
value: shared_consts.Cmd.CAT_NO_SPAZI
|
|
},
|
|
]
|
|
)
|
|
|
|
function caricadati() {
|
|
|
|
if (!caricaDatiToggle.value) {
|
|
arrSector.value = []
|
|
arrSectorGood.value = []
|
|
arrSkill.value = []
|
|
arrGood.value = []
|
|
|
|
return
|
|
}
|
|
|
|
const sortBy = 'descr'
|
|
const descending = 1
|
|
const myobj: any = {}
|
|
if (descending)
|
|
myobj[sortBy] = -1
|
|
else
|
|
myobj[sortBy] = 1
|
|
|
|
const params: IParamsQuery = {
|
|
newvers: true,
|
|
table: '',
|
|
startRow: 0,
|
|
endRow: 10000,
|
|
filter: '',
|
|
filterand: '',
|
|
filtersearch: '',
|
|
filtersearch2: '',
|
|
filtercustom: '',
|
|
filterextra: '',
|
|
filterextra2: '',
|
|
filter_gte: '',
|
|
sortBy: myobj,
|
|
descending,
|
|
userId: '',
|
|
noaut: false,
|
|
}
|
|
|
|
if (true) {
|
|
params.table = toolsext.TABSECTORS
|
|
globalStore.loadTable(params).then((data) => {
|
|
arrSector.value = data.rows
|
|
})
|
|
|
|
params.table = 'sectorgoods'
|
|
globalStore.loadTable(params).then((data) => {
|
|
arrSectorGood.value = data.rows
|
|
})
|
|
|
|
params.table = 'skills'
|
|
globalStore.loadTable(params).then((data) => {
|
|
arrSkill.value = data.rows
|
|
})
|
|
|
|
params.table = 'goods'
|
|
globalStore.loadTable(params).then((data) => {
|
|
arrGood.value = data.rows
|
|
})
|
|
}
|
|
|
|
}
|
|
|
|
function created() {
|
|
inputfile.value = ''
|
|
|
|
if (caricaDatiToggle.value) {
|
|
caricadati()
|
|
}
|
|
}
|
|
|
|
function createSector(cat: string, cmd: number) {
|
|
let arr = []
|
|
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
|
|
arr = arrSectorGood.value
|
|
} else {
|
|
arr = arrSector.value
|
|
}
|
|
|
|
const myid = arr.length + 1
|
|
arr.push({ _id: myid, descr: cat })
|
|
return myid
|
|
}
|
|
|
|
function findidSector(cat: string, cmd: number) {
|
|
let arr = []
|
|
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
|
|
arr = arrSectorGood.value
|
|
} else {
|
|
arr = arrSector.value
|
|
}
|
|
|
|
const rec = arr.find((rec) => rec.descr === cat)
|
|
if (rec) {
|
|
return rec._id
|
|
}
|
|
return 0;
|
|
}
|
|
function findidSkill(cat: string, cmd: number) {
|
|
let arr = []
|
|
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
|
|
arr = arrGood.value
|
|
} else {
|
|
arr = arrSkill.value
|
|
}
|
|
|
|
const rec = arr.find((rec) => rec.descr === cat)
|
|
if (rec) {
|
|
return rec._id
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
function createSkill(cat: string, cmd: number) {
|
|
let arr = []
|
|
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
|
|
arr = arrGood.value
|
|
} else {
|
|
arr = arrSkill.value
|
|
}
|
|
const myid = arr.length + 1
|
|
arr.push({ _id: myid, descr: cat })
|
|
return myid
|
|
}
|
|
|
|
|
|
function importCmdTxt(cmd: number, testo: string) {
|
|
|
|
const delim = '\n';
|
|
const righe = 1;
|
|
let indrec = 0;
|
|
let myarr = tools.CSVToArray(testo, delim)
|
|
|
|
let sector = ''
|
|
let skill = ''
|
|
let sotto_cat = ''
|
|
let idSector = 0
|
|
let idSkill = 0
|
|
|
|
let strskills = '';
|
|
let strsubskills = '';
|
|
let strsectors = '';
|
|
|
|
let indrecsub = 1;
|
|
|
|
myarr = myarr[0]
|
|
let arrstr = []
|
|
|
|
// debugger;
|
|
for (let i = 0; i < myarr.length; i = i + righe) {
|
|
arrstr = myarr[i].split(',')
|
|
sector = arrstr[0]
|
|
skill = arrstr[1]
|
|
// sotto_cat = arrstr[2]
|
|
// sotto_cat = myarr[i].replace('\'', '\\\'')
|
|
// sector = myarr[i+2]
|
|
if (skill)
|
|
skill = skill.replace('\'', '\\\'')
|
|
if (sector)
|
|
sector = sector.replace('\'', '\\\'')
|
|
|
|
if (sector) {
|
|
idSector = findidSector(sector, cmd)
|
|
if (!idSector) {
|
|
idSector = createSector(sector, cmd)
|
|
|
|
// sectors
|
|
strsectors += '{ \n'
|
|
strsectors += ' _id:' + idSector + ','
|
|
strsectors += ' descr:\'' + sector + '\','
|
|
strsectors += '}, \n'
|
|
}
|
|
|
|
if (skill !== '') {
|
|
idSkill = findidSkill(skill, cmd)
|
|
if (!idSkill) {
|
|
idSkill = createSkill(skill, cmd)
|
|
|
|
// skills
|
|
strskills += '{ \n'
|
|
strskills += ' _id:' + idSkill + ','
|
|
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
|
|
strskills += ' idSectorGood: [' + idSector + '],'
|
|
} else if (cmd === shared_consts.Cmd.CAT_SKILL_TXT) {
|
|
strskills += ' idSector: [' + idSector + '],'
|
|
}
|
|
|
|
strskills += ' descr:\'' + skill + '\','
|
|
strskills += '}, \n'
|
|
}
|
|
}
|
|
|
|
/*
|
|
if (sotto_cat !== '') {
|
|
// subskills
|
|
strsubskills += '{ \n'
|
|
strsubskills += ' idSkill: ' + idSkill + ','
|
|
strsubskills += ' descr:\'' + sotto_cat + '\','
|
|
strsubskills += '}, \n'
|
|
}
|
|
|
|
*/
|
|
}
|
|
|
|
indrecsub++
|
|
}
|
|
|
|
let ris = 'module.exports = {\n' +
|
|
' list: [' + strsectors + ']'
|
|
ris += '<br><br><br><br>'
|
|
ris += 'module.exports = {\n' +
|
|
' list: [' + strskills + ']'
|
|
ris += '<br><br><br><br>'
|
|
/*ris += 'module.exports = {\n' +
|
|
' list: [' + strsubskills + ']'
|
|
|
|
*/
|
|
|
|
return ris
|
|
|
|
}
|
|
|
|
function importNoSpazi(cmd: number, testo: string) {
|
|
|
|
const delim = '\n';
|
|
const righe = 3;
|
|
let indrec = 0;
|
|
let myarr = tools.CSVToArray(testo, delim)
|
|
|
|
let sector = ''
|
|
let sotto_cat = ''
|
|
|
|
myarr = myarr[0]
|
|
|
|
let txt = ''
|
|
|
|
// debugger;
|
|
for (let i = 0; i < myarr.length; i = i + righe) {
|
|
sotto_cat = myarr[i].replace('\'', '\\\'')
|
|
sector = myarr[i + 2]
|
|
|
|
txt += sotto_cat + ',' + sector + '<br>'
|
|
}
|
|
|
|
return txt
|
|
|
|
}
|
|
|
|
function importCmd(cmd: number, testo: string) {
|
|
|
|
let risultato = '(nessuno)'
|
|
let delim = ','
|
|
|
|
if (cmd === shared_consts.Cmd.PROVINCE) {
|
|
delim = ','
|
|
} else if ((cmd === shared_consts.Cmd.COMUNI) || (cmd === shared_consts.Cmd.CITIES_SERVER)) {
|
|
delim = ';'
|
|
} else if (cmd === shared_consts.Cmd.CAT_SKILL_TXT) {
|
|
return importCmdTxt(cmd, testo);
|
|
} else if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
|
|
return importCmdTxt(cmd, testo);
|
|
} else if (cmd === shared_consts.Cmd.CAT_NO_SPAZI) {
|
|
return importNoSpazi(cmd, testo);
|
|
}
|
|
|
|
function addfield(col: number, field: string, rec: any, opt: any) {
|
|
let risultato = ''
|
|
try {
|
|
let valstr = opt.strinput ? opt.strinput : rec[col]
|
|
|
|
if (opt.isnumero) {
|
|
if (valstr === '')
|
|
valstr = '0';
|
|
valstr = valstr.replace(',', '.');
|
|
}
|
|
if (opt.iseuro) {
|
|
valstr = tools.convertPriceEurToValue(valstr)
|
|
}
|
|
valstr = tools.removeescape(tools.addslashes(valstr))
|
|
if (!opt.primo)
|
|
risultato += ', '
|
|
|
|
risultato += '"' + field + '":"' + valstr + '"'
|
|
return risultato;
|
|
} catch (e) {
|
|
console.error('err', e);
|
|
}
|
|
}
|
|
|
|
const myarr = tools.CSVToArray(testo, delim)
|
|
|
|
let strris = ''
|
|
|
|
let ind = 1
|
|
let primo = true
|
|
|
|
let arrCols: any = []
|
|
|
|
if (skipfirstrow.value) {
|
|
arrCols = myarr[0]
|
|
}
|
|
console.log('arrCols', arrCols)
|
|
|
|
if (cmd === shared_consts.Cmd.PRODUCTS_V2) {
|
|
skipfirstrow.value = false
|
|
}
|
|
|
|
for (const rec of myarr) {
|
|
|
|
if (skipfirstrow.value) {
|
|
if (ind === 1) {
|
|
ind++;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
let lab = tools.addslashes(rec[0])
|
|
let val = tools.addslashes(rec[1])
|
|
if (cmd === shared_consts.Cmd.PROVINCE) {
|
|
let reg = tools.addslashes(rec[1])
|
|
val = tools.addslashes(rec[2])
|
|
|
|
strris += '{ \n'
|
|
strris += ' _id:' + ind + ','
|
|
strris += ' reg:\'' + reg + '\','
|
|
strris += ' prov:\'' + val + '\','
|
|
strris += ' descr:\'' + lab + '\','
|
|
strris += '}, \n'
|
|
|
|
} else if (cmd === shared_consts.Cmd.COMUNI) {
|
|
strris += '{ \n'
|
|
strris += ' istat:\'' + tools.addslashes(rec[0]) + '\','
|
|
strris += ' comune:\'' + tools.addslashes(rec[1]) + '\','
|
|
strris += ' prov:\'' + tools.addslashes(rec[2]) + '\''
|
|
|
|
|
|
} else if (cmd === shared_consts.Cmd.PRODUCTS) {
|
|
if (!primo) {
|
|
strris += ', '
|
|
}
|
|
|
|
strris += '{ '
|
|
let col = 0;
|
|
strris += addfield(col, 'idapp', rec, { strinput: tools.appid(), primo: true });
|
|
strris += addfield(col, 'code', rec, {}); col++;
|
|
strris += addfield(col, 'name', rec, {}); col++;
|
|
strris += addfield(col, 'price', rec, { iseuro: true }); col++;
|
|
strris += addfield(col, 'stockQty', rec, { isnumero: true }); col++;
|
|
col++;
|
|
strris += addfield(col, 'weight', rec, { isnumero: true }); col++;
|
|
strris += addfield(col, 'unit', rec, {}); col++;
|
|
strris += addfield(col, 'link', rec, {}); col++;
|
|
|
|
strris += addfield(col, 'perc_iva', rec, {}); col++;
|
|
strris += addfield(col, 'price_acquistato', rec, { isnumero: true }); col++;
|
|
strris += addfield(col, 'minBuyQty', rec, { isnumero: true }); col++;
|
|
strris += addfield(col, 'minStepQty', rec, { isnumero: true }); col++;
|
|
|
|
strris += addfield(col, 'cat_name', rec, {}); col++;
|
|
strris += addfield(col, 'subcat_name', rec, {}); col++;
|
|
strris += addfield(col, 'producer_name', rec, {}); col++;
|
|
strris += addfield(col, 'provider_name', rec, {}); col++;
|
|
strris += addfield(col, 'magazzino_name', rec, {}); col++;
|
|
strris += addfield(col, 'qtyToReachForGas', rec, { isnumero: true }); col++;
|
|
strris += addfield(col, 'maxbookableGASQty', rec, { isnumero: true }); col++;
|
|
strris += addfield(col, 'sconto1', rec, {}); col++;
|
|
strris += addfield(col, 'sconto2', rec, {}); col++;
|
|
strris += addfield(col, 'gas_name', rec, {}); col++;
|
|
strris += addfield(col, 'note', rec, {}); col++;
|
|
strris += '} '
|
|
|
|
} else if (cmd === shared_consts.Cmd.PRODUCTS_V2) {
|
|
if (!primo) {
|
|
strris += ', '
|
|
}
|
|
|
|
strris += '{ '
|
|
let col = 0;
|
|
strris += addfield(col, 'idapp', rec, { strinput: tools.appid(), primo: true });
|
|
for (const mycol of arrCols) {
|
|
strris += addfield(col, mycol, rec, {}); col++;
|
|
}
|
|
|
|
strris += '} '
|
|
|
|
} else if (cmd === shared_consts.Cmd.INVENTARIO) {
|
|
if (!primo) {
|
|
strris += ', '
|
|
}
|
|
|
|
strris += '{ '
|
|
let col = 0;
|
|
strris += addfield(col, 'idapp', rec, { strinput: tools.appid(), primo: true });
|
|
for (const mycol of arrCols) {
|
|
strris += addfield(col, mycol, rec, {}); col++;
|
|
}
|
|
|
|
strris += '} '
|
|
|
|
} else if (cmd === shared_consts.Cmd.CITIES_SERVER) {
|
|
strris += '{ \n'
|
|
strris += ' _id :' + ind + ',\n'
|
|
strris += ' istat :\'' + rec[0] + '\'\n,'
|
|
strris += ' comune :\'' + tools.addslashes(rec[1]) + '\'\n,'
|
|
strris += ' prov :\'' + rec[2] + '\'\n,'
|
|
strris += ' reg :\'' + tools.addslashes(rec[3]) + '\'\n,'
|
|
strris += ' pref :\'' + tools.addslashes(rec[4]) + '\'\n,'
|
|
strris += ' cap :\'' + rec[5] + '\'\n,'
|
|
strris += ' abitanti :\'' + rec[6] + '\'\n,'
|
|
strris += ' country : \'IT\'\n'
|
|
strris += '}, \n'
|
|
}
|
|
ind += 1
|
|
primo = false
|
|
|
|
}
|
|
|
|
if (cmd === shared_consts.Cmd.CITIES_SERVER) {
|
|
userStore.importToServerCmd($q, t, cmd, null)
|
|
} else if ((cmd === shared_consts.Cmd.PRODUCTS) || (cmd === shared_consts.Cmd.PRODUCTS_V2)) {
|
|
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
|
if (importasulserver.value)
|
|
userStore.importToServerCmd($q, t, cmd, { arrdata: strris, options })
|
|
}
|
|
risultato = strris
|
|
|
|
|
|
return risultato
|
|
}
|
|
|
|
function reset() {
|
|
risultato.value = ''
|
|
risraw.value = ''
|
|
inputfile.value = ''
|
|
}
|
|
|
|
function loadTextFromFile(ev: any) {
|
|
try {
|
|
console.log('ev', ev)
|
|
reset()
|
|
|
|
if (ev.target && ev.target.files) {
|
|
const file = ev.target.files[0]
|
|
const reader = new FileReader()
|
|
|
|
reader.onload = (e: any) => {
|
|
|
|
const testo = e.target.result
|
|
|
|
risultato.value = importCmd(cosafare.value, testo)
|
|
}
|
|
|
|
if (file)
|
|
reader.readAsText(file)
|
|
}
|
|
} catch (e) {
|
|
risultato.value = ''
|
|
}
|
|
}
|
|
|
|
function eseguiCmd() {
|
|
risultato.value = ''
|
|
userStore.importToServerCmd($q, t, cosafare.value, null)
|
|
}
|
|
|
|
function eseguiCmdProduct() {
|
|
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
|
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
|
|
risultato.value = ''
|
|
}
|
|
|
|
function eseguiCmdInventario() {
|
|
let options = { aggiornaStockQty: checkAggiornaQta.value }
|
|
userStore.importToServerCmd($q, t, cosafare.value, { arrdata: risultato.value, options })
|
|
risultato.value = ''
|
|
}
|
|
|
|
function createProvLink() {
|
|
let str = ''
|
|
|
|
const arr = globalStore.provinces
|
|
|
|
let regione = ''
|
|
let regid = ''
|
|
|
|
for (const prov of arr) {
|
|
if (prov.link_grp) {
|
|
if (prov.reg !== regid) {
|
|
const myreg = shared_consts.Regions.find((rec: any) => rec.value === prov.reg)
|
|
if (myreg) {
|
|
regid = myreg.value
|
|
regione = myreg.label
|
|
str += '<br><div class="text-subtitle1">' + regione + '</div>'
|
|
}
|
|
}
|
|
str += '<a class="prov" href="' + prov.link_grp + '" target="_blank">' + prov.descr + '</a><br>'
|
|
}
|
|
}
|
|
|
|
risultato.value = str
|
|
risraw.value = str
|
|
}
|
|
|
|
onMounted(created)
|
|
|
|
return {
|
|
inputfile,
|
|
shared_consts,
|
|
loadTextFromFile,
|
|
risultato,
|
|
cosafare,
|
|
ListaCmd,
|
|
eseguiCmd,
|
|
caricaDatiToggle,
|
|
caricadati,
|
|
createProvLink,
|
|
risraw,
|
|
importasulserver,
|
|
skipfirstrow,
|
|
eseguiCmdProduct,
|
|
checkAggiornaQta,
|
|
eseguiCmdInventario,
|
|
}
|
|
}
|
|
})
|
|
|
|
|