Example #1
0
File: iva.py Project: pacoqueen/upy
 def buscar(self):
     """
     Buscar las facturas de compra y de venta comprendidas entre 
     las fechas de la ventana, las ordena por fecha y devuelve 
     una lista de las mismas.
     """
     try:
         txt_fini = self.wids['e_fecha_inicio'].get_text()
         fini = utils.parse_fecha(txt_fini)
     except:
         utils.dialogo_info(titulo = "ERROR FORMATO", 
                            texto = "El texto %s no es una fecha correcta." % txt_fini, 
                            padre = self.wids['ventana'])
         return []
     try:
         txt_ffin = self.wids['e_fecha_fin'].get_text()
         ffin = utils.parse_fecha(txt_ffin)
     except:
         utils.dialogo_info(titulo = "ERROR FORMATO", 
                            texto = "El texto %s no es una fecha correcta." % txt_ffin, 
                            padre = self.wids['ventana'])
         return []
     fraventas = pclases.FacturaVenta.select(pclases.AND(pclases.FacturaVenta.q.fecha >= fini, 
                                                         pclases.FacturaVenta.q.fecha <= ffin))
     fracompras = pclases.FacturaCompra.select(pclases.AND(pclases.FacturaCompra.q.fecha >= fini, 
                                                           pclases.FacturaCompra.q.fecha <= ffin))
     #facturas = list(fraventas) + list(fracompras)
     # Me quito las facturas con IVA 0 (usualmente generadas para controlar ingresos a Hacienda y SS) y las de 
     # Portugal (21% de IVA) que irían en adquisiciones intracomunitarias en caso de que la empresa esté dada de 
     # alta como operador intracomunitario y sería autorrepercutido, etc.
     facturas = list(fraventas) + [f for f in fracompras if not f.iva_homogeneo() or (f.iva != 0.0 and f.iva < 0.21)]
     facturas.sort(lambda f1, f2: utils.orden_por_campo_o_id(f1, f2, "fecha"))
     return facturas
Example #2
0
 def rellenar_adjuntos(self):
     """
     Introduce los adjuntos del objeto en la tabla de adjuntos.
     """
     model = self.wids['tv_adjuntos'].get_model()
     model.clear()
     if self.objeto != None:
         docs = self.objeto.documentos[:]
         docs.sort(lambda x, y: utils.orden_por_campo_o_id(x, y, "id"))
         for adjunto in self.objeto.documentos:
             model.append((adjunto.nombre, adjunto.observaciones, adjunto.id))
Example #3
0
 def buscar(self,boton):
     vpro = ventana_progreso.VentanaProgreso(padre = self.wids['ventana'])
     vpro.mostrar()
     self.resultado = []
     facturas = pclases.FacturaVenta.select(pclases.AND(
         pclases.FacturaVenta.q.fecha >= self.inicio, 
         pclases.FacturaVenta.q.fecha <= self.fin))
     act = 0.0; tot = facturas.count()
     for f in facturas:
         vpro.set_valor(act/tot, "Calculando beneficio factura %s..." % (
             f.numfactura))
         self.resultado.append(f)
     self.resultado.sort(
         lambda f1, f2: utils.orden_por_campo_o_id(f1, f2, "fecha"))
     self.rellenar_tabla(self.resultado)
     vpro.ocultar()
Example #4
0
 def buscar(self,boton):
     vpro = ventana_progreso.VentanaProgreso(padre = self.wids['ventana'])
     vpro.mostrar()
     self.resultado = {}
     facturas = pclases.FacturaVenta.select(pclases.AND(
         pclases.FacturaVenta.q.fecha >= self.inicio, 
         pclases.FacturaVenta.q.fecha <= self.fin))
     act = 0.0; tot = facturas.count()
     for f in facturas:
         vpro.set_valor(act/tot, "Buscando facturas...")
         cliente = f.cliente
         try:
             self.resultado[cliente].append(f)
         except KeyError:
             self.resultado[cliente] = [f]
     for c in self.resultado:
         self.resultado[c].sort(
             lambda f1, f2: utils.orden_por_campo_o_id(f1, f2, "fecha"))
     self.rellenar_tabla(self.resultado)
     vpro.ocultar()
Example #5
0
 def mostrar_horas(self, tv, path, vc):
     """
     Abre una ventana de búsqueda con las horas trabajadas en 
     partes de producción y partes de trabajo.
     """
     # EMPLEADO
     self.wids['ventana'].window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
     while gtk.events_pending(): gtk.main_iteration(False)
     model = tv.get_model()
     idempleado = model[path][-1]
     empleado = pclases.Empleado.get(idempleado)
     # PARTES DE PRODUCCIÓN
     try:
         dia, mes, anno = map(int, self.wids['e_fecha_ini'].get_text().split('/'))
     except:
         utils.dialogo_info(titulo = "FECHA INCORRECTA", texto = "La fecha inicial no es correcta. Use el formato día/mes/año")
     else:
         fecha_ini = mx.DateTime.DateTimeFrom(day = dia, month = mes, year = anno) 
         dia, mes, anno = map(int, self.wids['e_fecha_fin'].get_text().split('/'))
         try:
             fecha_fin = mx.DateTime.DateTimeFrom(day = dia, month = mes, year = anno) 
         except:
             utils.dialogo_info(titulo = "FECHA INCORRECTA", texto = "La fecha inicial no es correcta. Use el formato día/mes/año")
         else:
             partes_produccion = self.buscar_partes_produccion(fecha_ini, fecha_fin)
             horas_trabajadas = []   # Horas en partes de producción
             horas_recuperacion = [] # Horas en partes de trabajo
             for pdp in partes_produccion:
                 for ht in pdp.horasTrabajadas:
                     if ht.empleado == empleado:
                         horas_trabajadas.append(("PDP:%d" % (ht.parteDeProduccion.id), 
                                                  utils.str_fecha(pdp.fecha), 
                                                  utils.str_hora_corta(pdp.horainicio), 
                                                  utils.str_hora_corta(pdp.horafin), 
                                                  utils.str_hora_corta(pdp.get_duracion()), 
                                                  utils.str_hora_corta(ht.horas), 
                                                  pdp))
     # PARTES DE TRABAJO
             ftini = mx.DateTime.DateTimeFrom(year = fecha_ini.year, 
                                               month = fecha_ini.month, 
                                               day = fecha_ini.day, 
                                               hour = 6, 
                                               minute = 0, 
                                               second = 0).strftime('%Y-%m-%d %H:%M:%S')
             ftfin = (mx.DateTime.DateTimeFrom(year = fecha_fin.year, 
                                               month = fecha_fin.month, 
                                               day = fecha_fin.day, 
                                               hour = 6, 
                                               minute = 0, 
                                               second = 0) + mx.DateTime.oneDay).strftime('%Y-%m-%d %H:%M:%S')
             partes_trabajo = pclases.ParteDeTrabajo.select("""horainicio >= '%s' AND horainicio < '%s' """ % (ftini, ftfin))
             for pdt in partes_trabajo:
                 if pdt.empleado == empleado:
                     horas_recuperacion.append(("PDT:%d" % (pdt.id), 
                                                utils.str_fecha(pdt.horainicio), 
                                                utils.str_hora_corta(pdt.horainicio), 
                                                utils.str_hora_corta(pdt.horafin), 
                                                utils.str_hora_corta(pdt.get_duracion()), 
                                                utils.str_hora_corta(pdt.get_duracion()), 
                                                pdt)) 
             horas = horas_trabajadas + horas_recuperacion
             horas.sort(lambda x, y: utils.orden_por_campo_o_id(x[-1], y[-1], "fecha"))
             horas = [i[:-1] for i in horas]
     # DIÁLOGO RESULTADOS
             id_parte = utils.dialogo_resultado(horas, 
                                                "Horas trabajadas de producción y partes de trabajo de %s %s:" % (empleado.nombre, empleado.apellidos), 
                                                multi = False, 
                                                padre = self.wids['ventana'], 
                                                cabeceras = ("ID", "Fecha", "Hora inicio", "Hora fin", "Duración", "Horas trabajadas"))
             if id_parte != -1:
                 tipo, id = id_parte.split(":")
                 self.wids['ventana'].window.set_cursor(None)
                 if tipo == "PDP": 
                     parte = pclases.ParteDeProduccion.get(id)
                     if parte.es_de_geotextiles():
                         import partes_de_fabricacion_rollos
                         v = partes_de_fabricacion_rollos.PartesDeFabricacionRollos(objeto = parte, usuario = self.usuario)
                     elif parte.es_de_fibra():
                         import partes_de_fabricacion_balas
                         v = partes_de_fabricacion_balas.PartesDeFabricacionBalas(objeto = parte, usuario = sef.usuario)
                 elif tipo == "PDT": 
                     parte = pclases.ParteDeTrabajo.get(id)
                     import partes_de_trabajo
                     v = partes_de_trabajo.PartesDeTrabajo(objeto = parte, usuario = self.usuario)
     self.wids['ventana'].window.set_cursor(None)