This instance will be upgraded to the latest Heptapod 0.20rc on 2021-02-26 at 11:00 UTC+1

Commit cb3686a7 authored by M3nt0r3's avatar M3nt0r3

mega lavoro da testare e mergiare

--HG--
branch : francesco
parent f589a0635cd8
......@@ -106,6 +106,8 @@ templates_dir_pg = os.path.abspath(os.path.join(SRC_PATH_PG, 'templates'))
templates_dir_pg_report = os.path.abspath(os.path.join(SRC_PATH_PG, 'report-templates'))
templates_dir_pg_fattura_pa = os.path.abspath(os.path.join(SRC_PATH_PG, "fattura_pa_template"))
modulesList = []
bottom_tm_id = None
bottom_raw_id = None
sladir = "sladir/"
languages = ""
......
......@@ -11,20 +11,20 @@ from decimal import Decimal
from modules.DistintaBase.dao.ArticoloKit import ArticoloKit
from src.dao.Magazzino import Magazzino
from src.dao.Articolo import Articolo
from lib.Controller import Controller
__author__ = "Francesco Meloni <francesco.meloni@sublima.it>"
@expose('/pg/cu_DistintaBase/<action>')
@expose('/pg/cu_DistintaBase/')
@expose('/pg/cu_DistintaBase')
def AnagDistintaBase(req, action=None):
if not passa(req, "sublima"):
return Page(req).redirect(url="/")
class AnagDistintaBase(object, Controller):
def __show__(req, action=None):
def __init__(self, req):
Controller.__init__(self)
self.req = req
def _show_(self):
# print("111111111111111111111111111111111111111ARGSSS", req.form.to_dict(), req.args.to_dict())
__id = req.args.get("idArt")
__id = self.req.args.get("idArt")
if __id:
dao = Articolo().getRecord(id=int(__id))
else:
......@@ -59,11 +59,14 @@ def AnagDistintaBase(req, action=None):
"dao": dao,
"righe_filler": json.dumps(articoli_filler_list),
"righe_wrapper": articoli_wrapper_list}
return Page(req).render(pageData)
return Page(self.req).render(pageData)
def _update_(self):
return self._create_()
def __create__update__(req, action=None):
righe_wrapper = eval(req.form.get("righe_fillers"))
id_dao_wrapper = req.form.get("dao_wrapper")
def _create_(self):
righe_wrapper = eval(self.req.form.get("righe_fillers"))
id_dao_wrapper = self.req.form.get("dao_wrapper")
old_rows = ArticoloKit().select(id_articolo_wrapper=int(id_dao_wrapper), batchSize=None)
for old_row in old_rows:
old_row.delete()
......@@ -84,12 +87,3 @@ def AnagDistintaBase(req, action=None):
"id_dao": d.id}
jasoned = json.dumps(item)
return Response(jasoned)
if action == "List":
return __list__(req, action=action)
elif action == "show":
return __show__(req, action=action)
elif action == "Create" or action == "Update":
return __create__update__(req, action=action)
else:
return __show__(req, action=action)
# -*- coding: utf-8 -*-
# Part of Sublima. See LICENSE file for full copyright and licensing details.
import csv
import Environment
from src.dao.CachedDaosDict import CachedDaosDict
from src.dao.DaoUtils import giacenzaArticoloDict, getUltimoCosto, getCostoMedioAcquisto
from lib.page import Page
from lib.webutils import *
from lib.utils import *
from src.dao.TestataMovimento import TestataMovimento
from src.dao.TestataDocumento import TestataDocumento
from src.dao.RigaMovimento import RigaMovimento
from src.dao.Riga import Riga
from src.dao.Articolo import Articolo
from src.dao.Cliente import Cliente
from src.dao.Fornitore import Fornitore
from src.dao.Magazzino import Magazzino
from src.dao.Stoccaggio import Stoccaggio
from src.dao.CategoriaCliente import CategoriaCliente
from src.dao.CategoriaArticolo import CategoriaArticolo
from src.dao.ClienteCategoriaCliente import ClienteCategoriaCliente
from src.dao.Listino import Listino
from src.dao.FamigliaArticolo import FamigliaArticolo
from src.dao.Operazione import Operazione
from src.dao.DaoUtils import articoloStatistiche
from collections import OrderedDict
from datetime import datetime
from dateutil.relativedelta import relativedelta
from itertools import groupby
from lib.Controller import Controller
from modules.StatisticheStampe.src.statisticheStampeUtils import StatisticheStampeUtils
from modules.Pagamenti.dao.TestataDocumentoScadenza import TestataDocumentoScadenza
__author__ = "Francesco Meloni <francesco.meloni@sublima.it>"
class ScadenzariPart(object, StatisticheStampeUtils):
def __init__(self, req):
self.req = req
def scadenzario_clienti_ui(self):
pageData = {'file': "/modules/StatisticheStampe/tpl/scadenzario_clienti_ui",
"operazioniii": Operazione().select(batchSize=None,
tutti_vendita=True)}
return Page(self.req).render(pageData)
def scadenzario_clienti_do(self):
"""."""
aData = stringToDate(self.req.form.get("adata"))
daData = stringToDate(self.req.form.get("dadata"))
# serve per la valorizzazione
# print("PSWSLWPSWPSLWPSLWSPWSLWPSL",self.req.form)
visualizza_pagate = self.req.form.get("fk_stato_scadenza")
id_clienti = self.id_clienti_get()
operazioni = self.operazioni_get()
if operazioni == ["tutti_vendita"]:
# print("FK OPERAZIONE", operazioni)
extra = operazioni
operazioni = None
else:
extra = None
# daos = TestataDocumento().select(daDataScadenza=daData,
# aDataScadenza=aData,
# idOperazione=operazioni,
# idCliente=id_clienti,
# batchSize=None,
# extra=extra
# )
daos = TestataDocumentoScadenza().select(idCliente=id_clienti,
daData=daData,
aData=aData,
idOperazione=operazioni,
extra=extra,
visualizza_pagate=visualizza_pagate,
batchSize=None)
totale_generale_scadenze = 0
totale_generale_aperto = 0
totale_generale_incassato = 0
for d in daos:
totale_generale_scadenze += d.importo
if d.data_pagamento:
totale_generale_incassato += d.importo
totale_generale_aperto = totale_generale_scadenze-totale_generale_incassato
print("TOTALE", totale_generale_scadenze, totale_generale_incassato, totale_generale_aperto)
pageData = {"file": "modules/StatisticheStampe/tpl/scadenzario_clienti_report",
"objects": daos,
"visualizza_pagate": visualizza_pagate,
"totale_generale_aperto": totale_generale_aperto,
"totale_generale_incassato": totale_generale_incassato,
"totale_generale_scadenze": totale_generale_scadenze,
"nomestatistica": "_scadenzario_clienti_do_"}
return Page(self.req).render(pageData)
def scadenzario_fornitori_ui(self):
pageData = {'file': "/modules/StatisticheStampe/tpl/scadenzario_fornitori_ui",
"operazioniii": Operazione().select(batchSize=None, tutti_acquisto=True),
}
return Page(self.req).render(pageData)
def scadenzario_fornitori_do(self):
"""."""
aData = stringToDate(self.req.form.get("adata"))
daData = stringToDate(self.req.form.get("dadata"))
# serve per la valorizzazione
visualizza_pagate = self.req.form.get("fk_stato_scadenza")
id_fornitori = self.id_fornitori_get()
operazioni = self.operazioni_get()
if operazioni == ["tutti_acquisto"]:
print("FK OPERAZIONE", operazioni)
extra = operazioni
operazioni = None
else:
extra = None
# daos = TestataDocumento().select(daDataScadenza=daData,
# aDataScadenza=aData,
# idOperazione=operazioni,
# idCliente=id_clienti,
# batchSize=None,
# extra=extra
# )
daos = TestataDocumentoScadenza().select(idFornitore=id_fornitori,
daData=daData,
aData=aData,
idOperazione=operazioni,
extra=extra,
visualizza_pagate=visualizza_pagate,
batchSize=None)
totale_generale_scadenze = 0
totale_generale_aperto = 0
totale_generale_incassato = 0
for d in daos:
totale_generale_scadenze += d.importo
if d.data_pagamento:
totale_generale_incassato += d.importo
totale_generale_aperto = totale_generale_scadenze-totale_generale_incassato
# print("TOTALE", totale_generale_scadenze, totale_generale_incassato, totale_generale_aperto)
pageData = {"file": "modules/StatisticheStampe/tpl/scadenzario_clienti_report",
"objects": daos,
"visualizza_pagate": visualizza_pagate,
"totale_generale_aperto": totale_generale_aperto,
"totale_generale_incassato": totale_generale_incassato,
"totale_generale_scadenze": totale_generale_scadenze,
"nomestatistica": "_scadenzario_fornitori_do_"}
return Page(self.req).render(pageData)
# -*- coding: utf-8 -*-
# Part of Sublima. See LICENSE file for full copyright and licensing details.
import csv
import Environment
from src.dao.CachedDaosDict import CachedDaosDict
from src.dao.DaoUtils import giacenzaArticoloDict, getUltimoCosto, getCostoMedioAcquisto
from lib.page import Page
from lib.webutils import *
from lib.utils import *
from src.dao.TestataMovimento import TestataMovimento
from src.dao.TestataDocumento import TestataDocumento
from src.dao.RigaMovimento import RigaMovimento
from src.dao.Riga import Riga
from src.dao.Articolo import Articolo
from src.dao.Cliente import Cliente
from src.dao.Fornitore import Fornitore
from src.dao.Magazzino import Magazzino
from src.dao.Stoccaggio import Stoccaggio
from src.dao.CategoriaCliente import CategoriaCliente
from src.dao.CategoriaArticolo import CategoriaArticolo
from src.dao.ClienteCategoriaCliente import ClienteCategoriaCliente
from src.dao.Listino import Listino
from src.dao.FamigliaArticolo import FamigliaArticolo
from src.dao.Operazione import Operazione
from src.dao.DaoUtils import articoloStatistiche
from collections import OrderedDict
from datetime import datetime
from dateutil.relativedelta import relativedelta
from itertools import groupby
from lib.Controller import Controller
from modules.StatisticheStampe.src.statisticheStampeUtils import StatisticheStampeUtils
from modules.Pagamenti.dao.TestataDocumentoScadenza import TestataDocumentoScadenza
if hasModule("PW"):
from modules.Moda.dao.StagioneAbbigliamento import StagioneAbbigliamento
from modules.Moda.dao.AnnoAbbigliamento import AnnoAbbigliamento
from modules.Moda.dao.GenereAbbigliamento import GenereAbbigliamento
from modules.Moda.dao.Modello import Modello
from modules.Moda.dao.GruppoColore import GruppoColore
from modules.Moda.dao.GruppoTaglia import GruppoTaglia
from modules.Moda.dao.Colore import Colore
from modules.Moda.dao.Taglia import Taglia
__author__ = "Francesco Meloni <francesco.meloni@sublima.it>"
class StampaMagazzinoValoreVenditaPart(object, StatisticheStampeUtils):
def __init__(self, req):
self.req = req
def stampa_magazzino_valore_vendita_ui(self):
pageData_moda = {}
pageData = {'file': "/modules/StatisticheStampe/tpl/stampa_magazzino_valore_vendita_ui",
"categorie": CategoriaArticolo().select(batchSize=None),
"fornitori": Fornitore().select(batchSize=None),
"listini": Listino().select(visibili=True, batchSize=None),
"famiglie": FamigliaArticolo().select(batchSize=None),
"produttori": Environment.params['session'].query(Articolo.produttore).order_by(
Articolo.produttore).distinct()}
if hasModule("PW"):
pageData_moda = {
'stagioni': StagioneAbbigliamento().select(batchSize=None),
"modelli": Modello().select(batchSize=None),
'anni': AnnoAbbigliamento().select(batchSize=None),
'generi': GenereAbbigliamento().select(batchSize=None),
"gruppitaglie": GruppoTaglia().select(batchSize=None),
"gruppicolori": GruppoColore().select(batchSize=None),
"taglie": Taglia().select(batchSize=None),
"colori": Colore().select(batchSize=None),
}
pageData.update(pageData_moda)
return Page(self.req).render(pageData)
def stampa_magazzino_valore_vendita_ana(self):
"""."""
if self.req.form.get("ricrea_cache_check") == "on":
nomefile = "/tpl/media/" + Environment.schema + "/dbcache.sqlite"
try:
os.remove("." + nomefile)
except Exception:
print("NESSUN DB DA CANCELLARE")
print("REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", self.req.form.to_dict())
from tablesCache import *
from dbCache import sa_cache
session_cache = sa_cache()
try:
info = session_cache.query(DbInfoCache).one()
except:
info = DbInfoCache()
if not info.data_creazione:
info.data_creazione = datetime.datetime.now()
data_creazione = info.data_creazione
info.data_modifica = datetime.datetime.now()
session_cache.add(info)
session.commit()
aData = stringToDate(self.req.form.get("adata"))
# serve per la valorizzazione
id_listino = self.id_listino_get()
id_magazzini = self.id_magazzini_get()
id_categorie_articolo = self.id_categorie_articolo_get()
id_famiglie_articolo = self.id_famiglie_get()
produttori = self.produttori_get()
if hasModule("PW"):
id_colori = self.id_colori_get()
id_taglie = self.id_taglie_get()
id_gruppitaglie = self.id_gruppitaglie_get()
id_gruppicolori = self.id_gruppicolori_get()
id_stagioni = self.id_stagione_get()
id_anni = self.id_anno_get()
id_generi = self.id_generi_get()
# id_modelli = self.id_modelli_get()
list_id_art_by_categorie_articolo = self.list_id_art_by_categorie_articolo_get(id_categorie_articolo)
list_id_art_by_famiglie = self.list_id_art_by_famiglie_get(id_famiglie_articolo)
list_id_art_by_produttori = self.list_id_art_by_produttori_get(produttori)
if hasModule("PW"):
list_id_art_by_colori = self.list_id_art_by_colori_get(id_colori)
list_id_art_by_taglie = self.list_id_art_by_taglie_get(id_taglie)
list_id_art_by_gruppitaglie = self.list_id_art_by_gruppitaglie_get(id_gruppitaglie)
list_id_art_by_gruppicolori = self.list_id_art_by_gruppicolori_get(id_gruppicolori)
list_id_art_by_stagioni = self.list_id_art_by_stagioni_get(id_stagioni)
list_id_art_by_anni = self.list_id_art_by_anni_get(id_anni)
list_id_art_by_generi = self.list_id_art_by_generi_get(id_generi)
# list_id_art_by_categorie_articolo = self.list_id_art_by_categorie_articolo_get(id_categorie_articolo)
if hasModule("PW"):
if self.req.form.get("operatore_logico_check") == "on":
list_id_art = list(set(list_id_art_by_famiglie +
list_id_art_by_produttori +
list_id_art_by_categorie_articolo +
list_id_art_by_colori +
list_id_art_by_taglie +
list_id_art_by_gruppitaglie +
list_id_art_by_gruppicolori +
list_id_art_by_stagioni +
list_id_art_by_anni +
list_id_art_by_generi))
else:
aa = []
lista = [list_id_art_by_famiglie,
list_id_art_by_produttori,
list_id_art_by_categorie_articolo,
list_id_art_by_colori,
list_id_art_by_taglie,
list_id_art_by_gruppitaglie,
list_id_art_by_gruppicolori,
list_id_art_by_stagioni,
list_id_art_by_anni,
list_id_art_by_generi]
for l in lista:
if l:
aa.append(l)
result = set(aa[0])
for s in aa[1:]:
result.intersection_update(s)
list_id_art = list(result)
else:
if self.req.form.get("operatore_logico_check") == "on":
list_id_art = list(set(list_id_art_by_famiglie + list_id_art_by_produttori + list_id_art_by_categorie_articolo))
else:
aa = []
lista = [list_id_art_by_famiglie, list_id_art_by_produttori, list_id_art_by_categorie_articolo]
for l in lista:
if l:
aa.append(l)
# list_id_art = list(set(list_id_art_by_famiglie + list_id_art_by_produttori + list_id_art_by_categorie_articolo))
result = set(aa[0])
for s in aa[1:]:
result.intersection_update(s)
list_id_art = list(result)
daos = Environment.session.query(Stoccaggio.id).filter(Stoccaggio.id_magazzino.in_(id_magazzini)).filter(Stoccaggio.id_articolo.in_(list_id_art)).all()
# daos = Articolo().select(iArticolo=list_id_art, batchSize=None)
print("LAVORERO' SU", len(daos))
item = {"Result": "OK",
"numero_item": len(daos),
"data_creazione": dateTimeToString(data_creazione),
# "data_creazione": data_creazione,
"ids_dao": [x[0] for x in daos]}
jasoned = json.dumps(item)
return Response(jasoned)
def stampa_magazzino_valore_vendita_do(self):
"""."""
from tablesCache import *
from dbCache import sa_cache
session_cache = sa_cache()
# print("AAAAA", self.req.form.to_dict())
aData = stringToDate(self.req.form.get("adata"))
id_chunk = self.req.form.getlist("id_chunk[]")
# serve per la valorizzazione
# daos = Stoccaggio().select(idMagazzino=id_magazzini, idArticolo=list_id_art, batchSize=None)
for _id in id_chunk:
dao = Stoccaggio().getRecord(id=(_id))
if not session_cache.query(StoccaggioCache).filter(StoccaggioCache.id_articolo==dao.id_articolo,
StoccaggioCache.id_magazzino==dao.id_magazzino).all():
# print("AGGIUNGO RIGA")
art = ArticoloCache()
art.id = dao.id_articolo
art.codice = dao.codice_articolo
art.denominazione = dao.articolo
art.produttore = dao.arti.produttore
art.percentuale_aliquota_iva = str(mN(dao.arti.percentuale_aliquota_iva, 0))
art.denominazione_breve_unita_base = dao.arti.denominazione_breve_unita_base
art.id_aliquota_iva = dao.arti.id_aliquota_iva
art.id_unita_base = dao.arti.id_unita_base
session_cache.add(art)
a = StoccaggioCache()
a.id = dao.id
a.id_articolo = dao.id_articolo
a.id_magazzino = dao.id_magazzino
a.magazzino = dao.magazzino
a.anno = Environment.workingYear
a.giacenza = giacenzaArticoloDict(idMagazzino=dao.id_magazzino, idArticolo=dao.id_articolo).get("giacenza")
a.ultimo_costo = getUltimoCosto(idArticolo=dao.id_articolo)
a.costo_medio_acquisto = getCostoMedioAcquisto(idArticolo=dao.id_articolo)
a.prezzo_listino = leggiListino(idArticolo=dao.id_articolo, idListino=self.req.form.get("listino_fk")).get("prezzoDettaglio")
session_cache.add(a)
# else:
# print("RIGA GIA PRESENTE")
session_cache.commit()
# daos = Environment.session.query(Stoccaggio.id,
# Articolo.codice,
# Articolo.denominazione,
# Magazzino.denominazione,
# Stoccaggio.id_magazzino,
# Articolo.id,
# Stoccaggio.giacenza_stored).join(Magazzino).join(Articolo).filter(Stoccaggio.id_magazzino.in_(id_magazzini)).filter(Stoccaggio.id_articolo.in_(list_id_art)).all()
# daos = Articolo().select(iArticolo=list_id_art, batchSize=None)
offset = int(self.req.form.get("offset"))
numero_item = int(self.req.form.get('numero_item'))
batchsize = int(self.req.form.get("batchSize"))
percentage = ((offset*batchsize)*100)/numero_item
print("FINITO CHUNK", offset, numero_item, percentage)
if (offset*batchsize) > numero_item:
finito = "TRUE"
else:
finito = "FALSE"
item = {"Result": "OK",
"offset": offset,
"numero_item": numero_item,
"percentuale_progressbar": percentage,
"finito": finito}
jasoned = json.dumps(item)
return Response(jasoned)
def stampa_magazzino_valore_vendita_report(self):
from tablesCache import *
from dbCache import sa_cache
# print("AAAAA", self.req.form.to_dict(), self.req.args.to_dict())
aData = stringToDate(self.req.form.get("adata"))
# serve per la valorizzazione
id_listino = self.id_listino_get()
id_magazzini = self.id_magazzini_get()
id_categorie_articolo = self.id_categorie_articolo_get()
id_famiglie_articolo = self.id_famiglie_get()
produttori = self.produttori_get()
if hasModule("PW"):
id_colori = self.id_colori_get()
id_taglie = self.id_taglie_get()
id_gruppitaglie = self.id_gruppitaglie_get()
id_gruppicolori = self.id_gruppicolori_get()
id_stagioni = self.id_stagione_get()
id_anni = self.id_anno_get()
id_generi = self.id_generi_get()
# id_modelli = self.id_modelli_get()
list_id_art_by_categorie_articolo = self.list_id_art_by_categorie_articolo_get(id_categorie_articolo)
list_id_art_by_famiglie = self.list_id_art_by_famiglie_get(id_famiglie_articolo)
list_id_art_by_produttori = self.list_id_art_by_produttori_get(produttori)
if hasModule("PW"):
list_id_art_by_colori = self.list_id_art_by_colori_get(id_colori)
list_id_art_by_taglie = self.list_id_art_by_taglie_get(id_taglie)
list_id_art_by_gruppitaglie = self.list_id_art_by_gruppitaglie_get(id_gruppitaglie)
list_id_art_by_gruppicolori = self.list_id_art_by_gruppicolori_get(id_gruppicolori)
list_id_art_by_stagioni = self.list_id_art_by_stagioni_get(id_stagioni)
list_id_art_by_anni = self.list_id_art_by_anni_get(id_anni)
list_id_art_by_generi = self.list_id_art_by_generi_get(id_generi)
# list_id_art_by_categorie_articolo = self.list_id_art_by_categorie_articolo_get(id_categorie_articolo)
if hasModule("PW"):
if self.req.form.get("operatore_logico_check") == "on":
list_id_art = list(set(list_id_art_by_famiglie +
list_id_art_by_produttori +
list_id_art_by_categorie_articolo +
list_id_art_by_colori +
list_id_art_by_taglie +
list_id_art_by_gruppitaglie +
list_id_art_by_gruppicolori +
list_id_art_by_stagioni +
list_id_art_by_anni +
list_id_art_by_generi))
else:
aa = []
lista = [list_id_art_by_famiglie,
list_id_art_by_produttori,
list_id_art_by_categorie_articolo,
list_id_art_by_colori,
list_id_art_by_taglie,
list_id_art_by_gruppitaglie,
list_id_art_by_gruppicolori,
list_id_art_by_stagioni,
list_id_art_by_anni,
list_id_art_by_generi]
for l in lista:
if l:
aa.append(l)
result = set(aa[0])
for s in aa[1:]:
result.intersection_update(s)
list_id_art = list(result)
else:
if self.req.form.get("operatore_logico_check") == "on":
list_id_art = list(set(list_id_art_by_famiglie +
list_id_art_by_produttori +
list_id_art_by_categorie_articolo))
else:
aa = []
lista = [list_id_art_by_famiglie, list_id_art_by_produttori, list_id_art_by_categorie_articolo]
for l in lista:
if l:
aa.append(l)
result = set(aa[0])
for s in aa[1:]:
result.intersection_update(s)
# print("RESUUUULT", result)
list_id_art = list(result)
session_cache = sa_cache()
# daos = session_cache.query(StoccaggioCache).join(ArticoloCache).order_by(ArticoloCache.codice).all()
chunks = [list_id_art[x:x+100] for x in xrange(0, len(list_id_art), 100)]
daos = []
totaliList = []
for c in chunks:
d = session_cache.query(StoccaggioCache)\
.join(ArticoloCache).filter(and_(StoccaggioCache.id_magazzino.in_(id_magazzini),