js-klikvet-logic-worker 2.3.17 → 2.3.19
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/{index.js → index.mjs} +6 -5
- package/package.json +10 -10
- package/{worker.js → worker.mjs} +305 -82
package/{index.js → index.mjs}
RENAMED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
//@ts-check
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import assert from 'assert'
|
|
3
|
+
import { KlikvetLogicWorker } from './worker.mjs'
|
|
4
|
+
import dotenv from "dotenv"
|
|
5
|
+
dotenv.config()
|
|
5
6
|
assert(process.env.VETERINE, "določi veterine v .env")
|
|
6
7
|
|
|
7
8
|
const veterine = process.env.VETERINE.split(',').map(a => a.trim()).filter(a => !!a)
|
|
@@ -13,7 +14,7 @@ if (!veterine.length) {
|
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
if (gsm) console.log("GSM za SMSe", gsm)
|
|
16
|
-
console.log('veterine',veterine);
|
|
17
17
|
|
|
18
|
-
const { KlikvetLogicWorker } = require('./worker');
|
|
19
18
|
new KlikvetLogicWorker({ veterine, gsm }).start()
|
|
19
|
+
|
|
20
|
+
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "js-klikvet-logic-worker",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.19",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"cry-db": "^2.
|
|
8
|
-
"cry-ebus2": "^3.
|
|
9
|
-
"cry-helpers": "^2.1.
|
|
10
|
-
"cry-klikvet-logic": "^0.10.
|
|
7
|
+
"cry-db": "^2.2.5",
|
|
8
|
+
"cry-ebus2": "^3.1.23",
|
|
9
|
+
"cry-helpers": "^2.1.103",
|
|
10
|
+
"cry-klikvet-logic": "^0.10.341",
|
|
11
11
|
"cry-local-query": "^1.0.12",
|
|
12
|
-
"dotenv": "^16.
|
|
12
|
+
"dotenv": "^16.3.1",
|
|
13
13
|
"lodash.clonedeep": ">=4.5.0",
|
|
14
|
-
"make-dir": "^
|
|
14
|
+
"make-dir": "^4.0.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@types/lodash.clonedeep": "^4.5.
|
|
18
|
-
"chai": "^4.3.
|
|
19
|
-
"mocha": "^10.
|
|
17
|
+
"@types/lodash.clonedeep": "^4.5.9",
|
|
18
|
+
"chai": "^4.3.10",
|
|
19
|
+
"mocha": "^10.2.0"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"test": "mocha"
|
package/{worker.js → worker.mjs}
RENAMED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
const DEFAULT_SERVICE_NAME = 'klikvet'
|
|
4
4
|
|
|
5
|
-
const Helpers = require('cry-helpers');
|
|
6
|
-
const logic = require('cry-klikvet-logic');
|
|
7
|
-
const { Worker, Client } = require('cry-ebus2')
|
|
8
5
|
/** @type {any} */
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
import assert from 'assert'
|
|
7
|
+
import * as logic from 'cry-klikvet-logic'
|
|
8
|
+
import clonedeep from 'lodash.clonedeep'
|
|
9
|
+
import packageJson from './package.json' assert { type: "json" }
|
|
10
|
+
import makeDir from 'make-dir'
|
|
11
|
+
import fs from 'fs'
|
|
12
|
+
import path from 'path'
|
|
13
|
+
import { Worker, Client } from 'cry-ebus2'
|
|
14
|
+
import { Mongo } from 'cry-db'
|
|
15
|
+
import { arrayToObject, dedup, Log, serialize } from 'cry-helpers'
|
|
16
16
|
|
|
17
17
|
let client = null
|
|
18
|
-
|
|
19
|
-
let log = new Helpers.Log(['KLIKVET'])
|
|
18
|
+
let log = new Log(['KLIKVET'])
|
|
20
19
|
let mongo = undefined
|
|
20
|
+
let razknjizujem = false
|
|
21
21
|
|
|
22
22
|
/** @typedef {import('cry-klikvet-logic').Blagovnica} Blagovnica */
|
|
23
23
|
/** @typedef {import('cry-klikvet-logic').Nastavitve} Nastavitve */
|
|
@@ -55,6 +55,11 @@ async function dbUpdateById(db, collection, _id, update) {
|
|
|
55
55
|
return await mongo.updateOne(collection, { _id },update)
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
async function dbUpsert(db, collection, _id, update) {
|
|
59
|
+
mongo.setDb(db)
|
|
60
|
+
return await mongo.upsert(collection, { _id }, update)
|
|
61
|
+
}
|
|
62
|
+
|
|
58
63
|
async function posljiSmsNarocenemu(data, n, gsm) {
|
|
59
64
|
|
|
60
65
|
let res = (await client.requestPromise('sms', {
|
|
@@ -86,9 +91,9 @@ async function posljiSmsNarocenemu(data, n, gsm) {
|
|
|
86
91
|
zaKdaj: n.zaKdaj,
|
|
87
92
|
})
|
|
88
93
|
if (data.nacin === "samodejno") {
|
|
89
|
-
await mongo.upsert("naroceni", { _id: n.narocen._id },
|
|
90
|
-
smsOddaja_id: _id,
|
|
91
|
-
|
|
94
|
+
await mongo.upsert("naroceni", { _id: n.narocen._id },
|
|
95
|
+
napaka ? { smsOddaja_napaka: { _id, napaka, } } : { smsOddaja_id: _id, }
|
|
96
|
+
);
|
|
92
97
|
}
|
|
93
98
|
}
|
|
94
99
|
return smsRes;
|
|
@@ -122,8 +127,9 @@ async function posljiSmsNCepljenjemu(data, n, gsm) {
|
|
|
122
127
|
stranka_id: n.pacient.stranka_id,
|
|
123
128
|
zaKdaj: n.zaKdaj,
|
|
124
129
|
})
|
|
125
|
-
if (data.nacin === "samodejno") {
|
|
126
|
-
n.pacient.cepljenja[n.cepljenje._id].smsOddaja_id = _id;
|
|
130
|
+
if (data.nacin === "samodejno" && !napaka) {
|
|
131
|
+
if (!napaka) n.pacient.cepljenja[n.cepljenje._id].smsOddaja_id = _id;
|
|
132
|
+
else n.pacient.cepljenja[n.cepljenje._id].smsOddaja_napaka = { napaka, _id };
|
|
127
133
|
await mongo.upsert("pacienti", { _id: n.pacient._id }, {
|
|
128
134
|
cepljenja: n.pacient.cepljenja
|
|
129
135
|
})
|
|
@@ -134,32 +140,51 @@ async function posljiSmsNCepljenjemu(data, n, gsm) {
|
|
|
134
140
|
|
|
135
141
|
async function razknjiziRacun(data)
|
|
136
142
|
{
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
143
|
+
if (razknjizujem) return { ok:false, error: "worker že razknjižuje"};
|
|
144
|
+
razknjizujem = true;
|
|
145
|
+
try {
|
|
146
|
+
let racun = await dbFindById(data.tenant, "racuni", data._id);
|
|
147
|
+
let nastavitve = await dbNastavitve(data.tenant);
|
|
148
|
+
mongo.setDb(data.tenant)
|
|
149
|
+
mongo.setAudit({ tenant: data.tenat, app: "klikvet/razknjiziRacun" })
|
|
150
|
+
await logic.spremeniZalogoNaPodlagiRacuna(racun, nastavitve, mongo)
|
|
151
|
+
await pobrisiZalogoNaDan(data.tenant, [racun.datum])
|
|
152
|
+
razknjizujem = false;
|
|
153
|
+
return { ok: true }
|
|
154
|
+
} catch (err) {
|
|
155
|
+
console.error("razknjiziRacun", data.tenant, err?.message || err)
|
|
156
|
+
razknjizujem = false;
|
|
157
|
+
return { ok: false, error: err?.message||err }
|
|
158
|
+
}
|
|
144
159
|
}
|
|
145
160
|
|
|
146
161
|
async function razknjiziRacune(data)
|
|
147
162
|
{
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
if (razknjizujem) return { ok: false, error: "worker že razknjižuje" };
|
|
164
|
+
razknjizujem = true;
|
|
165
|
+
try {
|
|
166
|
+
mongo.setDb(data.tenant)
|
|
167
|
+
mongo.setAudit({ tenant: data.tenant, app: "klikvet/razknjiziRacune" })
|
|
168
|
+
|
|
169
|
+
let dni = 14 * 24 * 60 * 60 * 1000; // 14 dni
|
|
170
|
+
let od = new Date(new Date().valueOf() - dni);
|
|
171
|
+
let racuni = await mongo.find("racuni", { datum: { $gte: od },razknjizen: false } , {});
|
|
172
|
+
let nastavitve = await dbNastavitve(data.tenant);
|
|
173
|
+
let datumi = []
|
|
174
|
+
for await (let racun of racuni) {
|
|
175
|
+
datumi.push(racun.datum)
|
|
176
|
+
await logic.spremeniZalogoNaPodlagiRacuna(racun, nastavitve, mongo)
|
|
177
|
+
console.log('z zamikom razknjižen račun št. ',racun.stevilka);
|
|
178
|
+
}
|
|
179
|
+
await pobrisiZalogoNaDan( data.tenant, datumi )
|
|
180
|
+
razknjizujem = false;
|
|
181
|
+
return { ok: true, racuni }
|
|
182
|
+
|
|
183
|
+
} catch (err) {
|
|
184
|
+
console.error("razknjiziRacune", data.tenant, err?.message || err)
|
|
185
|
+
razknjizujem = false;
|
|
186
|
+
return { ok: false, error: err?.message||err }
|
|
160
187
|
}
|
|
161
|
-
await pobrisiZalogoNaDan( data.tenant, datumi )
|
|
162
|
-
return { ok: true, racuni }
|
|
163
188
|
}
|
|
164
189
|
|
|
165
190
|
async function pobrisiZalogoNaDan(db, datumi) {
|
|
@@ -178,9 +203,88 @@ async function pobrisiZalogoNaDan(db, datumi) {
|
|
|
178
203
|
}
|
|
179
204
|
}
|
|
180
205
|
|
|
206
|
+
async function skladisceLokacije(lokacija_id, tenant) {
|
|
207
|
+
let vsa = await dbFind(tenant, "skladisca", { _deleted: { $exists: false }});
|
|
208
|
+
let moje = vsa.filter(s => s.lokacija_id.toString() === lokacija_id);
|
|
209
|
+
if (moje.length === 0) moje = vsa;
|
|
210
|
+
if (moje.length == 0) console.error("Ni skladišča za lokacijo", lokacija_id);
|
|
211
|
+
if (moje.length > 1) console.error("Več skladišč za lokacijo", lokacija_id);
|
|
212
|
+
return moje?.[0]
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
async function porabeZaDobavnice(data) {
|
|
216
|
+
|
|
217
|
+
let nastavitve = await dbNastavitve(data.tenant);
|
|
218
|
+
let od = new Date(new Date().valueOf() - 365 * 24 * 60 * 60 * 1000);
|
|
219
|
+
|
|
220
|
+
let nerazknijzene = await dbFind(data.tenant, "dobavnice",
|
|
221
|
+
{ datumDokumenta: { $gte: od },
|
|
222
|
+
status: { $in: ["izdana","zaračunana"] }, poraba_id: { $exists: false }, _deleted: { $exists: false } },
|
|
223
|
+
{ sort: { datumDokumenta: 1 } }
|
|
224
|
+
);
|
|
225
|
+
|
|
226
|
+
let artikel_ids = dedup(nerazknijzene.map(d => d.postavke.map(p => p.artikel_id?.toString())).flat());
|
|
227
|
+
|
|
228
|
+
let artikli = await dbFind(data.tenant, "artikli", {
|
|
229
|
+
_id: { $in: artikel_ids }
|
|
230
|
+
})
|
|
231
|
+
console.log('artikli',artikli);
|
|
232
|
+
|
|
233
|
+
let vse = 0, razknjizene = 0
|
|
234
|
+
let napake = []
|
|
235
|
+
for await (let dobavnica of nerazknijzene) {
|
|
236
|
+
if (!dobavnica.lokacija_id) console.error("dobavnica nima lokacije", dobavnica._id, dobavnica.stevilka)
|
|
237
|
+
try {
|
|
238
|
+
let skladisce_id = dobavnica.skladisce_id || (await skladisceLokacije(dobavnica.lokacija_id, data.tenant));
|
|
239
|
+
vse++
|
|
240
|
+
let poraba = await logic.porabaZaDobavnico({
|
|
241
|
+
dobavnica,
|
|
242
|
+
nastavitve,
|
|
243
|
+
skladisce_id,
|
|
244
|
+
lokacija_id: dobavnica.lokacija_id,
|
|
245
|
+
username: data.username,
|
|
246
|
+
artikli: arrayToObject(artikli, "_id"),
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
if (poraba) {
|
|
250
|
+
poraba.status = "zaključena"
|
|
251
|
+
let p = await dbUpsert(data.tenant, "odprteBlagovnice", poraba._id, poraba);
|
|
252
|
+
console.log('p',p);
|
|
253
|
+
|
|
254
|
+
await dbUpsert(data.tenant, "dobavnice", dobavnica._id, { poraba_id: p._id, poraba_sestavljena: new Date() });
|
|
255
|
+
}
|
|
256
|
+
if (poraba === null) {
|
|
257
|
+
await dbUpsert(data.tenant, "dobavnice", dobavnica._id, { poraba_id: null, poraba_preskocena: new Date() });
|
|
258
|
+
}
|
|
259
|
+
razknjizene++
|
|
260
|
+
} catch (err) {
|
|
261
|
+
napake.push(err)
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return { ok: vse === razknjizene, vse, razknjizene, napake }
|
|
265
|
+
}
|
|
266
|
+
|
|
181
267
|
async function razknjiziBlagovnice(data)
|
|
182
268
|
{
|
|
183
|
-
|
|
269
|
+
mongo.setDb(data.tenant)
|
|
270
|
+
mongo.setAudit({ tenant: data.tenant, app: "klikvet/razknjiziBlagovnice" })
|
|
271
|
+
|
|
272
|
+
let od = new Date(new Date().valueOf() - 60 * 24 * 60 * 60 * 1000);
|
|
273
|
+
|
|
274
|
+
// poišči tiste, ki bi morale že biti razknjižene, pa niso
|
|
275
|
+
{
|
|
276
|
+
let od = new Date(new Date().valueOf() - 3 * 60 * 24 * 60 * 60 * 1000);
|
|
277
|
+
let vpisane = await dbFind(data.tenant, "blagovnice", { datum: { $gte: od } }, { project: { _id: 1, status: 1 } });
|
|
278
|
+
let idjiVpisanih = vpisane.map(b => b._id.toString());
|
|
279
|
+
|
|
280
|
+
let zaPovrnit = await dbFind(data.tenant, "odprteBlagovnice", { _deleted: { $ne: "hack" }, status: "zaključena", datum: { $gte: od }, _id: { $nin: idjiVpisanih } }, { project: { status: 1, dokumentDobavitelja: 1, vrsta: 1 } });
|
|
281
|
+
|
|
282
|
+
for await (let b of zaPovrnit) {
|
|
283
|
+
console.log("vračam blagovnico v razkljižno", data.tenant, b)
|
|
284
|
+
await dbUpsert(data.tenant, "odprteBlagovnice", b._id, { razknjizena: undefined, _deleted: undefined, _vrnjenoVRazknjizbo: new Date() });
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
184
288
|
let nerazknijzene = await dbFind(data.tenant, "odprteBlagovnice",
|
|
185
289
|
{ datum: { $gte: od }, status: "zaključena", razknjizena: { $exists: false } },
|
|
186
290
|
{ sort: { datum: 1 } }
|
|
@@ -200,6 +304,10 @@ async function razknjiziBlagovnice(data)
|
|
|
200
304
|
}
|
|
201
305
|
|
|
202
306
|
async function razknjiziDobavnice(data) {
|
|
307
|
+
|
|
308
|
+
mongo.setDb(data.tenant)
|
|
309
|
+
mongo.setAudit({ tenant:data.tenant, app: "klikvet/razknjiziBlagovnico" })
|
|
310
|
+
|
|
203
311
|
let od = new Date(new Date().valueOf() - 60 * 24 * 60 * 60 * 1000)
|
|
204
312
|
let nerazknijzene = await dbFind(data.tenant, "dobavnice",
|
|
205
313
|
{ datum: { $gte: od }, status: "izdana", razknjizena: { $exists: false } },
|
|
@@ -217,6 +325,7 @@ async function razknjiziDobavnice(data) {
|
|
|
217
325
|
}
|
|
218
326
|
}
|
|
219
327
|
return { ok: vse === razknjizene, vse, razknjizene, napake }
|
|
328
|
+
|
|
220
329
|
}
|
|
221
330
|
|
|
222
331
|
// async function razknjiziBlagovnico(_id, tenant)
|
|
@@ -239,57 +348,84 @@ async function razknjiziDobavnice(data) {
|
|
|
239
348
|
// }
|
|
240
349
|
|
|
241
350
|
async function razknjiziBlagovnico(_id, tenant) {
|
|
242
|
-
mongo.setDb(tenant)
|
|
243
|
-
mongo.setAudit({ tenant, app: "klikvet/razknjiziBlagovnico" })
|
|
244
351
|
|
|
245
|
-
|
|
246
|
-
|
|
352
|
+
if (razknjizujem) return;
|
|
353
|
+
razknjizujem = true;
|
|
354
|
+
try {
|
|
355
|
+
mongo.setDb(tenant)
|
|
356
|
+
mongo.setAudit({ tenant, app: "klikvet/razknjiziBlagovnico" })
|
|
357
|
+
|
|
358
|
+
let blagovnica = await logic.razknjiziBlagovnico(_id, mongo);
|
|
359
|
+
razknjizujem = false;
|
|
360
|
+
return blagovnica
|
|
361
|
+
} catch (err) {
|
|
362
|
+
console.error("razknjiziBlagovnico",tenant)
|
|
363
|
+
}
|
|
364
|
+
razknjizujem = false;
|
|
247
365
|
}
|
|
248
366
|
|
|
249
367
|
async function razknjiziDobavnico(_id, tenant) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
368
|
+
if (razknjizujem) return;
|
|
369
|
+
razknjizujem = true;
|
|
370
|
+
try {
|
|
371
|
+
mongo.setDb(tenant)
|
|
372
|
+
mongo.setAudit({ tenant, app: "klikvet/razknjiziDobavnico" })
|
|
373
|
+
let dobavnica = await logic.razknjiziDobavnico(_id, mongo);
|
|
374
|
+
razknjizujem = false;
|
|
375
|
+
return dobavnica
|
|
376
|
+
} catch (err) {
|
|
377
|
+
console.error("razknjiziDobavnico", tenant, err?.message || err)
|
|
378
|
+
}
|
|
379
|
+
razknjizujem = false;
|
|
254
380
|
}
|
|
255
381
|
|
|
256
382
|
async function registerAllInvoices(data)
|
|
257
383
|
{
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
let err = null;
|
|
261
|
-
let napake = new Set()
|
|
384
|
+
if (razknjizujem) return { nall: 0, nok: 0, napake: ["worker že razknjižuje"] };
|
|
385
|
+
razknjizujem = true;
|
|
262
386
|
try {
|
|
387
|
+
assert(data.tenant, "must specify tenant")
|
|
263
388
|
|
|
264
|
-
err =
|
|
389
|
+
let err = null;
|
|
390
|
+
let napake = new Set()
|
|
391
|
+
try {
|
|
265
392
|
|
|
266
|
-
|
|
267
|
-
mongo.setAudit({ tenant: data.tenant, app: "klikvet/registerAllInvoices" })
|
|
393
|
+
err = "Podsistem db ni dosegljiv."
|
|
268
394
|
|
|
269
|
-
|
|
270
|
-
|
|
395
|
+
mongo.setDb(data.tenant)
|
|
396
|
+
mongo.setAudit({ tenant: data.tenant, app: "klikvet/registerAllInvoices" })
|
|
271
397
|
|
|
272
|
-
|
|
273
|
-
|
|
398
|
+
let myquery = { eor: null, negotovinski: { $ne: true }, leto: { $gte: 2022 } };
|
|
399
|
+
let env = data.env || (await mongo.findOne("nastavitve", {})).okolje
|
|
274
400
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
401
|
+
let all = await mongo.find("racuni", myquery, { project: { _id: 1 }, limit: 1000, })
|
|
402
|
+
err = "Napaka pri potrjevanju računov."
|
|
403
|
+
|
|
404
|
+
let n = 0;
|
|
405
|
+
try {
|
|
406
|
+
for await (let r of all) {
|
|
407
|
+
let res = await registerInvoice({ tenant: data.tenant, env, _id: r._id.toString() }, true);
|
|
408
|
+
if (res.eor) n++;
|
|
409
|
+
if (res.fursError) napake.add(res.fursError)
|
|
410
|
+
}
|
|
411
|
+
} catch (e) {
|
|
412
|
+
err = e.message;
|
|
413
|
+
console.log('err', err);
|
|
414
|
+
throw new Error()
|
|
281
415
|
}
|
|
282
|
-
} catch (e) {
|
|
283
|
-
err = e.message;
|
|
284
|
-
console.log('err',err);
|
|
285
|
-
throw new Error()
|
|
286
|
-
}
|
|
287
416
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
417
|
+
razknjizujem = false;
|
|
418
|
+
return { nall: all.length, nok: n, napake: [...napake] };
|
|
419
|
+
|
|
420
|
+
} catch (err) {
|
|
421
|
+
console.error('registerAllInvoices', err);
|
|
422
|
+
razknjizujem = false;
|
|
423
|
+
throw new Error(err);
|
|
424
|
+
}
|
|
425
|
+
} catch (err) {
|
|
426
|
+
console.error("registerAllInvoices", data.tenant, err?.message||err)
|
|
427
|
+
razknjizujem = false;
|
|
428
|
+
return { nall: 0, nok: 0, napake: [ err.message||err] };
|
|
293
429
|
}
|
|
294
430
|
}
|
|
295
431
|
|
|
@@ -319,6 +455,8 @@ async function registerInvoice(data, kasneje=false)
|
|
|
319
455
|
// poišči račun
|
|
320
456
|
timeoutError = "Db podsistem se ni odzval."
|
|
321
457
|
let racun = await dbFindById(data.tenant,"racuni",data._id)
|
|
458
|
+
if (racun.negotovinski) return "negotovinski račun ne bo fiskaliziran";
|
|
459
|
+
|
|
322
460
|
let blagajna = await dbFindById(data.tenant, "blagajne", racun.blagajna_id)
|
|
323
461
|
if (!blagajna) throw new Error("cannot locate blagajna: "+racun.blagajna_id)
|
|
324
462
|
let poslovalnica = await dbFindById(data.tenant, "poslovalnice", blagajna.poslovalnica_id)
|
|
@@ -463,9 +601,9 @@ async function registerInvoice(data, kasneje=false)
|
|
|
463
601
|
let updated = await dbUpdateById(data.tenant, "racuni", data._id, fursObj);
|
|
464
602
|
|
|
465
603
|
try {
|
|
466
|
-
let dir = path.join(
|
|
604
|
+
let dir = path.join('./racuni', new Date().getFullYear().toString(), data.tenant)
|
|
467
605
|
!fs.existsSync(dir) && makeDir.sync(dir);
|
|
468
|
-
fs.writeFileSync(path.join(dir, racun.stevilka),
|
|
606
|
+
fs.writeFileSync(path.join(dir, racun.stevilka), serialize.pack(clonedeep({ ...racun, ...updated}), false));
|
|
469
607
|
} catch (err) {
|
|
470
608
|
console.log("napaka pri zapisu izdanega računa na disk",err)
|
|
471
609
|
}
|
|
@@ -565,7 +703,7 @@ async function storno(db,id)
|
|
|
565
703
|
};
|
|
566
704
|
|
|
567
705
|
|
|
568
|
-
class KlikvetLogicWorker extends Worker {
|
|
706
|
+
export class KlikvetLogicWorker extends Worker {
|
|
569
707
|
|
|
570
708
|
constructor({ veterine, gsm }, opts) {
|
|
571
709
|
super(DEFAULT_SERVICE_NAME, opts)
|
|
@@ -692,15 +830,20 @@ class KlikvetLogicWorker extends Worker {
|
|
|
692
830
|
let pipeline = logic.racunovodji.createAggregationPipeline(data)
|
|
693
831
|
let podatki = await logic.racunovodji.execPipeline(pipeline.pipeline, data.tenant)
|
|
694
832
|
let prviZadnji = await logic.racunovodji.getFirstLastBills(data.tenant, pipeline.match)
|
|
833
|
+
let kategorije = await logic.racunovodji.getCategories(data.tenant, pipeline.match)
|
|
695
834
|
let racuniPravnim = data.racuniPravnim ? await logic.racunovodji.getTaxBills(data.tenant, pipeline.match) : []
|
|
696
835
|
let racuniOdlozeno = data.racuniOdlozeno ? await logic.racunovodji.getTrrBills(data.tenant, pipeline.match) : []
|
|
697
836
|
let stornirani = await logic.zakljucekBlagajne.storniraniRacuni(pipeline.match, data.tenant)
|
|
698
837
|
let placila = await logic.zakljucekBlagajne.sestevekPlacil(data.tenant, data)
|
|
699
838
|
let pred = await logic.zalogaNaDan({ datum: new Date(new Date(data.odDne).valueOf()-24*60*60*1000), tenant:data.tenant})
|
|
700
839
|
let po = await logic.zalogaNaDan({ datum: new Date(data.doDne), tenant: data.tenant })
|
|
840
|
+
let predKonsignacija = await logic.zalogaNaDan({ datum: new Date(new Date(data.odDne).valueOf() - 24 * 60 * 60 * 1000), tenant: data.tenant, samoKonsignacija: true })
|
|
841
|
+
let poKonsignacija = await logic.zalogaNaDan({ datum: new Date(data.doDne), tenant: data.tenant, samoKonsignacija: true })
|
|
701
842
|
let spremembaZaloge = await logic.spremembaZalogeZaObdobje({ ...data, poVrstah: true })
|
|
843
|
+
let spremembaKonsignacije = await logic.spremembaZalogeZaObdobje({ ...data, poVrstah: true, samoKonsignacija: true })
|
|
702
844
|
let vsotaDobav = await logic.VsotaDobavZaObdobje({ ...data })
|
|
703
|
-
|
|
845
|
+
|
|
846
|
+
return { podatki, racuniOdlozeno, racuniPravnim, kategorije, stornirani, placila, zaloga: { pred, po }, konsignacija: { pred: predKonsignacija, po: poKonsignacija }, spremembaZaloge, spremembaKonsignacije, vsotaDobav, prviZadnji };
|
|
704
847
|
}
|
|
705
848
|
|
|
706
849
|
if (data.operation === 'zakljucek-blagajne') {
|
|
@@ -999,6 +1142,13 @@ class KlikvetLogicWorker extends Worker {
|
|
|
999
1142
|
assert(data.tenant, "must specify tenant")
|
|
1000
1143
|
return await razknjiziBlagovnice(data);
|
|
1001
1144
|
};
|
|
1145
|
+
|
|
1146
|
+
if (data.operation === "porabe-za-dobavnice") {
|
|
1147
|
+
assert(data.tenant, "must specify tenant")
|
|
1148
|
+
let ret = await porabeZaDobavnice(data);
|
|
1149
|
+
await razknjiziBlagovnice(data);
|
|
1150
|
+
return ret;
|
|
1151
|
+
};
|
|
1002
1152
|
|
|
1003
1153
|
if (data.operation === "razknjizi-dobavnico") {
|
|
1004
1154
|
assert(data._id, "must specify _id of Dobavnica")
|
|
@@ -1063,6 +1213,8 @@ class KlikvetLogicWorker extends Worker {
|
|
|
1063
1213
|
|
|
1064
1214
|
if (data.operation === "zaloga-na-dan") {
|
|
1065
1215
|
assert(data.tenant, "must specify tenant")
|
|
1216
|
+
console.log('data',data);
|
|
1217
|
+
|
|
1066
1218
|
return await logic.zalogaNaDan(data)
|
|
1067
1219
|
};
|
|
1068
1220
|
|
|
@@ -1096,7 +1248,7 @@ class KlikvetLogicWorker extends Worker {
|
|
|
1096
1248
|
assert(data.razknjizba, "must specify razknjizba")
|
|
1097
1249
|
assert(data.skladisce_id, "must specify skladisce_id")
|
|
1098
1250
|
assert(data.izvedel, "must specify izvedel")
|
|
1099
|
-
assert(data.izlociTisteBrezZaloge, "must specify izlociTisteBrezZaloge")
|
|
1251
|
+
assert(data.izlociTisteBrezZaloge!==undefined, "must specify izlociTisteBrezZaloge")
|
|
1100
1252
|
return await logic.zakljucekPolneInventureSestaviInZapisi(data);
|
|
1101
1253
|
};
|
|
1102
1254
|
|
|
@@ -1150,7 +1302,7 @@ class KlikvetLogicWorker extends Worker {
|
|
|
1150
1302
|
if (data.operation === "poslji-smse-cepljenim") {
|
|
1151
1303
|
assert(data.tenant, "must specify tenant")
|
|
1152
1304
|
assert(data.nacin, "must specify nacin")
|
|
1153
|
-
let cepiti = await logic.smsCepljenjaNaDan({ tenant: data.tenant, dan: data.dan || new Date() });;
|
|
1305
|
+
let cepiti = await logic.smsCepljenjaNaDan({ tenant: data.tenant, dan: data.dan || new Date(), dniPrej: data.dniPrej });;
|
|
1154
1306
|
if (!cepiti?.length) return undefined;
|
|
1155
1307
|
let res = []
|
|
1156
1308
|
for await (let n of cepiti) {
|
|
@@ -1165,7 +1317,7 @@ class KlikvetLogicWorker extends Worker {
|
|
|
1165
1317
|
|
|
1166
1318
|
if (data.operation === "seznam-cepljenj-za-sms") {
|
|
1167
1319
|
assert(data.tenant, "must specify tenant")
|
|
1168
|
-
return await logic.smsCepljenjaNaDan({ tenant: data.tenant, dan: data.dan || new Date() });;
|
|
1320
|
+
return await logic.smsCepljenjaNaDan({ tenant: data.tenant, dan: data.dan || new Date(), dniPrej: data.dniPrej });;
|
|
1169
1321
|
};
|
|
1170
1322
|
|
|
1171
1323
|
|
|
@@ -1174,11 +1326,82 @@ class KlikvetLogicWorker extends Worker {
|
|
|
1174
1326
|
return await logic.smsNaroceniNaDan({ tenant: data.tenant, dan: data.dan || new Date() });;
|
|
1175
1327
|
};
|
|
1176
1328
|
|
|
1329
|
+
if (data.operation === "potrditev-brejosti") {
|
|
1330
|
+
assert(data.tenant, "must specify tenant")
|
|
1331
|
+
assert(data._id, "must specify _id")
|
|
1332
|
+
assert(data.kdo, "must specify kdo")
|
|
1333
|
+
let osemenitevGoveda = await dbFindById(data.tenant || data.db, "osemenitevGoveda", data._id);
|
|
1334
|
+
if (osemenitevGoveda) {
|
|
1335
|
+
let update = logic.updatePotrditevBrejosti(osemenitevGoveda, data.breja, data.kdo);
|
|
1336
|
+
return await dbUpdateById(data.tenant || data.db, "osemenitevGoveda", data._id, update)
|
|
1337
|
+
}
|
|
1338
|
+
return undefined
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
if (data.operation === "v-presusitev") {
|
|
1342
|
+
assert(data.tenant, "must specify tenant")
|
|
1343
|
+
assert(data._id, "must specify _id")
|
|
1344
|
+
assert(data.kdo, "must specify kdo")
|
|
1345
|
+
let osemenitevGoveda = await dbFindById(data.tenant || data.db, "osemenitevGoveda", data._id);
|
|
1346
|
+
if (osemenitevGoveda) {
|
|
1347
|
+
let update = logic.updatePresusitve(osemenitevGoveda, data.presusitev, data.kdo);
|
|
1348
|
+
return await dbUpdateById(data.tenant || data.db, "osemenitevGoveda", data._id, update)
|
|
1349
|
+
}
|
|
1350
|
+
return undefined
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
if (data.operation === "status-osemenitve") {
|
|
1354
|
+
assert(data.tenant, "must specify tenant")
|
|
1355
|
+
assert(data._id, "must specify _id")
|
|
1356
|
+
assert(data.kdo, "must specify kdo")
|
|
1357
|
+
let osemenitevGoveda = await dbFindById(data.tenant || data.db, "osemenitevGoveda", data._id);
|
|
1358
|
+
if (osemenitevGoveda) {
|
|
1359
|
+
let update = logic.updateStatusOsemenitve(osemenitevGoveda, data.status, data.kdo);
|
|
1360
|
+
return await dbUpdateById(data.tenant || data.db, "osemenitevGoveda", data._id, update)
|
|
1361
|
+
}
|
|
1362
|
+
return undefined
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
if (data.operation === "opomba-rejca-osemenitve") {
|
|
1366
|
+
assert(data.tenant, "must specify tenant")
|
|
1367
|
+
assert(data._id, "must specify _id")
|
|
1368
|
+
assert(data.kdo, "must specify kdo")
|
|
1369
|
+
let osemenitevGoveda = await dbFindById(data.tenant || data.db, "osemenitevGoveda", data._id);
|
|
1370
|
+
if (osemenitevGoveda) {
|
|
1371
|
+
let update = logic.updateOpombeRejca(osemenitevGoveda, data.opomba, data.kdo);
|
|
1372
|
+
return await dbUpdateById(data.tenant || data.db, "osemenitevGoveda", data._id, update)
|
|
1373
|
+
}
|
|
1374
|
+
return undefined
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
if (data.operation === "podatki-rejca") {
|
|
1378
|
+
assert(data.tenant, "must specify tenant")
|
|
1379
|
+
assert(data.rejciGeslo, "must specify rejciGeslo")
|
|
1380
|
+
assert(data.rejciKoda, "must specify rejciKoda")
|
|
1381
|
+
return await logic.podatkiRejca(data);
|
|
1382
|
+
};
|
|
1383
|
+
|
|
1384
|
+
if (data.operation === "zaracunaj-dobavnice") {
|
|
1385
|
+
assert(data.tenant, "must specify tenant")
|
|
1386
|
+
assert(data.dobavnice_ids, "must specify dobavnice_ids");
|
|
1387
|
+
assert(data.lokacija_id, "must specify lokacija_id");
|
|
1388
|
+
assert(data.naprava_id, "must specify naprava_id");
|
|
1389
|
+
assert(data.izdal, "must specify izdal");
|
|
1390
|
+
return await logic.zaracunajDobavnice(data);
|
|
1391
|
+
};
|
|
1392
|
+
|
|
1393
|
+
if (data.operation === "anonimiziraj-podatke") {
|
|
1394
|
+
assert(data.tenant, "must specify tenant")
|
|
1395
|
+
assert(["demo", "demo2","dev","test"].includes(data.tenant), "cnly valid for demo, dev, test");
|
|
1396
|
+
assert(data.letNazaj, "must specify letNazaj");
|
|
1397
|
+
|
|
1398
|
+
return await logic.anonimizirajPodatke(logic.createMongoForAnonimizacija(data.tenant), parseInt(data.letNazaj.toString()||"1"));
|
|
1399
|
+
};
|
|
1400
|
+
|
|
1177
1401
|
assert(false, 'unsupported operation ' + data.operation)
|
|
1178
1402
|
}
|
|
1179
1403
|
|
|
1180
1404
|
}
|
|
1181
1405
|
|
|
1182
|
-
module.exports = { KlikvetLogicWorker }
|
|
1183
1406
|
|
|
1184
1407
|
|