def newSingleDoc(data, operazione, note, daoDocumento, newDao=None): """ Make a new document from existing one """ if newDao is None: newDao = TestataDocumento() newDao.data_documento = stringToDate(data) newDao.operazione = operazione if operazione in ["Fattura differita vendita","Fattura differita vendita ford"]: newDao.id_cliente = daoDocumento.id_cliente elif operazione == "Fattura differita acquisto": newDao.id_fornitore = daoDocumento.id_fornitore newDao.id_destinazione_merce = daoDocumento.id_destinazione_merce newDao.id_pagamento = daoDocumento.id_pagamento newDao.id_banca = daoDocumento.id_banca newDao.id_aliquota_iva_esenzione = daoDocumento.id_aliquota_iva_esenzione newDao.protocollo = daoDocumento.protocollo newDao.causale_trasporto = daoDocumento.causale_trasporto newDao.aspetto_esteriore_beni = daoDocumento.aspetto_esteriore_beni newDao.inizio_trasporto = daoDocumento.inizio_trasporto newDao.fine_trasporto = daoDocumento.fine_trasporto newDao.id_vettore =daoDocumento.id_vettore newDao.incaricato_trasporto = daoDocumento.incaricato_trasporto newDao.totale_colli = daoDocumento.totale_colli newDao.totale_peso = daoDocumento.totale_peso newDao.note_interne = daoDocumento.note_interne newDao.note_pie_pagina = daoDocumento.note_pie_pagina + " " + note newDao.applicazione_sconti = daoDocumento.applicazione_sconti sconti = [] sco = daoDocumento.sconti or [] #for s in sco: #daoSconto = ScontoTestataDocumento() #daoSconto.valore = s.valore #daoSconto.tipo_sconto = s.tipo_sconto #sconti.append(daoSconto) newDao.scontiSuTotale = sconti #newDao.totale_pagato = daoDocumento.totale_pagato #newDao.totale_sospeso = daoDocumento.totale_sospeso newDao.documento_saldato = False #newDao.id_primo_riferimento = daoDocumento.id_primo_riferimento #newDao.id_secondo_riferimento = daoDocumento.id_secondo_riferimento #newDao.ripartire_importo = daoDocumento.ripartire_importo #newDao.costo_da_ripartire = daoDocumento.costo_da_ripartire return newDao
def on_confirm_button_clicked(self, button=None): if (self.data_documento_entry.get_text() == ''): obligatoryField(self.getTopLevel(), self.data_documento_entry) if (findIdFromCombobox(self.id_operazione_combobox) is None): obligatoryField(self.getTopLevel(), self.id_operazione_combobox) if self.note_check.get_active(): note = "Rif. " + self.dao.operazione + " n. " + str(self.dao.numero) + " del " + dateToString(self.dao.data_documento) else: note = "" mantieni_pagamenti = self.mantieni_pagamenti_checkbutton.get_active() associa_doc_padre_figlio = self.associa_doc_padre_figlio_checkbutton.get_active() newDao = TestataDocumento() newDao.data_documento = stringToDate(self.data_documento_entry.get_text()) newDao.operazione = findIdFromCombobox(self.id_operazione_combobox) if self.personaGiuridicaCambiata: if not self.id_persona_giuridica_customcombobox.getId(): obligatoryField(self.getTopLevel(), self.id_persona_giuridica_customcombobox) if self.id_persona_giuridica_customcombobox.getType() == "cliente": newDao.id_cliente = self.id_persona_giuridica_customcombobox.getId() newDao.id_fornitore = None else: newDao.id_fornitore = self.id_persona_giuridica_customcombobox.getId() newDao.id_cliente = None else: if not self.id_persona_giuridica_customcombobox.getId(): newDao.id_fornitore = self.dao.id_fornitore newDao.id_cliente = self.dao.id_cliente else: if self.id_persona_giuridica_customcombobox.getType() == "cliente": newDao.id_cliente = self.id_persona_giuridica_customcombobox.getId() newDao.id_fornitore = None else: newDao.id_fornitore = self.id_persona_giuridica_customcombobox.getId() newDao.id_cliente = None newDao.id_destinazione_merce = self.dao.id_destinazione_merce newDao.id_pagamento = self.dao.id_pagamento newDao.id_banca = self.dao.id_banca newDao.numero = self.dao.numero newDao.id_aliquota_iva_esenzione = self.dao.id_aliquota_iva_esenzione newDao.protocollo = self.dao.protocollo newDao.causale_trasporto = self.dao.causale_trasporto newDao.aspetto_esteriore_beni = self.dao.aspetto_esteriore_beni newDao.inizio_trasporto = self.dao.inizio_trasporto newDao.fine_trasporto = self.dao.fine_trasporto newDao.id_vettore =self.dao.id_vettore newDao.incaricato_trasporto = self.dao.incaricato_trasporto newDao.totale_colli = self.dao.totale_colli newDao.totale_peso = self.dao.totale_peso newDao.note_interne = self.dao.note_interne newDao.note_pie_pagina = self.dao.note_pie_pagina + " " + note newDao.applicazione_sconti = self.dao.applicazione_sconti newDao.ripartire_importo = self.dao.ripartire_importo newDao.costo_da_ripartire = self.dao.costo_da_ripartire tipoid = findIdFromCombobox(self.id_operazione_combobox) tipo = Operazione().getRecord(id=tipoid) #if not newDao.numero: valori = numeroRegistroGet(tipo=tipo.denominazione, date=stringToDate(self.data_documento_entry.get_text())) newDao.numero = valori[0] newDao.registro_numerazione= valori[1] #sconti = [] sco = self.dao.sconti or [] scontiRigaDocumento=[] scontiSuTotale=[] righeDocumento=[] for s in sco: daoSconto = ScontoTestataDocumento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto scontiSuTotale.append(daoSconto) newDao.scontiSuTotale = scontiSuTotale #righe = [] rig = self.dao.righe #operazione = leggiOperazione(tipo) if tipo.segno != '' and tipo.segno is not None: tipoDOC = "MOV" else: tipoDOC = "DOC" scontiRigaMovimento =[] scontiRigaDocumento =[] for r in rig: if (tipoDOC == "MOV" and r.id_articolo == None) or tipoDOC == "DOC": daoRiga = RigaDocumento() sconti = [] sco = r.sconti if self.mantieni_sconti_checkbutton.get_active() : for s in sco: daoSconto = ScontoRigaDocumento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto scontiRigaDocumento.append(daoSconto) daoRiga.scontiRigaDocumento = scontiRigaDocumento scontiRigaDocumento =[] else: daoRiga = RigaMovimento() sconti =[] sco = r.sconti if self.mantieni_sconti_checkbutton.get_active() : for s in sco: daoSconto = ScontoRigaMovimento() daoSconto.valore = s.valore daoSconto.tipo_sconto = s.tipo_sconto scontiRigaMovimento.append(daoSconto) daoRiga.scontiRigheMovimento = scontiRigaMovimento scontiRigaMovimento =[] #daoRiga.id_testata_documento = newDao.id daoRiga.id_articolo = r.id_articolo if self.id_magazzino_combobox.get_active() != -1 and r.id_magazzino !=None: iddi = findIdFromCombobox(self.id_magazzino_combobox) daoRiga.id_magazzino = iddi else: daoRiga.id_magazzino = r.id_magazzino daoRiga.descrizione = r.descrizione # Copia il campo iva daoRiga.id_iva = r.id_iva #ricalcola prezzi indice_prezzo_combobox = self.id_prezzo_combobox.get_model()[self.id_prezzo_combobox.get_active()][1] if indice_prezzo_combobox == 0: daoRiga.id_listino = r.id_listino daoRiga.valore_unitario_lordo = r.valore_unitario_lordo or 0 daoRiga.valore_unitario_netto = r.valore_unitario_netto or 0 elif indice_prezzo_combobox == 1: daoRiga.id_listino = r.id_listino daoRiga.valore_unitario_lordo = 0 daoRiga.valore_unitario_netto = 0 elif indice_prezzo_combobox == 2: fornitura = Environment.params['session'].query(Fornitura).filter(Fornitura.id_articolo == r.id_articolo).order_by(Fornitura.data_prezzo.asc()).all() if fornitura: fornitura = fornitura[0] daoRiga.valore_unitario_lordo = fornitura.prezzo_lordo daoRiga.valore_unitario_netto = fornitura.prezzo_netto daoRiga.id_listino = r.id_listino else: #ricalcola prezzi listino = self.id_prezzo_combobox.get_model()[indice_prezzo_combobox][0] listinoArticolo = Environment.params['session'].query(ListinoArticolo).filter(ListinoArticolo.id_listino == listino.id and r.id_articolo == ListinoArticolo.id_articolo).all() if len(listinoArticolo) > 0: daoRiga.id_listino = listinoArticolo[0].id_listino daoRiga.valore_unitario_lordo = listinoArticolo[0].prezzo_dettaglio daoRiga.valore_unitario_netto = listinoArticolo[0].prezzo_ingrosso else: daoRiga.id_listino = r.id_listino daoRiga.valore_unitario_lordo = r.valore_unitario_lordo daoRiga.valore_unitario_netto = r.valore_unitario_netto daoRiga.percentuale_iva = r.percentuale_iva daoRiga.applicazione_sconti = r.applicazione_sconti daoRiga.quantita = r.quantita daoRiga.id_multiplo = r.id_multiplo daoRiga.moltiplicatore = r.moltiplicatore if posso("SM"): from promogest.modules.SuMisura.dao.MisuraPezzo import MisuraPezzo #try: daoMisuraPezzo = MisuraPezzo() if r.misura_pezzo: daoMisuraPezzo.altezza = r.misura_pezzo[0].altezza daoMisuraPezzo.larghezza = r.misura_pezzo[0].larghezza daoMisuraPezzo.moltiplicatore = r.misura_pezzo[0].moltiplicatore else: daoMisuraPezzo.altezza = 0 daoMisuraPezzo.larghezza = 0 daoMisuraPezzo.moltiplicatore = 0 daoRiga.misura_pezzo = [daoMisuraPezzo] #except : #pass righeDocumento.append(daoRiga) #return newDao.righeDocumento = righeDocumento scadenze = [] if mantieni_pagamenti: scad = self.dao.scadenze for s in scad: daoTestataDocumentoScadenza = TestataDocumentoScadenza() daoTestataDocumentoScadenza.id_testata_documento = newDao.id daoTestataDocumentoScadenza.data = s.data daoTestataDocumentoScadenza.importo = s.importo daoTestataDocumentoScadenza.pagamento = s.pagamento daoTestataDocumentoScadenza.id_banca = s.id_banca daoTestataDocumentoScadenza.data_pagamento= s.data_pagamento daoTestataDocumentoScadenza.note_per_primanota = s.note_per_primanota daoTestataDocumentoScadenza.numero_scadenza = s.numero_scadenza scadenze.append(daoTestataDocumentoScadenza) newDao.scadenze = scadenze newDao.totale_pagato = 0 newDao.totale_sospeso = 0 newDao.documento_saldato = False #newDao.id_primo_riferimento = self.dao.id_primo_riferimento #newDao.id_secondo_riferimento = self.dao.id_secondo_riferimento else: newDao.totale_pagato = Decimal(0) newDao.totale_sospeso = self.dao._totaleScontato newDao.documento_saldato = False newDao.persist() if associa_doc_padre_figlio: add_relazione(self.dao.id, newDao.id) if posso("GN"): if self.dao.data_inizio_noleggio or self.dao.data_fine_noleggio: from promogest.modules.GestioneNoleggio.dao.TestataGestioneNoleggio import TestataGestioneNoleggio newTestataGestioneNoleggio = TestataGestioneNoleggio() newTestataGestioneNoleggio.data_inizio_noleggio = self.dao.data_inizio_noleggio newTestataGestioneNoleggio.data_fine_noleggio = self.dao.data_fine_noleggio newTestataGestioneNoleggio.id_testata_documento = newDao.id newTestataGestioneNoleggio.persist() #se il segno dell'operazione non è cambiato duplico il documento, altrimenti duplico ma apro la finestra di new/modifica documento msg = "Nuovo documento creato !\n\nIl nuovo documento e' il n. " + str(newDao.numero) + " del " + dateToString(newDao.data_documento) + " (" + newDao.operazione + ")\n" + "Lo vuoi modificare?" if YesNoDialog(msg=msg, transient=self.getTopLevel()): self.anagrafica_documenti.editElement.setVisible(True) self.anagrafica_documenti.editElement.setDao(newDao) self.anagrafica_documenti.editElement.id_persona_giuridica_customcombobox.set_sensitive(True) self.anagrafica_documenti.editElement.setFocus() self.destroy()
def on_importa_json_button_clicked(self, button): a = """{"data":"2013-11-18 17:54:52", "promogest_id":590, "utente":"RUDOLF DISTRIBUZIONE CAGLIARI", "email":"*****@*****.**", "prodotti":{"RUDSYLVIASan4645":{"qty":"5","price":"7.50"}, "RUDSYLVIASan81045":{"qty":"5","price":"7.50"}, "RUDSYLVIASan121445":{"qty":"5","price":"7.50"}, "RUDPAQUITABLO8-1045":{"qty":"3","price":"9.50"}} }""" text_buffer = self.importa_json_textview.get_buffer() note = text_buffer.get_text(text_buffer.get_start_iter(), text_buffer.get_end_iter(), True) print "NOTE", note try: dati = json.JSONDecoder(object_pairs_hook=OrderedDict).decode(note) except: print "ERRORE DATI DELLA TEXTVIEW NON JSON" messageError("ERRORE DATI NELLA TEXTVIEW NON JSON") return print type(dati["prodotti"]), dati["utente"] #data_ordine = dati["data"] # datetime.datetime.now()'Jun 1 2005 1:33PM' data_ordine = datetime.strptime(dati["data"], '%Y-%m-%d %H:%M:%S') daoCliente = Cliente().getRecord(id=int(dati["promogest_id"])) pricelist = Listino().select(id=daoCliente.id_listino) newDao = TestataDocumento() newDao.data_documento = data_ordine newDao.data_inserimento = data_ordine newDao.operazione = "Ordine da cliente" newDao.id_cliente = daoCliente.id newDao.id_fornitore = None if daoCliente.dm: newDao.id_destinazione_merce = daoCliente.dm[0].id else: newDao.id_destinazione_merce = None #if tipoPagamento != "checked": #contrassegno #newDao.id_pagamento = 4 #else: #newDao.id_pagamento = 5 newDao.id_banca = None newDao.id_aliquota_iva_esenzione = None newDao.protocollo = "" newDao.causale_trasporto = "" newDao.aspetto_esteriore_beni = "" newDao.inizio_trasporto = None newDao.fine_trasporto = None newDao.id_vettore = None newDao.incaricato_trasporto = None newDao.totale_colli = None newDao.totale_peso = None newDao.note_interne = "Ordine da WEB" newDao.note_pie_pagina = "" newDao.applicazione_sconti = "scalare" righeDocumento=[] totale = 0 #print " LORO ORDINE", OrderedDict(dati["prodotti"]).items() for k,v in OrderedDict(dati["prodotti"]).items(): #print " ERRREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", k,v,int(dati["prodotti"].items().index((k,v)))+1 quantita = int(v["qty"]) prezzo = float(v["price"]) art = Articolo().select(codiceEM=k) if art: idArticolo = art[0].id else: raise "non trovo l'articolo nel db" #prezzo = leggiListino(pricelist[0].id, idArticolo, tiny=True)["prezzoIngrosso"] articolo = leggiArticolo(idArticolo) daoRiga = RigaDocumento() daoRiga.id_testata_documento = newDao.id daoRiga.id_articolo = idArticolo daoRiga.id_magazzino = 3 daoRiga.descrizione = articolo["denominazione"] daoRiga.id_iva = articolo["idAliquotaIva"] daoRiga.id_listino = pricelist[0].id daoRiga.valore_unitario_lordo = prezzo daoRiga.valore_unitario_netto = prezzo daoRiga.percentuale_iva = articolo["percentualeAliquotaIva"] daoRiga.applicazione_sconti = [] daoRiga.quantita = quantita daoRiga.id_multiplo = None daoRiga.moltiplicatore = 1 daoRiga.posizione = int(dati["prodotti"].items().index((k,v)))+1 daoRiga.scontiRigaDocumento = [] righeDocumento.append(daoRiga) parziale = float(quantita) * float(leggiListino(pricelist[0].id, idArticolo, tiny=True)["prezzoDettaglio"]) totale += parziale newDao.righeDocumento = righeDocumento newDao.totale_pagato = None newDao.totale_sospeso = None newDao.documento_saldato = False newDao.id_primo_riferimento = None newDao.id_secondo_riferimento = None tipo = "Ordine da cliente" valori = numeroRegistroGet(tipo=tipo, date=data_ordine) newDao.numero = valori[0] newDao.registro_numerazione= valori[1] if len(righeDocumento) > 0: newDao.persist() messageInfo(msg="ORDINE INSERITO") self.destroy()