Example #1
0
    def setUp(self):
        from productos.factories import ProductoFactory
        from terceros.factories import ProveedorFactory
        from ..factories import BodegaFactory
        from usuarios.factories import UserFactory
        from ..services import (movimiento_inventario_saldo_inicial_crear,
                                movimiento_inventario_detalle_entrada_add_item,
                                movimiento_inventario_aplicar_movimiento,
                                movimiento_inventario_venta_crear,
                                movimiento_inventario_detalle_salida_add_item)
        self.user = UserFactory()
        self.bodega = BodegaFactory()
        self.usuario = UserFactory()
        self.proveedor = ProveedorFactory()

        self.movimiento_compra = movimiento_inventario_saldo_inicial_crear(
            bodega_destino_id=self.bodega.id,
            usuario_id=self.usuario.id,
            fecha=timezone.now())

        self.producto_uno = ProductoFactory()
        self.producto_dos = ProductoFactory()
        self.producto_tres = ProductoFactory()

        self.mv_uno_detalle_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra.id,
            producto_id=self.producto_uno.id,
            cantidad=20,
            costo_total=10000)
        self.mv_uno_detalle_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra.id,
            producto_id=self.producto_dos.id,
            cantidad=20,
            costo_total=40000)
        self.movimiento_compra = movimiento_inventario_aplicar_movimiento(
            movimiento_inventario_id=self.movimiento_compra.id)

        self.movimiento_venta = movimiento_inventario_venta_crear(
            bodega_origen_id=self.bodega.id, usuario_id=self.usuario.id)

        self.mv_venta_uno_uno = movimiento_inventario_detalle_salida_add_item(
            movimiento_id=self.movimiento_venta.id,
            producto_id=self.producto_uno.id,
            cantidad=5)

        self.mv_venta_uno_dos = movimiento_inventario_detalle_salida_add_item(
            movimiento_id=self.movimiento_venta.id,
            producto_id=self.producto_dos.id,
            cantidad=5)

        self.movimiento_venta = movimiento_inventario_aplicar_movimiento(
            movimiento_inventario_id=self.movimiento_venta.id)

        self.movimiento_compra.refresh_from_db()
Example #2
0
    def test_cargar_inventario(self):
        from ..services import movimiento_inventario_saldo_inicial_crear, movimiento_inventario_detalle_entrada_add_item
        from ..factories import BodegaFactory
        from productos.factories import ProductoFactory
        producto_uno = ProductoFactory()
        producto_dos = ProductoFactory()
        producto_tres = ProductoFactory()
        bodega_destino = BodegaFactory(es_principal=True)
        movimiento_inventario = movimiento_inventario_saldo_inicial_crear(
            fecha=timezone.now(),
            bodega_destino_id=bodega_destino.id,
            usuario_id=self.user.id)
        self.assertFalse(movimiento_inventario.cargado)
        md_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=movimiento_inventario.id,
            costo_total=100000,
            cantidad=30,
            producto_id=producto_uno.id)
        self.assertEqual(md_uno.saldo_costo, 0)
        self.assertEqual(md_uno.saldo_cantidad, 0)
        self.assertFalse(md_uno.es_ultimo_saldo)
        md_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=movimiento_inventario.id,
            costo_total=200000,
            cantidad=55,
            producto_id=producto_dos.id)
        md_tres = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=movimiento_inventario.id,
            costo_total=150000,
            cantidad=22,
            producto_id=producto_tres.id)
        self.detail_route_post('cargar_inventario', None,
                               movimiento_inventario.id)
        movimiento_inventario.refresh_from_db()
        md_uno.refresh_from_db()
        md_dos.refresh_from_db()
        md_tres.refresh_from_db()

        self.assertTrue(movimiento_inventario.cargado)

        self.assertEqual(md_uno.saldo_costo, 100000)
        self.assertEqual(md_uno.saldo_cantidad, 30)
        self.assertTrue(md_uno.es_ultimo_saldo)

        self.assertEqual(md_dos.saldo_costo, 200000)
        self.assertEqual(md_dos.saldo_cantidad, 55)
        self.assertTrue(md_dos.es_ultimo_saldo)

        self.assertEqual(md_tres.saldo_costo, 150000)
        self.assertEqual(md_tres.saldo_cantidad, 22)
        self.assertTrue(md_tres.es_ultimo_saldo)
Example #3
0
 def crear_movimiento_dos(self):
     from ..services import (movimiento_inventario_saldo_inicial_crear,
                             movimiento_inventario_detalle_entrada_add_item,
                             movimiento_inventario_aplicar_movimiento)
     from ..factories import BodegaFactory
     from productos.factories import ProductoFactory
     producto_dos = ProductoFactory()
     bodega_destino = BodegaFactory(es_principal=True)
     movimiento_inventario = movimiento_inventario_saldo_inicial_crear(
         fecha=timezone.now(),
         bodega_destino_id=bodega_destino.id,
         usuario_id=self.user.id)
     movimiento_inventario_detalle_entrada_add_item(
         movimiento_id=movimiento_inventario.id,
         costo_total=40000,
         cantidad=8,
         producto_id=self.producto.id)
     movimiento_inventario_detalle_entrada_add_item(
         movimiento_id=movimiento_inventario.id,
         costo_total=180000,
         cantidad=51,
         producto_id=producto_dos.id)
     movimiento_inventario = movimiento_inventario_aplicar_movimiento(
         movimiento_inventario_id=movimiento_inventario.id)
     return movimiento_inventario
Example #4
0
    def setUp(self):
        from ..factories import TrasladoFactory, BodegaFactory
        from productos.factories import ProductoFactory
        from ..models import TrasladoInventario
        super().setUp()
        self.Factory = TrasladoFactory
        self.url = '/api/traslados_inventarios/'
        self.permiso = 'trasladoinventario'
        self.modelo = TrasladoInventario

        self.bodega_origen = BodegaFactory(es_principal=True)
        self.bodega_destino = BodegaFactory(es_principal=True)

        self.producto = ProductoFactory()
        self.producto_dos = ProductoFactory()
        self.data_for_create_test = self.Factory.stub().__dict__
        self.data_for_create_test['bodega_origen'] = self.bodega_origen.id
        self.data_for_create_test['bodega_destino'] = self.bodega_destino.id
        self.data_for_update_test = {'estado': 1}
Example #5
0
 def setUp(self):
     from ..factories import MovimientoInventarioDetalleFactory, BodegaFactory
     from productos.factories import ProductoFactory
     from ..services import movimiento_inventario_traslado_entrada_crear
     from ..models import MovimientoInventarioDetalle
     super().setUp()
     self.Factory = MovimientoInventarioDetalleFactory
     self.url = '/api/movimiento_inventario_detalle/'
     self.permiso = 'movimientoinventariodetalle'
     self.modelo = MovimientoInventarioDetalle
     movimiento = movimiento_inventario_traslado_entrada_crear(
         bodega_destino_id=BodegaFactory().id,
         usuario_id=self.user.id,
         detalle='algo')
     self.producto = ProductoFactory()
     self.producto_dos = ProductoFactory()
     self.data_for_create_test = self.Factory.stub().__dict__
     self.data_for_create_test['movimiento'] = movimiento.id
     self.data_for_create_test['producto'] = self.producto.id
     self.data_for_update_test = {'entra_cantidad': 15}
Example #6
0
 def crear_inventarios_productos(self, nro_referencias: int = 5):
     from inventarios.factories import MovimientoInventarioDetalleFactory
     from productos.factories import ProductoFactory
     from inventarios.services import (
         movimiento_inventario_aplicar_movimiento,
         movimiento_inventario_saldo_inicial_crear)
     movimiento = movimiento_inventario_saldo_inicial_crear(
         fecha=timezone.now(),
         bodega_destino_id=self.bodega.id,
         usuario_id=self.colaborador_cajero.usuario.id)
     for i in range(nro_referencias):
         producto = ProductoFactory()
         entra_cantidad = random.randint(300, 1000)
         entra_costo = (producto.precio_venta -
                        producto.precio_venta * 0.3) * entra_cantidad
         MovimientoInventarioDetalleFactory(producto=producto,
                                            movimiento=movimiento,
                                            entra_cantidad=entra_cantidad,
                                            entra_costo=entra_costo)
     movimiento_inventario_aplicar_movimiento(
         movimiento_inventario_id=movimiento.id)
     return movimiento.detalles.values_list('producto_id', flat=True)
Example #7
0
    def setUp(self):
        from ..factories import (TrasladoInventarioDetalleFactory,
                                 TrasladoFactory,
                                 MovimientoInventarioDetalleFactory)
        from productos.factories import ProductoFactory
        from ..models import TrasladoInventarioDetalle
        from ..services import movimiento_inventario_aplicar_movimiento
        from ..factories import BodegaFactory
        super().setUp()
        self.Factory = TrasladoInventarioDetalleFactory
        self.url = '/api/traslados_inventarios_detalles/'
        self.permiso = 'trasladoinventariodetalle'
        self.modelo = TrasladoInventarioDetalle
        self.bodega_destino = BodegaFactory(es_principal=True)

        self.movimiento_inventario_detalle = MovimientoInventarioDetalleFactory(
        )
        movimiento = self.movimiento_inventario_detalle.movimiento
        movimiento.motivo = 'compra'
        movimiento.tipo = 'E'
        movimiento.save()
        self.movimiento_inventario_detalle_dos = MovimientoInventarioDetalleFactory(
            movimiento=movimiento)
        self.movimiento_inventario_detalle_tres = MovimientoInventarioDetalleFactory(
            movimiento=movimiento)
        movimiento_inventario_aplicar_movimiento(movimiento.id)

        self.traslado = TrasladoFactory(bodega_origen=movimiento.bodega,
                                        bodega_destino=self.bodega_destino)
        self.producto = ProductoFactory()

        self.data_for_create_test = self.Factory.stub().__dict__
        self.data_for_create_test['traslado'] = self.traslado.id
        self.data_for_create_test[
            'producto'] = self.movimiento_inventario_detalle.producto.id
        self.data_for_update_test = {'cantidad': 1}
Example #8
0
    def setUp(self):
        from productos.factories import ProductoFactory
        from terceros.factories import ProveedorFactory
        from ..factories import BodegaFactory
        from usuarios.factories import UserFactory
        from ..services import (movimiento_inventario_saldo_inicial_crear,
                                movimiento_inventario_compra_crear,
                                movimiento_inventario_detalle_entrada_add_item)
        self.user = UserFactory()
        self.bodega_destino = BodegaFactory()
        self.usuario = UserFactory()
        self.proveedor = ProveedorFactory()

        self.movimiento_saldo_inicial = movimiento_inventario_saldo_inicial_crear(
            bodega_destino_id=self.bodega_destino.id,
            usuario_id=self.usuario.id,
            fecha=timezone.now())

        self.movimiento_compra_dos = movimiento_inventario_compra_crear(
            bodega_destino_id=self.bodega_destino.id,
            usuario_id=self.usuario.id,
            proveedor_id=self.proveedor.id,
            fecha=timezone.now())

        self.movimiento_compra_tres = movimiento_inventario_compra_crear(
            bodega_destino_id=self.bodega_destino.id,
            usuario_id=self.usuario.id,
            proveedor_id=self.proveedor.id,
            fecha=timezone.now())

        self.producto_uno = ProductoFactory()
        self.producto_dos = ProductoFactory()
        self.producto_tres = ProductoFactory()

        self.mv_uno_detalle_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_uno.id,
            cantidad=20,
            costo_total=10000)
        self.mv_uno_detalle_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_dos.id,
            cantidad=20,
            costo_total=40000)

        self.mv_dos_detalle_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra_dos.id,
            producto_id=self.producto_uno.id,
            cantidad=10,
            costo_total=6000)
        self.mv_dos_detalle_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra_dos.id,
            producto_id=self.producto_dos.id,
            cantidad=10,
            costo_total=22000)

        self.mv_tres_detalle_tres = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_compra_tres.id,
            producto_id=self.producto_tres.id,
            cantidad=15,
            costo_total=25000)
Example #9
0
    def setUp(self):
        from productos.factories import ProductoFactory
        from usuarios.factories import UserFactory
        from ..services import (movimiento_inventario_detalle_entrada_add_item,
                                movimiento_inventario_saldo_inicial_crear,
                                movimiento_inventario_aplicar_movimiento)
        from ..factories import TrasladoFactory, BodegaFactory
        from terceros.factories import ColaboradorFactory
        from terceros.services import (tercero_set_new_pin,
                                       tercero_registra_entrada)
        from puntos_venta.services import punto_venta_abrir
        from puntos_venta.factories import PuntoVentaFactory

        # Primer colaborador presente
        self.punto_venta_abierto = PuntoVentaFactory(usuario_actual=None,
                                                     abierto=False)
        self.colaborador_presente = ColaboradorFactory()
        tercero_set_new_pin(tercero_id=self.colaborador_presente.id,
                            raw_pin='0000')
        tercero_registra_entrada(self.colaborador_presente.id, raw_pin='0000')
        self.colaborador_presente.usuario.set_password('otro')
        self.colaborador_presente.usuario.save()
        punto_venta_abrir(usuario_pv_id=self.colaborador_presente.usuario.id,
                          punto_venta_id=self.punto_venta_abierto.id,
                          base_inicial_efectivo=0)
        self.punto_venta_abierto.refresh_from_db()
        self.bodega_punto_venta_abierto = self.punto_venta_abierto.bodega
        self.bodega_punto_venta_abierto.es_principal = False
        self.bodega_punto_venta_abierto.save()
        self.colaborador_presente.refresh_from_db()

        # Segundo colaborador presente
        self.punto_venta_abierto_dos = PuntoVentaFactory(usuario_actual=None,
                                                         abierto=False)
        self.colaborador_presente_dos = ColaboradorFactory()
        tercero_set_new_pin(tercero_id=self.colaborador_presente_dos.id,
                            raw_pin='0000')
        tercero_registra_entrada(self.colaborador_presente_dos.id,
                                 raw_pin='0000')
        self.colaborador_presente_dos.usuario.set_password('otro')
        self.colaborador_presente_dos.usuario.save()
        punto_venta_abrir(
            usuario_pv_id=self.colaborador_presente_dos.usuario.id,
            punto_venta_id=self.punto_venta_abierto_dos.id,
            base_inicial_efectivo=0)
        self.punto_venta_abierto_dos.refresh_from_db()
        self.bodega_punto_venta_abierto_dos = self.punto_venta_abierto_dos.bodega
        self.bodega_punto_venta_abierto_dos.es_principal = False
        self.bodega_punto_venta_abierto_dos.save()
        self.colaborador_presente_dos.refresh_from_db()

        # Colaborador no presente
        self.colaborador_no_presente = ColaboradorFactory()

        self.usuario = UserFactory()

        self.traslado = TrasladoFactory()

        self.producto_uno = ProductoFactory()
        self.producto_dos = ProductoFactory()
        self.producto_tres = ProductoFactory()
        self.producto_cuatro = ProductoFactory()

        self.bodega_inventario = BodegaFactory(es_principal=True)
        self.bodega_destino = BodegaFactory(es_principal=False)

        self.movimiento_saldo_inicial = movimiento_inventario_saldo_inicial_crear(
            bodega_destino_id=self.bodega_inventario.id,
            usuario_id=self.usuario.id,
            fecha=timezone.now())

        self.mv_uno_detalle_uno = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_uno.id,
            cantidad=20,
            costo_total=10000)
        self.mv_uno_detalle_dos = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_dos.id,
            cantidad=30,
            costo_total=40000)
        self.mv_uno_detalle_tres = movimiento_inventario_detalle_entrada_add_item(
            movimiento_id=self.movimiento_saldo_inicial.id,
            producto_id=self.producto_tres.id,
            cantidad=40,
            costo_total=90000)
        movimiento_inventario_aplicar_movimiento(
            self.movimiento_saldo_inicial.id)