示例#1
0
 def get_initial(self):
     initial = super(ProductosCreateViewModal, self).get_initial()
     initial['tipo_form'] = 'ALTA'
     initial['codigo'] = '{0:0{width}}'.format(
         (ultimoNroId(prod_productos) + 1), width=4)
     initial['request'] = self.request
     return initial
示例#2
0
 def get_initial(self):    
     initial = super(ClientesCreateView, self).get_initial()                
     initial['codigo'] = '{0:0{width}}'.format((ultimoNroId(egr_entidad)+1),width=4)
     initial['tipo_entidad'] = 1
     initial['empresa'] = empresa_actual(self.request)
     initial['request'] = self.request
     return initial   
示例#3
0
 def __init__(self, *args, **kwargs):
     request = kwargs.pop('request', None)
     super(PtoVtaForm, self).__init__(*args, **kwargs)
     id = ultimoNroId(cpb_pto_vta) + 1
     self.fields['numero'].initial = id
     self.fields['nombre'].initial = 'PV' + str(id)
示例#4
0
def importar_productos(request):
    context = {}
    context = getVariablesMixin(request)
    if request.method == 'POST':
        form = ImportarProductosForm(request.POST,
                                     request.FILES,
                                     request=request)
        if form.is_valid():
            csv_file = form.cleaned_data['archivo']
            sobreescribir = form.cleaned_data['sobreescribir'] == 'S'
            empresa = form.cleaned_data['empresa']
            if not csv_file.name.endswith('.csv'):
                messages.error(request,
                               '¡El archivo debe tener extensión .CSV!')
                return HttpResponseRedirect(reverse("importar_empleados"))

            if csv_file.multiple_chunks():
                messages.error(
                    request, "El archivo es demasiado grande (%.2f MB)." %
                    (csv_file.size / (1000 * 1000), ))
                return HttpResponseRedirect(reverse("importar_empleados"))

            decoded_file = csv_file.read().decode("latin1").replace(
                ",", "").replace("'", "")
            io_string = io.StringIO(decoded_file)
            reader = unicode_csv_reader(io_string)
            #Id;Nombre;Tipo de Producto;Proveedor;C¢digo;Stock;PC;IVA;MARGEN;;Precio de Venta;EFECTIVO
            cant = 0
            next(reader)  #Omito el Encabezado
            for index, line in enumerate(reader):
                campos = line[0].split(";")

                nombre = campos[1].strip().upper()
                if nombre == '':
                    continue  #Salta al siguiente

                codbar = campos[4].strip()
                if codbar == '':
                    cod = str(ultimoNroId(prod_productos) + 1).zfill(12)
                    cod += str(digVerificador(cod))
                    codbar = cod
                cod = codbar

                try:
                    categoria = prod_categoria.objects.get(
                        nombre=campos[2].strip().upper())
                except:
                    categoria = None
                    #import pdb; pdb.set_trace()

                try:
                    stock = int(campos[5].strip())
                except:
                    stock = 0
                try:
                    pcosto = Decimal(campos[6].strip())
                except:
                    pcosto = Decimal(0)

                try:
                    piva = Decimal(campos[7].strip())
                except:
                    piva = Decimal(0)

                try:
                    pventa1 = Decimal(campos[10].strip())
                except:
                    pventa1 = Decimal(0)
                try:
                    pventa2 = Decimal(campos[11].strip())
                except:
                    pventa2 = Decimal(0)

                pimp = pcosto + piva

                try:
                    tasa_iva = gral_tipo_iva.objects.get(id=5)
                except:
                    tasa_iva = None

                prod = prod_productos.objects.create(codigo=cod,
                                                     categoria=categoria,
                                                     empresa=empresa,
                                                     nombre=nombre,
                                                     codigo_barras=codbar,
                                                     tipo_producto=1,
                                                     mostrar_en=3,
                                                     unidad=0,
                                                     llevar_stock=False,
                                                     stock_negativo=True,
                                                     tasa_iva=tasa_iva)

                if prod:
                    lp1 = prod_lista_precios.objects.filter(pk=1).first()
                    lp2 = prod_lista_precios.objects.filter(pk=2).first()
                    prod_producto_lprecios.objects.create(producto=prod,
                                                          lista_precios=lp1,
                                                          precio_costo=pcosto,
                                                          precio_cimp=pimp,
                                                          precio_venta=pventa1)
                    prod_producto_lprecios.objects.create(producto=prod,
                                                          lista_precios=lp2,
                                                          precio_costo=pcosto,
                                                          precio_cimp=pimp,
                                                          precio_venta=pventa2)

                    ubi = prod_ubicacion.objects.filter(default=True).first()
                    prod_producto_ubicac.objects.create(producto=prod,
                                                        ubicacion=ubi,
                                                        punto_pedido=0.00)

                    actualizar_stock(request, prod, ubi, 21, stock)

                cant += 1
            messages.success(
                request,
                u'Se importó el archivo con éxito!<br>(%s Productos creados/actualizados)'
                % cant)

    else:
        form = ImportarProductosForm(None, None, request=request)
    context['form'] = form
    return render(request, 'productos/importar_productos.html', context)