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
예제 #2
0
 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)
예제 #3
0
 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
예제 #4
0
 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())