def pdf(self, operationName, classic=None, template_file=None): """ Restituisce una stringa contenente il report in formato PDF """ azienda = Azienda().getRecord(id=Environment.azienda) scribusVersion(self._slaTemplate) if not Environment.new_print_enjine: if self._slaTemplateObj is None: self._slaTemplateObj = SlaTpl2Sla( slaFileName=self._slaTemplate, pdfFolder=self._anagrafica._folder, report=self._anagrafica._reportType, classic=classic, template_file=template_file) param = [] for d in self.objects: d.resolveProperties() param.append(d.dictionary(complete=True)) multilinedirtywork(param) if azienda and param: azidict = azienda.dictionary(complete=True) for a, b in azidict.items(): k = "azi_" + a azidict[k] = b del azidict[a] param[0].update(azidict) if not Environment.new_print_enjine: return self._slaTemplateObj.serialize(param, self.objects) else: return Sla2Pdf(slaFileName=self._slaTemplate, pdfFolder=self._anagrafica._folder, report=self._anagrafica._reportType).createPDF( objects=param, daos=self.objects)
def pdf(self, operationName, classic=None, template_file=None): """ Restituisce una stringa contenente il report in formato PDF """ azienda = Azienda().getRecord(id=Environment.azienda) param = [] for d in self.objects: d.resolveProperties() param.append(d.dictionary(complete=True)) # multilinedirtywork(param) if azienda: azidict = azienda.dictionary(complete=True) for a, b in azidict.items(): k = "azi_" + a azidict[k] = b del azidict[a] if param: param[0].update(azidict) if template_file: scribusVersion(Environment.labelTemplatesDir + template_file) else: scribusVersion(self._slaTemplate) if not Environment.new_print_enjine: print "OLD PRINT ENGINE" self._slaTemplateObj = SlaTpl2Sla(slaFileName=self._slaTemplate, pdfFolder=self._anagrafica._folder, report=self._anagrafica._reportType, label=True).serialize( param, self.objects, classic=classic, template_file=template_file) return self._slaTemplateObj else: print "NEW PRINT ENGINE" if template_file: slafile = Environment.labelTemplatesDir + template_file else: slafile = self._slaTemplate SlaTpl2Sla_ng(slafile=None, label=True, report=self._anagrafica._reportType, objects=param, daos=self.objects, slaFileName=slafile, pdfFolder=self._anagrafica._folder, classic=classic, template_file=template_file) return Sla2Pdf_ng(slafile=self._anagrafica._folder \ + "_temppp.sla").translate()
def __init__(self, mainWindow): self._mainWindow = mainWindow self.dao = Azienda() GladeWidget.__init__(self, root='anagrafica_azienda', path='anagrafica_azienda.glade') self.getTopLevel() self.placeWindow(self.getTopLevel()) self.getTopLevel().set_modal(modal=True) self.draw()
def pdf(self, operationName, classic=None, template_file=None): """ Qui si stampa selezione """ from sqlalchemy.orm import undefer_group self._slaTemplate = None self._slaTemplateObj = None # aggiungo i dati azienda al dao in modo che si gestiscano a monte azienda = Azienda().getRecord(id=Environment.azienda) operationNameUnderscored = operationName.replace(' ', '_').lower() a = Environment.templatesDir.decode("utf-8") + operationNameUnderscored + '.sla' Environment.pg2log.info(a) if os.path.exists(Environment.templatesDir + operationNameUnderscored \ + '.sla'): self._slaTemplate = Environment.templatesDir \ + operationNameUnderscored \ + '.sla' elif "DDT" in operationName and \ os.path.exists(Environment.templatesDir + 'ddt.sla'): self._slaTemplate = Environment.templatesDir + 'ddt.sla' else: self._slaTemplate = Environment.templatesDir \ + self.defaultFileName \ + '.sla' """ Restituisce una stringa contenente il report in formato PDF """ if self.dao.__class__.__name__ in Environment.fromHtmlLits: operation = Gtk.PrintOperation() setting = Gtk.PageSetup() ps = Gtk.PaperSize.new_custom("cc", "cc", 210, 297, gtk.Unit.MM) st = Gtk.PrintSettings() s = Gtk.PageSetup() s.set_paper_size(ps) margine_fondo = float(setconf("Stampa", "singolo_margine_basso")or 4.3) s.set_bottom_margin(margine_fondo, gtk.Unit.MM) margine_sinistro = float(setconf("Stampa", "singolo_margine_sinistro")or 4.3) s.set_left_margin(margine_sinistro, gtk.Unit.MM) margine_destro = float(setconf("Stampa", "singolo_margine_destro")or 4.3) s.set_right_margin(margine_destro, gtk.Unit.MM) margine_alto = float(setconf("Stampa", "singolo_margine_alto")or 4.3) s.set_top_margin(margine_alto, gtk.Unit.MM) orientamento = str(setconf("Stampa", "singolo_ori")) if orientamento == "orizzontale": s.set_orientation(Gtk.PageOrientation.LANDSCAPE) operation.set_default_page_setup(s) operation.set_export_filename(Environment.tempDir + ".temp.pdf") p = self._gtkHtml.get_main_frame().print_full(operation,gtk.PrintOperationAction.EXPORT) g = file(Environment.tempDir + ".temp.pdf", "rb") f = g.read() g.close() return f param = [self.dao.dictionary(complete=True)] multilinedirtywork(param) if azienda: azidict = azienda.dictionary(complete=True) for a, b in azidict.items(): k = "azi_" + a azidict[k] = b del azidict[a] param[0].update(azidict) if 'operazione' in param[0] and 'causale_trasporto' in param[0]: if (param[0]["operazione"] in ["DDT vendita", "DDT acquisto"]) \ and param[0]["causale_trasporto"] != "": param[0]["operazione"] = "DDT" # controllo la versione dello sla che devo elaborare versione = scribusVersion(self._slaTemplate) Environment.pg2log.info("VERSIONE SLA: " + str(versione)) if Environment.new_print_enjine: stpl2sla = SlaTpl2Sla_ng( slafile=None, label=None, report=None, objects=param, daos=self.dao, slaFileName=self._slaTemplate, pdfFolder=self._anagrafica._folder, classic=True, template_file=None).fileElaborated() return Sla2Pdf_ng(slafile=stpl2sla).translate() else: if self._slaTemplateObj is None: self._slaTemplateObj = SlaTpl2Sla( slaFileName=self._slaTemplate, pdfFolder=self._anagrafica._folder, report=self._anagrafica._reportType, classic=True, template_file=template_file) print("DAO IN STAMPA CLASSICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") Environment.pg2log.info("DAO IN STAMPA CLASSIC: " + str(self.dao)) return self._slaTemplateObj.serialize(param, classic=True, dao=self.dao)
def setDao(self): # Creazione dao azienda corrente self.dao = Azienda().getRecord(id=Environment.params["schema"]) if not self.dao: self.dao = Azienda().getRecord(id=Environment.azienda) self._refresh()
class AnagraficaAziende(GladeWidget): """ Anagrafica aziende """ filename = None def __init__(self, mainWindow): self._mainWindow = mainWindow self.dao = Azienda() GladeWidget.__init__(self, root='anagrafica_azienda', path='anagrafica_azienda.glade') self.getTopLevel() self.placeWindow(self.getTopLevel()) self.getTopLevel().set_modal(modal=True) self.draw() def draw(self): # Popolamento campi in maschera dal dao self.setDao() def show_all(self): """ Visualizza/aggiorna tutta la struttura dell'anagrafica """ self.show() def setDao(self): # Creazione dao azienda corrente self.dao = Azienda().getRecord(id=Environment.params["schema"]) if not self.dao: self.dao = Azienda().getRecord(id=Environment.azienda) self._refresh() def _refresh(self): self.denominazione_entry.set_text( self.dao.denominazione or '') self.ragione_sociale_entry.set_text( self.dao.ragione_sociale or '') self.localita_sede_operativa_entry.set_text( self.dao.sede_operativa_localita or '') self.indirizzo_sede_operativa_entry.set_text( self.dao.sede_operativa_indirizzo or '') self.numero_sede_operativa_entry.set_text( self.dao.sede_operativa_numero or '') self.cap_sede_operativa_entry.set_text( self.dao.sede_operativa_cap or '') self.provincia_sede_operativa_entry.set_text( self.dao.sede_operativa_provincia or '') self.localita_sede_legale_entry.set_text( self.dao.sede_legale_localita or '') self.indirizzo_sede_legale_entry.set_text( self.dao.sede_legale_indirizzo or '') self.numero_sede_legale_entry.set_text( self.dao.sede_legale_numero or '') self.cap_sede_legale_entry.set_text( self.dao.sede_legale_cap or '') self.provincia_sede_legale_entry.set_text( self.dao.sede_legale_provincia or '') self.codice_fiscale_entry.set_text( self.dao.codice_fiscale or '') self.partita_iva_entry.set_text( self.dao.partita_iva or '') self.data_iscrizione_cciaa_entry.set_text( dateToString(self.dao.iscrizione_cciaa_data or '')) self.numero_iscrizione_cciaa_entry.set_text( self.dao.iscrizione_cciaa_numero or '') self.data_iscrizione_tribunale_entry.set_text( dateToString(self.dao.iscrizione_tribunale_data or '')) self.numero_iscrizione_tribunale_entry.set_text( self.dao.iscrizione_tribunale_numero or '') self.codice_rea_entry.set_text( self.dao.codice_rea or '') self.matricola_inps_entry.set_text( self.dao.matricola_inps or '') #self.path_label.set_text(self.dao.percorso_immagine or '') self.logo_azienda.set_from_file( self.dao.percorso_immagine or "") self.telefono_entry.set_text(self.dao.telefono or '') self.progressivo_entry.set_text(self.dao.progressivo_fatturapa or 'A0001') #self.percorso_immagine_entry.set_text(self.dao.percorso_immagine or '') def saveDao(self): self.dao.denominazione = self.denominazione_entry.get_text() self.dao.ragione_sociale = self.ragione_sociale_entry.get_text() self.dao.sede_operativa_localita = \ self.localita_sede_operativa_entry.get_text() self.dao.sede_operativa_indirizzo = \ self.indirizzo_sede_operativa_entry.get_text() self.dao.sede_operativa_numero = \ self.numero_sede_operativa_entry.get_text() self.dao.sede_operativa_cap = self.cap_sede_operativa_entry.get_text() self.dao.sede_operativa_provincia = \ self.provincia_sede_operativa_entry.get_text() self.dao.sede_legale_localita =\ self.localita_sede_legale_entry.get_text() self.dao.sede_legale_indirizzo = \ self.indirizzo_sede_legale_entry.get_text() self.dao.sede_legale_numero = self.numero_sede_legale_entry.get_text() self.dao.sede_legale_cap = self.cap_sede_legale_entry.get_text() self.dao.sede_legale_provincia = \ self.provincia_sede_legale_entry.get_text() self.dao.codice_fiscale = self.codice_fiscale_entry.get_text() self.dao.partita_iva = self.partita_iva_entry.get_text() self.dao.iscrizione_cciaa_data = \ stringToDate(self.data_iscrizione_cciaa_entry.get_text()) self.dao.iscrizione_cciaa_numero = \ self.numero_iscrizione_cciaa_entry.get_text() self.dao.iscrizione_tribunale_data = \ stringToDate(self.data_iscrizione_tribunale_entry.get_text()) self.dao.iscrizione_tribunale_numero = \ self.numero_iscrizione_tribunale_entry.get_text() self.dao.codice_rea = self.codice_rea_entry.get_text() self.dao.matricola_inps = self.matricola_inps_entry.get_text() self.dao.telefono = self.telefono_entry.get_text() self.dao.progressivo_fatturapa = self.progressivo_entry.get_text() self.dao.percorso_immagine = self.filename or '' #self.path_label.get_text() #+"/"+self.filena if self.dao.codice_fiscale != '': codfis = checkCodFisc(self.dao.codice_fiscale) if not codfis: return False if self.dao.partita_iva != '': partiva = checkPartIva(self.dao.partita_iva) if not partiva: return False return True def on_seleziona_logo_button_clicked(self, widget): self.logo_filechooserdialog.run() if self.dao.percorso_immagine: self.logo_filechooserdialog.set_filename(self.dao.percorso_immagine) # def on_logo_filechooserdialog_file_activated(self, widget): # filename = self.logo_filechooserdialog.get_filename() # self.path_label.set_text(filename) # f = self.resizeImgThumbnailGeneric(filename = filename) ## self.logo_azienda.set_from_file(f) # self.logo_image2.set_from_file(f) def on_chiudi_button_clicked(self, button): self.logo_filechooserdialog.hide() def on_apri_button_clicked(self, button): self.filename = self.logo_filechooserdialog.get_filename() #self.path_label.set_text(filename) # f = self.resizeImgThumbnailGeneric(filename = filename) self.logo_azienda.set_from_file(self.filename) self.logo_filechooserdialog.hide() def on_rimuovi_logo_clicked(self, button): self.logo_azienda.set_from_file("") self.dao.percorso_immagine = None self.filename = None #self.path_label.set_text("") def resizeImgThumbnailGeneric(self, req=None, filename=None): """ funzione di ridimensionamento immagine per la lista, di fatto crea un thumnail dell'immagine stessa """ if filename: try: self.filena = filename.split("/")[-1] im1 = Image.open(filename) width = int(setconf("Documenti", "larghezza_logo")) height = int(setconf("Documenti", "altezza_logo")) im5 = im1.resize((width, height), Image.ANTIALIAS) newname = 'resize_' + self.filena p = os.path.dirname(filename) im5.save(p + "/" + newname) return p + "/" + newname except: print "ERRORE NEL LOGO", filename return "" def on_apply_button_clicked(self, button): save = self.saveDao() if save: self.dao.persist() self.getTopLevel().destroy() def on_contatti_togglebutton_toggled(self, toggleButton): if not(toggleButton.get_active()): toggleButton.set_active(False) return if posso("CN"): from promogest.ui.Contatti.AnagraficaContatti import\ AnagraficaContatti anag = AnagraficaContatti(self.dao.schemaa, 'azienda') anagWindow = anag.getTopLevel() showAnagraficaRichiamata(self._mainWindow.getTopLevel(), anagWindow, toggleButton) else: fenceDialog() toggleButton.set_active(False) def on_banche_azienda_button_clicked(self, button): from promogest.ui.AnagraficaBancheAzienda import AnagraficaBancheAzienda anag = AnagraficaBancheAzienda(self.dao.schemaa) anagWindow = anag.getTopLevel() returnWindow = button.get_toplevel() anagWindow.set_transient_for(returnWindow) anagWindow.show_all() def on_account_mail_button_clicked(self, button): from promogest.ui.AnagraficaAccountMail import AnagraficaAccountMail anag = AnagraficaAccountMail(self.dao.schemaa) anagWindow = anag.getTopLevel() returnWindow = button.get_toplevel() anagWindow.set_transient_for(returnWindow) anagWindow.show_all() def on_chiudi_butto_clicked(self,button): self.getTopLevel().destroy()
def _to_pdf(dao, classic=None, template_file=None): operationName = dao.operazione operationNameUnderscored = operationName.replace(' ', '_').lower() _slaTemplate = None # aggiungo i dati azienda al dao in modo che si gestiscano a monte azienda = Azienda().getRecord(id=Environment.azienda) if os.path.exists(Environment.templatesDir + operationNameUnderscored + '.sla'): _slaTemplate = Environment.templatesDir + operationNameUnderscored + '.sla' elif "DDT" in operationName and \ os.path.exists(Environment.templatesDir + 'ddt.sla'): _slaTemplate = Environment.templatesDir + 'ddt.sla' else: _slaTemplate = Environment.templatesDir + 'documento.sla' """ Restituisce una stringa contenente il report in formato PDF """ if dao.__class__.__name__ in Environment.fromHtmlLits: from xhtml2pdf import pisa #f = self.hh g = file(Environment.tempDir + ".temp.pdf", "wb") pisa.CreatePDF(str(f), g) g.close() g = file(Environment.tempDir + ".temp.pdf", "r") f = g.read() g.close() return f param = [dao.dictionary(complete=True)] utils.multilinedirtywork(param) try: if hasattr(Environment.conf.Documenti, "jnet"): from promogest.modules.NumerazioneComplessa.jnet import \ numerazioneJnet param[0]["numero"] = numerazioneJnet(dao) except: pass if azienda: azidict = azienda.dictionary(complete=True) for a, b in azidict.items(): k = "azi_" + a azidict[k] = b del azidict[a] param[0].update(azidict) if 'operazione' in param[0] and 'causale_trasporto' in param[0]: if (param[0]["operazione"] in ["DDT vendita", "DDT acquisto"]) \ and param[0]["causale_trasporto"] != "": param[0]["operazione"] = "DDT" _anagrafica_folder = tempfile.gettempdir() + os.sep stpl2sla = SlaTpl2Sla_ng(slafile=None, label=None, report=None, objects=param, daos=dao, slaFileName=_slaTemplate, pdfFolder=_anagrafica_folder, classic=True, template_file=None).fileElaborated() return Sla2Pdf_ng(slafile=stpl2sla).translate()
def on_export_fatturapa_toolbutton_clicked(self, widget): daos = get_selected_daos(self.anagrafica_filter_treeview) if len(daos) > 0: #try: # do_send_mail(daos, self, formato='xml') #except (NoAccountEmailFound, NetworkError) as ex: # messageError(str(ex)) azienda = Azienda().getRecord(id=Environment.azienda) progressivo = azienda.progressivo_fatturapa or 'A0001' for dao in daos: saveDialog = gtk.FileChooserDialog("export in a file...", None, GTK_FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, GTK_RESPONSE_CANCEL, gtk.STOCK_SAVE, GTK_RESPONSE_OK)) saveDialog.set_default_response(GTK_RESPONSE_OK) self.__homeFolder = setconf("General", "cartella_predefinita") or "" if self.__homeFolder == '': if os.name == 'posix': self.__homeFolder = os.environ['HOME'] elif os.name == 'nt': self.__homeFolder = os.environ['USERPROFILE'] saveDialog.set_current_folder(self.__homeFolder) # folder = self.__homeFolder filter = gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") saveDialog.add_filter(filter) filter1 = gtk.FileFilter() filter1.set_name("XML files") filter1.add_pattern("*.xml") filter1.add_pattern("*.XML") saveDialog.add_filter(filter1) current_name = "" if azienda.partita_iva: current_name = "".join(['IT', azienda.partita_iva, '_', progressivo, '.xml']) if azienda.codice_fiscale: current_name = "".join(['IT', azienda.codice_fiscale, '_', progressivo, '.xml']) if not current_name: messageWarning(msg="ATTENZIONE! Partita iva o codice fiscale azienda mancanti") return xml = to_fatturapa(dao, progressivo=progressivo) if not xml: return saveDialog.set_filter(filter1) saveDialog.set_current_name(current_name) saveDialog.show_all() response = saveDialog.run() if response == GTK_RESPONSE_OK: filename = saveDialog.get_filename() with open(filename, 'w') as fp: fp.write(xml.encode("utf-8")) # incrementa il progressivo azienda.progressivo_fatturapa = ''.join( [progressivo[0], str(int(progressivo[1:]) + 1).zfill(4)]) Environment.session.commit() saveDialog.destroy() elif response == GTK_RESPONSE_CANCEL: saveDialog.destroy()