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()
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)
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
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}
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}
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)
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}
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)
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)