def main(): consulta = ConsultaExistenciasRollos(gui = False) adjuntos = consulta.fich_generados admin = pclases.Usuario.select(orderBy = "id")[0] # FIXME: Debe ser una cuenta "neutra". Lo más cercano que se me ocurre # es cogerme a mí mismo que soy administrador. Pero obliga a que haya # sido el primer usuario creado en el sistema. O bien coger alguien de # almacén o algo... if pclases.DEBUG: # OJO: HARCODED dests = ["*****@*****.**"] else: # OJO: HARCODED. Cuando monte las zonas se podrá hacer mejor. dests = [comercial.correoe for comercial in pclases.Comercial.select() if comercial.correoe and ("delegado" in comercial.cargo.lower() or "director comercial" in comercial.cargo.lower())] servidor = admin.smtpserver smtpuser = admin.smtpuser smtppass = admin.smtppassword rte = admin.email texto = "Se le adjuntan las existencias actuales de geotextiles según "\ "la fecha y hora de generación de este correo." ok = enviar_correoe(rte, dests, "Existencias geotextiles", texto, servidor = servidor, usuario = smtpuser, password = smtppass, adjuntos = adjuntos) if ok: return 0 else: return 1
def enviar(self, boton): self.wids['spinner'].start() self.wids['spinner'].set_property("visible", True) while gtk.events_pending(): gtk.main_iteration(False) rte = self._cargar_remitente() tos = self._cargar_destinatarios() asunto = self._get_asunto() texto = self._get_texto() adjuntos = self._get_adjuntos() servidor = self.smtpserver usuario = self.smtpuser password = self.smtppwd if self.wids['ch_copia'].get_active(): tos.append(rte) # TODO: Esto debería ir en un hilo aparte. res = enviar_correoe(rte, tos, asunto, texto, adjuntos, servidor, usuario, password) if res: # TODO: PORASQUI: Mostrar ventana de diálogo de OK y devolver True. self.resultado_envio = True self.wids['b_aceptar'].set_sensitive(False) self.wids['b_cancelar'].set_label("Cerrar") else: # TODO: PORASQUI: Mostrar ventana de diálogo de "lacagaste" y seguir en la ventana. self.resultado_envio = False self.wids['spinner'].stop() self.wids['spinner'].set_property("visible", False)
def enviar_correo_visitas_confirmadas(self, confirmadas = []): """ Igual que en ofertas, se envía un correo a quien corresponde con el resumen del día, destacando las recién confirmadas. """ dests = select_correo_validador(self.usuario, copia_a_dircomercial = True) if not isinstance(dests, (list, tuple)): dests = [dests] servidor = self.usuario.smtpserver smtpuser = self.usuario.smtpuser smtppass = self.usuario.smtppassword rte = self.usuario.email year, month, day = self.wids['calendario'].get_date() fecha = datetime.date(year = year, month = month, day = day) texto = "Resumen de visitas de %s para el día %s:\n\n" % ( self.objeto.get_nombre_completo(), utils.str_fecha(fecha)) # TODO: Empepinar el correo usando una tabla HTML. No es tan difícil. for row in self.wids['tv_visitas'].get_model(): visita = pclases.getObjetoPUID(row[-1]) if not visita.enviada: continue texto += "%s%s\t%s%s\t%s\t%s\t%s%s\n" % ( visita in confirmadas and "*" or "", utils.str_hora_corta(visita.fechahora), visita.nombrecliente, visita.cliente and "" or " (+)", visita.lugar and visita.lugar or "", visita.motivoVisita and visita.motivoVisita.motivo or "", visita.observaciones, visita in confirmadas and "*" or "" ) ok = utils.enviar_correoe(rte, dests, "Parte de visitas confirmado (%s)" % utils.str_fecha(fecha), texto, servidor = servidor, usuario = smtpuser, password = smtppass) if ok: self.to_log( "Usuario %s envió correo de confirmación de visitas " "para el día %s." % (self.usuario and self.usuario.usuario or "¡NADIE!", utils.str_fecha(fecha)), nivel = 3) # info else: self.to_log( "Falló envío de correo de solicitud de validación de la " "oferta %s del usuario %s." % (utils.str_fecha(fecha), self.usuario and self.usuario.usuario or "¡NADIE!"), nivel = 1) # error
def enviar_por_correoe_a_comercial_relacionado(self, asunto = None): """ Envia un correo electrónico al (o a los) comercial relacionado con la factura con dos PDF adjuntos: una factura con la marca de agua "copia" y el histórico del CRM. También crea una tarea automática para identificar que ya se ha enviado la factura. Si no tiene comercial relacionado, envia el correo electrónico a todos los usuarios con permisos sobre la ventana de crm de seguimiento de impagos. """ # No estoy muy seguro de que esta sea el sitio indicado para meter # esta rutina. from informes.geninformes import crm_generar_pdf_detalles_factura from formularios.albaranes_de_salida import imprimir_factura as generar_factura copiafra = generar_factura(self, abrir = False, es_copia = True) historial = crm_generar_pdf_detalles_factura(self) comerciales = self.get_comerciales() destinatarios = [c.correoe.strip() for c in comerciales if c.correoe and c.correoe.strip()] if not destinatarios: # OJO: Ventana HARDCODED. try: ventana = Ventana.selectBy( fichero = "crm_seguimiento_impagos.py")[0] except IndexError: pass # La ventana no existe por lo que sea. # Weird, but... pasando. else: for permiso in ventana.permisos: u = permiso.usuario if u.email and u.email.strip(): destinatarios.append(u.email.strip()) if DEBUG: destinatarios.append("*****@*****.**") destinatarios.append("*****@*****.**") if destinatarios: # TODO: FIXME: Datos de correo HARCODED e incorrectos, para colmo. remitente = ("*****@*****.**", "*****@*****.**", "comgeo98") if asunto is None: asunto = "Factura %s" % self.numfactura texto = "Se adjunta copia de la factura en PDF e historial de "\ "la misma." servidor = "gea21.es" ok = utils.enviar_correoe(remitente[0], destinatarios, asunto, texto, [copiafra, historial], servidor, remitente[1], remitente[2]) if ok: t = Tarea(facturaVenta = self, # @UnusedVariable categoria = Categoria.get_categoria_tareas_automaticas(), texto = "Factura emitida hace más de 45 días." "No se ha recibido documento de cobro." "Enviar correo a comercial.", pendiente = False, fecha = mx.DateTime.today(), observaciones = "Tarea creada automáticamente.", fechadone = mx.DateTime.today())