예제 #1
0
파일: recibos.py 프로젝트: pacoqueen/ginn
 def rellenar_widgets(self):
     """
     Introduce la información del recibo actual
     en los widgets.
     """
     recibo = self.objeto
     if recibo.get_cliente() != None:
         self.cliente = recibo.get_cliente()
     self.mostrar_info_cliente()
     self.mostrar_info_facturas()
     txtimporte = numerals(recibo.importe).upper()
     self.wids['txt_importe'].get_buffer().set_text(txtimporte)
     self.wids['e_importe'].set_text(
         "%s €" % (utils.float2str(recibo.importe)))
     if recibo != None:
         for nombre_col in self.dic_campos:
             self.escribir_valor(recibo.sqlmeta.columns[nombre_col], 
                                 getattr(recibo, nombre_col), 
                                 self.dic_campos[nombre_col])
         self.objeto.make_swap()
     else:
         self.activar_widgets(False)
     ### Botones anterior/siguiente
     id_actual = recibo.id
     siguientes = pclases.Recibo.select(pclases.Recibo.q.id > id_actual 
             ).count()
     anteriores = pclases.Recibo.select(pclases.Recibo.q.id < id_actual
             ).count()
     self.wids['b_anterior'].set_sensitive(anteriores)
     self.wids['b_siguiente'].set_sensitive(siguientes)
예제 #2
0
def build_validez(validez):
    txt_validez = "OFERTA VÁLIDA POR %s DESDE LA FECHA DE ESTE PRESUPUESTO"
    if validez == 1:
        mes = "UN MES"
    else:
        from numerals import numerals
        txt_meses = numerals(validez, 
                             moneda = "", 
                             fraccion = "", 
                             autoomitir = True).upper()
        mes = "%s MESES" % txt_meses
    txt_validez = txt_validez % (mes)
    a_derecha = ParagraphStyle("A derecha", 
                                parent = estilos["Normal"])
    a_derecha.alignment = enums.TA_RIGHT
    a_derecha.fontName = "Courier"
    a_derecha.fontSize = 8
    return Paragraph(txt_validez, a_derecha)
예제 #3
0
파일: recibos.py 프로젝트: pacoqueen/bbinn
 def rellenar_widgets(self):
     """
     Introduce la información del recibo actual
     en los widgets.
     """
     recibo = self.objeto
     if recibo.get_cliente() != None:
         self.cliente = recibo.get_cliente()
     self.mostrar_info_cliente()
     self.mostrar_info_facturas()
     txtimporte = numerals(recibo.importe).upper()
     self.wids['txt_importe'].get_buffer().set_text(txtimporte)
     self.wids['e_importe'].set_text(
         "%s €" % (utils.float2str(recibo.importe)))
     if recibo != None:
         for nombre_col in self.dic_campos:
             self.escribir_valor(recibo._SO_columnDict[nombre_col], 
                                 getattr(recibo, nombre_col), 
                                 self.dic_campos[nombre_col])
         self.objeto.make_swap()
     else:
         self.activar_widgets(False)
예제 #4
0
def go_from_facturaVenta(facturaVenta):
    """
    Construye el PDF a partir de un objeto facturaVenta y no de sus datos
    sueltos.
    """
    cliente = facturaVenta.cliente
    datos_cliente = {"código": cliente.id,
                     "cif": cliente.cif,
                     "razón social": cliente.nombre,
                     "dirección": cliente.direccion,
                     "población": cliente.ciudad,
                     "provincia": cliente.provincia}
    if cliente.cp and cliente.cp.strip():
        datos_cliente["población"] = (cliente.cp + " - "
                                      + datos_cliente["población"])
    datos_factura = {"fecha": utils.str_fecha(facturaVenta.fecha),
                     "número": facturaVenta.numfactura,
                     "codcliente": facturaVenta.cliente
                                    and `facturaVenta.cliente.id`
                                    or ""}
    iva = cliente.iva
    # TODO: ¿Usar el float2str_autoprecision?
    lineas_contenido = [(ldv.producto.codigo,
                         ldv.producto.descripcion,
                         ldv.cantidad,
                         ldv.precio * (1.0 - ldv.descuento) * (1 + iva))
                        for ldv in facturaVenta.lineasDeVenta]
    lineas_contenido += [("",
                          srv.concepto,
                          srv.cantidad,
                          srv.precio * (1.0 - srv.descuento) * (1 + iva))
                         for srv in facturaVenta.servicios]
    totales = [facturaVenta.calcular_base_imponible(),
               iva,
               facturaVenta.calcular_total()]
    try:
        dde = pclases.DatosDeLaEmpresa.select()[0]
        datos_de_la_empresa = [os.path.join("..", "imagenes", dde.logo),
                               dde.nombre +
                                (dde.cif and " (" + dde.str_cif_o_nif() +": " + dde.cif + ")" or ""),
                               dde.direccion,
                               "%s %s (%s), %s" % (dde.cp,
                                                   dde.ciudad,
                                                   dde.provincia,
                                                   dde.pais),
                               ]
        if dde.fax:
            if dde.fax.strip() == dde.telefono.strip():
                datos_de_la_empresa.append("Telf. y fax: %s" % dde.telefono)
            else:
                datos_de_la_empresa.append("Telf.: %s" % (dde.telefono))
                datos_de_la_empresa.append("Fax: %s" % (dde.fax))
        if dde.email:
            datos_de_la_empresa.append(dde.email)
    except IndexError:
        lineas_empresa = [None]
    nomarchivo = os.path.join(gettempdir(),
                              "facturaVenta_%s.pdf" % give_me_the_name_baby())
    vencimientos = []
    forma_de_pago = []
    vtos = facturaVenta.vencimientosCobro[:]
    vtos.sort(lambda v1, v2: (v1.fecha < v2.fecha and 1)
                              or (v1.fecha > v2.fecha and -1)
                              or 0)
    for v in vtos:
        strvto = "%s (%s €)" % (utils.str_fecha(v.fecha),
                                utils.float2str(v.importe))
        vencimientos.append(strvto)
        forma_de_pago.append(v.observaciones)
    observaciones = ["Importa la presente factura:",
                     numerals.numerals(totales[-1],
                                       moneda = "EUROS",
                                       fraccion = "CÉNTIMOS").upper()]
    if facturaVenta.observaciones:
        observaciones.append(facturaVenta.observaciones)
    return go("Factura de venta %s (%s)" % (
                facturaVenta.cliente.nombre,
                utils.str_fecha(facturaVenta.fecha)),
              nomarchivo,
              datos_cliente,
              datos_factura,
              lineas_contenido,
              totales,
              datos_de_la_empresa,
              observaciones,
              vencimientos,
              forma_de_pago)