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.
@@ -1,7 +1,8 @@
1
1
  //@ts-check
2
- let assert = require('assert');
3
-
4
- require('dotenv').config()
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.17",
3
+ "version": "2.3.19",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "dependencies": {
7
- "cry-db": "^2.1.24",
8
- "cry-ebus2": "^3.0.9",
9
- "cry-helpers": "^2.1.52",
10
- "cry-klikvet-logic": "^0.10.120",
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.0.1",
12
+ "dotenv": "^16.3.1",
13
13
  "lodash.clonedeep": ">=4.5.0",
14
- "make-dir": "^3.1.0"
14
+ "make-dir": "^4.0.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@types/lodash.clonedeep": "^4.5.7",
18
- "chai": "^4.3.6",
19
- "mocha": "^10.0.0"
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"
@@ -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
- const assert = require('assert');
10
- const clonedeep = require('lodash.clonedeep');
11
- const Mongo = require('cry-db').Mongo;
12
- const packageJson = require('./package.json');
13
- const makeDir = require('make-dir');
14
- const fs = require('fs');
15
- const path = require('path');
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
- let racun = await dbFindById(data.tenant, "racuni", data._id);
138
- let nastavitve = await dbNastavitve(data.tenant);
139
- mongo.setDb(data.tenant)
140
- mongo.setAudit({ tenant: data.tenat, app: "klikvet/razknjiziRacun" })
141
- await logic.spremeniZalogoNaPodlagiRacuna(racun, nastavitve, mongo)
142
- await pobrisiZalogoNaDan(data.tenant, [racun.datum])
143
- return { ok: true }
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
- mongo.setDb(data.tenant)
149
- mongo.setAudit({ tenant: data.tenant, app: "klikvet/razknjiziRacune" })
150
-
151
- let dni = 14 * 24 * 60 * 60 * 1000; // 14 dni
152
- let od = new Date(new Date().valueOf() - dni);
153
- let racuni = await mongo.find("racuni", { datum: { $gte: od },razknjizen: false } , {});
154
- let nastavitve = await dbNastavitve(data.tenant);
155
- let datumi = []
156
- for await (let racun of racuni) {
157
- datumi.push(racun.datum)
158
- await logic.spremeniZalogoNaPodlagiRacuna(racun, nastavitve, mongo)
159
- console.log('z zamikom razknjižen račun št. ',racun.stevilka);
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
- let od = new Date(new Date().valueOf() - 60*24*60*60*1000)
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
- let blagovnica = await logic.razknjiziBlagovnico(_id, mongo);
246
- return blagovnica
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
- mongo.setDb(tenant)
251
- mongo.setAudit({ tenant, app: "klikvet/razknjiziDobavnico" })
252
- let dobavnica = await logic.razknjiziDobavnico(_id, mongo);
253
- return dobavnica
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
- assert(data.tenant, "must specify tenant")
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 = "Podsistem db ni dosegljiv."
389
+ let err = null;
390
+ let napake = new Set()
391
+ try {
265
392
 
266
- mongo.setDb(data.tenant)
267
- mongo.setAudit({ tenant: data.tenant, app: "klikvet/registerAllInvoices" })
393
+ err = "Podsistem db ni dosegljiv."
268
394
 
269
- let myquery = { eor: null, leto: { $gte: 2020 } };
270
- let env = data.env || (await mongo.findOne("nastavitve", {})).okolje
395
+ mongo.setDb(data.tenant)
396
+ mongo.setAudit({ tenant: data.tenant, app: "klikvet/registerAllInvoices" })
271
397
 
272
- let all = await mongo.find("racuni", myquery, { project: { _id: 1 }, limit: 1000, })
273
- err = "Napaka pri potrjevanju računov."
398
+ let myquery = { eor: null, negotovinski: { $ne: true }, leto: { $gte: 2022 } };
399
+ let env = data.env || (await mongo.findOne("nastavitve", {})).okolje
274
400
 
275
- let n = 0;
276
- try {
277
- for await (let r of all) {
278
- let res = await registerInvoice({ tenant: data.tenant, env, _id: r._id.toString() }, true);
279
- if (res.eor) n++;
280
- if (res.fursError) napake.add(res.fursError)
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
- return { nall: all.length, nok: n, napake: [...napake] };
289
-
290
- } catch {
291
- console.error('registerAllInvoices', err);
292
- throw new Error(err);
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(path.parse(require.main.filename).dir, 'racuni', new Date().getFullYear().toString(), data.tenant)
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), Helpers.serialize.pack(clonedeep({ ...racun, ...updated}), false));
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
- return { podatki, racuniOdlozeno, racuniPravnim, stornirani, placila, zaloga: {pred, po}, spremembaZaloge, vsotaDobav, prviZadnji };
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