def setUp(self): from terceros.factories import AcompananteFactory, ColaboradorFactory, ProveedorFactory from puntos_venta.factories import PuntoVentaFactory from puntos_venta.services import punto_venta_abrir from terceros.services import (tercero_set_new_pin, tercero_registra_entrada) self.punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None) self.colaborador_pdv = ColaboradorFactory() tercero_set_new_pin(self.colaborador_pdv.id, '0000') tercero_registra_entrada(self.colaborador_pdv.id, '0000') punto_venta_abrir(usuario_pv_id=self.colaborador_pdv.usuario.id, punto_venta_id=self.punto_venta.id, base_inicial_efectivo=0) self.colaborador = ColaboradorFactory() tercero_set_new_pin(self.colaborador.id, '0000') tercero_registra_entrada(self.colaborador.id, '0000') self.acompanante = AcompananteFactory() tercero_set_new_pin(self.acompanante.id, '0000') tercero_registra_entrada(self.acompanante.id, '0000') self.proveedor = ProveedorFactory()
def setUp(self): from ..factories import OperacionCajaFactory, ConceptoOperacionCajaFactory from terceros.factories import ColaboradorFactory from puntos_venta.factories import PuntoVentaFactory from terceros.services import tercero_registra_entrada, tercero_set_new_pin from puntos_venta.services import punto_venta_abrir super().setUp() self.Factory = OperacionCajaFactory self.url = '/api/operaciones_caja/' self.permiso = 'operacioncaja' self.modelo = OperacionCaja self.data_for_create_test = self.Factory.stub().__dict__ self.colaborador = ColaboradorFactory(usuario=self.user) tercero_set_new_pin(self.colaborador.id, '0000') tercero_registra_entrada(self.colaborador.id, '0000') self.punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None) punto_venta_abrir(base_inicial_efectivo=0, usuario_pv_id=self.colaborador.usuario.id, punto_venta_id=self.punto_venta.id) self.concepto = ConceptoOperacionCajaFactory(tipo='I', grupo='C', tipo_cuenta='CXC') self.data_for_create_test['tercero'] = self.colaborador.id self.data_for_create_test['concepto'] = self.concepto.id self.data_for_create_test.pop('cuenta') self.data_for_update_test = {'observacion': 'probando'}
class OperacionCajaTestsApi(BaseTestsApi): def setUp(self): from ..factories import OperacionCajaFactory, ConceptoOperacionCajaFactory from terceros.factories import ColaboradorFactory from puntos_venta.factories import PuntoVentaFactory from terceros.services import tercero_registra_entrada, tercero_set_new_pin from puntos_venta.services import punto_venta_abrir super().setUp() self.Factory = OperacionCajaFactory self.url = '/api/operaciones_caja/' self.permiso = 'operacioncaja' self.modelo = OperacionCaja self.data_for_create_test = self.Factory.stub().__dict__ self.colaborador = ColaboradorFactory(usuario=self.user) tercero_set_new_pin(self.colaborador.id, '0000') tercero_registra_entrada(self.colaborador.id, '0000') self.punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None) punto_venta_abrir(base_inicial_efectivo=0, usuario_pv_id=self.colaborador.usuario.id, punto_venta_id=self.punto_venta.id) self.concepto = ConceptoOperacionCajaFactory(tipo='I', grupo='C', tipo_cuenta='CXC') self.data_for_create_test['tercero'] = self.colaborador.id self.data_for_create_test['concepto'] = self.concepto.id self.data_for_create_test.pop('cuenta') self.data_for_update_test = {'observacion': 'probando'} def test_ingreso_no_autorizado(self): self.ingreso_no_autorizado() def test_crear(self): self.crear() def test_delete(self): self.delete() def test_list(self): self.list() def test_consultar_por_tercero_cuenta_abierta(self): self.crear() cuenta = self.colaborador.cuenta_abierta self.colaborador.usuario = self.superuser self.colaborador.save() response = self.list_route_get('consultar_por_tercero_cuenta_abierta/') cuenta_id = int(response.data[0]['cuenta']) self.assertEqual(cuenta_id, cuenta.id) valor = float(response.data[0]['valor']) self.assertEqual(abs(float(self.data_for_create_test.get('valor'))), abs(valor))
def setUp(self): from terceros.factories import AcompananteFactory, ColaboradorFactory self.user_sin_tercero = UserFactory() self.user = UserFactory() self.user_acompanante = UserFactory() self.punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None) self.punto_venta_dos = PuntoVentaFactory(abierto=False, usuario_actual=None) self.acompanante = AcompananteFactory(usuario=self.user_acompanante) self.colaborador = ColaboradorFactory(usuario=UserFactory()) self.colaborador_dos = ColaboradorFactory(usuario=UserFactory())
def setUp(self): super().setUp() from terceros.factories import AcompananteFactory, ColaboradorFactory self.url = '/api/terceros/' self.permiso = 'tercero' self.acompanante = AcompananteFactory() self.acompanante.usuario.set_password('contrasena') self.acompanante.usuario.save() self.colaborador = ColaboradorFactory()
def crear_base_venta(self): self.crear_productos() from terceros.factories import ColaboradorFactory, AcompananteFactory, CuentaColaboradorFactory from ..factories import PuntoVentaFactory from ..services import punto_venta_abrir from terceros.services import (tercero_set_new_pin, tercero_registra_entrada) tercero = ColaboradorFactory() tercero.usuario = self.user tercero.save() tercero_set_new_pin(tercero_id=tercero.id, raw_pin='0000') tercero_registra_entrada(tercero_id=tercero.id, raw_pin='0000') punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None, bodega=self.bodega) self.punto_venta, punto_venta_turno = punto_venta_abrir( punto_venta_id=punto_venta.id, usuario_pv_id=self.user.id, base_inicial_efectivo=0) acompanante = AcompananteFactory() tercero_set_new_pin(tercero_id=acompanante.id, raw_pin='0000') tercero_registra_entrada(tercero_id=acompanante.id, raw_pin='0000') self.cuenta = CuentaColaboradorFactory(propietario=acompanante.usuario) self.pedido = [ { 'producto_id': self.mid_uno.producto.id, 'precio_total': 2000, 'cantidad': 1 }, { 'producto_id': self.mid_dos.producto.id, 'precio_total': 3000, 'cantidad': 2 }, { 'producto_id': self.mid_tres.producto.id, 'precio_total': 4000, 'cantidad': 3 }, ]
def test_adicionar_quitar_punto_venta(self): from ..factories import ColaboradorFactory from puntos_venta.factories import PuntoVentaFactory colaborador = ColaboradorFactory() punto_venta = PuntoVentaFactory() self.assertTrue( colaborador.usuario.mis_puntos_venta.all().count() == 0) self.detail_route_post('adicionar_punto_venta', {'punto_venta_id': punto_venta.id}, colaborador.id) self.assertTrue( colaborador.usuario.mis_puntos_venta.all().count() == 1) self.detail_route_post('quitar_punto_venta', {'punto_venta_id': punto_venta.id}, colaborador.id) self.assertTrue( colaborador.usuario.mis_puntos_venta.all().count() == 0)
def setUp(self): from puntos_venta.factories import PuntoVentaFactory from puntos_venta.services import punto_venta_abrir from terceros.factories import ColaboradorFactory from ..factories import TipoVehiculoFactory, ModalidadFraccionTiempoFactory, VehiculoFactory self.punto_venta = PuntoVentaFactory(usuario_actual=None, abierto=False) colaborador = ColaboradorFactory(presente=True) punto_venta, self.punto_venta_turno = punto_venta_abrir( usuario_pv_id=colaborador.usuario.id, punto_venta_id=self.punto_venta.id, base_inicial_efectivo=0) tipo_vehiculo_sin_placa = TipoVehiculoFactory(tiene_placa=False) self.vehiculo = VehiculoFactory() self.modalidad_fraccion_tiempo_sin_placa = ModalidadFraccionTiempoFactory( tipo_vehiculo=tipo_vehiculo_sin_placa) tipo_vehiculo_con_placa = TipoVehiculoFactory(tiene_placa=True) self.modalidad_fraccion_tiempo_con_placa = ModalidadFraccionTiempoFactory( tipo_vehiculo=tipo_vehiculo_con_placa)
def setUp(self): from terceros.factories import ColaboradorFactory from puntos_venta.factories import PuntoVentaFactory from terceros.services import tercero_registra_entrada, tercero_set_new_pin from puntos_venta.services import punto_venta_abrir, punto_venta_cerrar super().setUp() self.url = '/api/arqueos_cajas/' self.permiso = 'arqueocaja' self.modelo = ArqueoCaja self.colaborador = ColaboradorFactory(usuario=self.superuser) tercero_set_new_pin(self.colaborador.id, '0000') tercero_registra_entrada(self.colaborador.id, '0000') self.punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None) punto_venta_abrir(base_inicial_efectivo=0, usuario_pv_id=self.colaborador.usuario.id, punto_venta_id=self.punto_venta.id) punto_venta_cerrar(usuario_pv_id=self.colaborador.usuario.id, entrega_efectivo_dict={}, operaciones_caja_dict={}, entrega_base_dict={}, valor_tarjeta=0, nro_vauchers=0, valor_dolares=0, tasa_dolar=0) punto_venta_abrir(base_inicial_efectivo=0, usuario_pv_id=self.colaborador.usuario.id, punto_venta_id=self.punto_venta.id) self.punto_venta, self.arqueo = punto_venta_cerrar( usuario_pv_id=self.colaborador.usuario.id, entrega_efectivo_dict={}, operaciones_caja_dict={}, entrega_base_dict={}, valor_tarjeta=200000, nro_vauchers=1, valor_dolares=0, tasa_dolar=0)
def test_listar_por_colaborador_y_username(self): from terceros.factories import ColaboradorFactory from ..factories import PuntoVentaFactory tercero = ColaboradorFactory() response = self.list_route_get( 'listar_por_colaborador/?colaborador_id=%s' % tercero.id) self.assertEqual(len(response.data), 0) response = self.list_route_get( 'listar_por_usuario_username/?username=%s' % tercero.usuario.username) self.assertEqual(len(response.data), 0) pv_uno = PuntoVentaFactory() pv_dos = PuntoVentaFactory() tercero.usuario.mis_puntos_venta.add(pv_uno) tercero.usuario.mis_puntos_venta.add(pv_dos) response = self.list_route_get( 'listar_por_colaborador/?colaborador_id=%s' % tercero.id) self.assertEqual(len(response.data), 2) response = self.list_route_get( 'listar_por_usuario_username/?username=%s' % tercero.usuario.username) self.assertEqual(len(response.data), 2)
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)
class TrasladoServicesTests(TestCase): 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) def test_crear_traslado_origen_bodega_principal_destino_bodega_principal( self): from ..factories import BodegaFactory from ..services import traslado_inventario_crear self.bodega_inventario.es_principal = True self.bodega_inventario.save() bodega_inventario_principal_dos = BodegaFactory(es_principal=True) traslado = traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=bodega_inventario_principal_dos.id, usuario_crea_id=self.usuario.id) self.assertTrue(traslado.estado == 1) self.assertFalse(traslado.trasladado) self.assertEqual(traslado.bodega_origen_id, self.bodega_inventario.id) self.assertEqual(traslado.bodega_destino.id, bodega_inventario_principal_dos.id) self.assertEqual(traslado.creado_por.id, self.usuario.id) def test_crear_traslado_origen_bodega_principal_destino_bodega_no_principal( self): from ..services import traslado_inventario_crear traslado = traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.usuario.id) self.assertTrue(traslado.estado == 1) self.assertFalse(traslado.trasladado) self.assertEqual(traslado.bodega_origen_id, self.bodega_inventario.id) self.assertEqual(traslado.bodega_destino.id, self.bodega_punto_venta_abierto.id) self.assertEqual(traslado.creado_por.id, self.usuario.id) def test_crear_traslado_origen_bodega_no_principal_destino_bodega_no_principal( self): from ..services import traslado_inventario_crear traslado = traslado_inventario_crear( bodega_origen_id=self.bodega_punto_venta_abierto_dos.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.colaborador_presente_dos.usuario.id) self.assertTrue(traslado.estado == 1) self.assertFalse(traslado.trasladado) self.assertEqual(traslado.bodega_origen_id, self.bodega_punto_venta_abierto_dos.id) self.assertEqual(traslado.bodega_destino.id, self.bodega_punto_venta_abierto.id) self.assertEqual(traslado.creado_por.id, self.colaborador_presente_dos.usuario.id) def test_crear_traslado_a_destino_bodega_no_principal_solo_pdv_destino_abierto( self): from ..services import traslado_inventario_crear self.punto_venta_abierto.abierto = False self.punto_venta_abierto.save() with self.assertRaisesMessage( ValidationError, "{'_error': 'Para realizar traslado a una bodega que no es principal, debe de haber alguien en el para recibirlo. Actualmente no hay nadie'}" ): traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.usuario.id) self.punto_venta_abierto.abierto = True self.punto_venta_abierto.usuario_actual = None self.punto_venta_abierto.save() with self.assertRaisesMessage( ValidationError, "{'_error': 'Para realizar traslado a una bodega que no es principal, debe de haber alguien en el para recibirlo. Actualmente no hay nadie'}" ): traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.usuario.id) def test_crear_traslado_origen_bodega_no_principal_solo_pdv_origen_abierto( self): from ..services import traslado_inventario_crear self.punto_venta_abierto_dos.abierto = False self.punto_venta_abierto_dos.save() with self.assertRaisesMessage( ValidationError, "{'_error': 'Para realizar traslado desde una bodega que no es principal, debe de haber alguien en el punto de venta para crearlo. Actualmente no hay nadie'}" ): traslado_inventario_crear( bodega_origen_id=self.bodega_punto_venta_abierto_dos.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.colaborador_presente_dos.usuario.id) self.punto_venta_abierto_dos.abierto = True self.punto_venta_abierto_dos.save() with self.assertRaisesMessage( ValidationError, "{'_error': 'Sólo el usuario de la bodega origen puede crear un traslado desde su lugar'}" ): traslado_inventario_crear( bodega_origen_id=self.bodega_punto_venta_abierto_dos.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.colaborador_presente.usuario.id) self.punto_venta_abierto_dos.usuario_actual = None self.punto_venta_abierto_dos.save() with self.assertRaisesMessage( ValidationError, "{'_error': 'Para realizar traslado desde una bodega que no es principal, debe de haber alguien en el punto de venta para crearlo. Actualmente no hay nadie'}" ): traslado_inventario_crear( bodega_origen_id=self.bodega_punto_venta_abierto_dos.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.colaborador_presente_dos.usuario.id) def test_traslado_inventario_adicionar_item(self): from ..services import traslado_inventario_crear, traslado_inventario_adicionar_item traslado = traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.usuario.id) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_uno.id, cantidad=10) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_dos.id, cantidad=5) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_tres.id, cantidad=15) self.assertTrue( traslado.detalles.filter(producto=self.producto_uno).exists()) self.assertTrue( traslado.detalles.filter( producto=self.producto_uno).first().cantidad == 10) self.assertTrue( traslado.detalles.filter(producto=self.producto_dos).exists()) self.assertTrue( traslado.detalles.filter( producto=self.producto_dos).first().cantidad == 5) self.assertTrue( traslado.detalles.filter(producto=self.producto_tres).exists()) self.assertTrue( traslado.detalles.filter( producto=self.producto_tres).first().cantidad == 15) self.assertFalse( traslado.detalles.filter(producto=self.producto_cuatro).exists()) def test_traslado_inventario_adicionar_item_sin_nunca_existencia(self): from ..services import traslado_inventario_crear, traslado_inventario_adicionar_item traslado = traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.usuario.id) with self.assertRaisesMessage( ValidationError, "{'_error': 'No hay existencias de producto"): traslado_inventario_adicionar_item( traslado_inventario_id=traslado.id, producto_id=self.producto_cuatro.id, cantidad=10) def test_traslado_inventario_adicionar_item_cantidad_mayor_a_existencia( self): from ..services import traslado_inventario_crear, traslado_inventario_adicionar_item traslado = traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.usuario.id) with self.assertRaisesMessage( ValidationError, "{'_error': 'No hay existencias suficientes del producto seleccionado. Solo hay" ): traslado_inventario_adicionar_item( traslado_inventario_id=traslado.id, producto_id=self.producto_dos.id, cantidad=200) def test_traslado_inventario_realizar_traslado(self): from ..services import (traslado_inventario_crear, traslado_inventario_adicionar_item, traslado_inventario_realizar_traslado) from ..models import MovimientoInventarioDetalle traslado = traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.usuario.id) self.assertTrue(traslado.estado == 1) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_uno.id, cantidad=1) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_dos.id, cantidad=2) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_tres.id, cantidad=3) with self.assertRaisesMessage( ValidationError, "{'_error': 'El traslado a esta bodega sólamente puede realizarlo" ): traslado_inventario_realizar_traslado( traslado_inventario_id=traslado.id, usuario_id=self.usuario.id) traslado_inventario_realizar_traslado( traslado_inventario_id=traslado.id, usuario_id=self.punto_venta_abierto.usuario_actual.id) traslado.refresh_from_db() self.assertTrue(traslado.estado == 3) self.assertTrue(traslado.recibido_por.id == self.punto_venta_abierto.usuario_actual.id) self.assertTrue(traslado.movimiento_origen.cargado) self.assertTrue(traslado.movimiento_destino.cargado) [ self.assertTrue(x.es_ultimo_saldo) for x in traslado.movimiento_origen.detalles.all() ] [ self.assertTrue(x.es_ultimo_saldo) for x in traslado.movimiento_destino.detalles.all() ] movimientos_iniciales_producto_uno = MovimientoInventarioDetalle.objects.filter( producto_id=self.producto_uno.id).exclude(movimiento_id__in=[ traslado.movimiento_origen_id, traslado.movimiento_destino_id ]) [ self.assertFalse(x.es_ultimo_saldo) for x in movimientos_iniciales_producto_uno.all() ] movimientos_iniciales_producto_dos = MovimientoInventarioDetalle.objects.filter( producto_id=self.producto_dos.id).exclude(movimiento_id__in=[ traslado.movimiento_origen_id, traslado.movimiento_destino_id ]) [ self.assertFalse(x.es_ultimo_saldo) for x in movimientos_iniciales_producto_dos.all() ] movimientos_iniciales_producto_tres = MovimientoInventarioDetalle.objects.filter( producto_id=self.producto_tres.id).exclude(movimiento_id__in=[ traslado.movimiento_origen_id, traslado.movimiento_destino_id ]) [ self.assertFalse(x.es_ultimo_saldo) for x in movimientos_iniciales_producto_tres.all() ] md_detalle_producto_uno = traslado.movimiento_destino.detalles.filter( producto=self.producto_uno).first() self.assertTrue(md_detalle_producto_uno.saldo_cantidad == 1) self.assertTrue(int(md_detalle_producto_uno.entra_cantidad) == 1) self.assertTrue(int(md_detalle_producto_uno.costo_unitario) == 500) self.assertTrue(int(md_detalle_producto_uno.saldo_costo) == 500) self.assertTrue( int(md_detalle_producto_uno.costo_unitario_promedio) == 500) md_detalle_producto_dos = traslado.movimiento_destino.detalles.filter( producto=self.producto_dos).first() self.assertTrue(md_detalle_producto_dos.saldo_cantidad == 2) self.assertTrue(int(md_detalle_producto_dos.entra_cantidad) == 2) self.assertTrue( int(md_detalle_producto_dos.costo_unitario) == int(40000 / 30)) self.assertTrue( int(md_detalle_producto_dos.saldo_costo) == int(40000 / 30) * 2) self.assertTrue( int(md_detalle_producto_dos.costo_unitario_promedio) == int(40000 / 30)) md_detalle_producto_tres = traslado.movimiento_destino.detalles.filter( producto=self.producto_tres).first() self.assertTrue(md_detalle_producto_tres.saldo_cantidad == 3) self.assertTrue(int(md_detalle_producto_tres.entra_cantidad) == 3) self.assertTrue( int(md_detalle_producto_tres.costo_unitario) == int(90000 / 40)) self.assertTrue( int(md_detalle_producto_tres.saldo_costo) == int(90000 / 40) * 3) self.assertTrue( int(md_detalle_producto_tres.costo_unitario_promedio) == int( 90000 / 40)) def test_traslado_inventario_set_estado_esperando_traslado(self): from ..services import ( traslado_inventario_crear, traslado_inventario_adicionar_item, traslado_inventario_set_estado_esperando_traslado) traslado = traslado_inventario_crear( bodega_origen_id=self.bodega_inventario.id, bodega_destino_id=self.bodega_punto_venta_abierto.id, usuario_crea_id=self.usuario.id) self.assertTrue(traslado.estado == 1) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_uno.id, cantidad=1) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_dos.id, cantidad=2) traslado_inventario_adicionar_item(traslado_inventario_id=traslado.id, producto_id=self.producto_tres.id, cantidad=3) with self.assertRaisesMessage( ValidationError, "{'_error': 'Sólo el usuario que creo el traslado puede solicitar que se realice traslado'}" ): traslado_inventario_set_estado_esperando_traslado( traslado_inventario_id=traslado.id, usuario_id=self.punto_venta_abierto.usuario_actual.id) traslado = traslado_inventario_set_estado_esperando_traslado( traslado_inventario_id=traslado.id, usuario_id=self.usuario.id) self.assertTrue(traslado.estado == 2)
def colaboradoresSetUp(self): # region Puntos de Venta from puntos_venta.factories import PuntoVentaFactory from puntos_venta.services import punto_venta_abrir self.punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None) self.bodega = self.punto_venta.bodega self.bodega.es_principal = False self.bodega.save() self.punto_venta_dos = PuntoVentaFactory(abierto=False, usuario_actual=None) self.bodega_dos = self.punto_venta.bodega self.bodega_dos.es_principal = False self.bodega_dos.save() # endregion # region Colaboradores from terceros.factories import ColaboradorFactory from terceros.services import tercero_registra_entrada, tercero_set_new_pin, colaborador_crear # region Colaborador Uno self.colaborador_base = ColaboradorFactory.build(usuario=None) self.colaborador_base.pop('es_colaborador') self.colaborador_base.pop('usuario') self.colaborador_cajero = colaborador_crear(self.colaborador_base) tercero_set_new_pin(tercero_id=self.colaborador_cajero.id, raw_pin='0000') tercero_registra_entrada(tercero_id=self.colaborador_cajero.id, raw_pin='0000') self.punto_venta, self.punto_venta_turno = punto_venta_abrir( usuario_pv_id=self.colaborador_cajero.usuario.id, punto_venta_id=self.punto_venta.id, base_inicial_efectivo=500000) # endregion # region Colaborador Dos self.colaborador_dos_base = ColaboradorFactory.build(usuario=None) self.colaborador_dos_base.pop('es_colaborador') self.colaborador_dos_base.pop('usuario') self.colaborador_dos = colaborador_crear(self.colaborador_dos_base) tercero_set_new_pin(tercero_id=self.colaborador_dos.id, raw_pin='0000') tercero_registra_entrada(tercero_id=self.colaborador_dos.id, raw_pin='0000') # endregion # region Colaborador Mesero self.colaborador_tres_base = ColaboradorFactory.build(usuario=None) self.colaborador_tres_base.pop('es_colaborador') self.colaborador_tres_base.pop('usuario') self.colaborador_mesero = colaborador_crear(self.colaborador_tres_base) tercero_set_new_pin(tercero_id=self.colaborador_mesero.id, raw_pin='0000') tercero_registra_entrada(tercero_id=self.colaborador_mesero.id, raw_pin='0000') # endregion # region Colaborador Mesero Dos self.colaborador_cuatro_base = ColaboradorFactory.build(usuario=None) self.colaborador_cuatro_base.pop('es_colaborador') self.colaborador_cuatro_base.pop('usuario') self.colaborador_mesero_dos = colaborador_crear( self.colaborador_cuatro_base) tercero_set_new_pin(tercero_id=self.colaborador_mesero_dos.id, raw_pin='0000') tercero_registra_entrada(tercero_id=self.colaborador_mesero_dos.id, raw_pin='0000')
class OperacionCajaServicesTests(TestCase): def setUp(self): from terceros.factories import AcompananteFactory, ColaboradorFactory, ProveedorFactory from puntos_venta.factories import PuntoVentaFactory from puntos_venta.services import punto_venta_abrir from terceros.services import (tercero_set_new_pin, tercero_registra_entrada) self.punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None) self.colaborador_pdv = ColaboradorFactory() tercero_set_new_pin(self.colaborador_pdv.id, '0000') tercero_registra_entrada(self.colaborador_pdv.id, '0000') punto_venta_abrir(usuario_pv_id=self.colaborador_pdv.usuario.id, punto_venta_id=self.punto_venta.id, base_inicial_efectivo=0) self.colaborador = ColaboradorFactory() tercero_set_new_pin(self.colaborador.id, '0000') tercero_registra_entrada(self.colaborador.id, '0000') self.acompanante = AcompananteFactory() tercero_set_new_pin(self.acompanante.id, '0000') tercero_registra_entrada(self.acompanante.id, '0000') self.proveedor = ProveedorFactory() def test_operacion_caja_acompanante(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear, operacion_caja_generar_recibo concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A', tipo_cuenta='CXP') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=23000) self.assertEqual(operacion_caja.valor, 23000) self.assertIsNotNone(operacion_caja.cuenta) concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A', tipo_cuenta='CXC') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=23000) self.assertEqual(operacion_caja.valor, -23000) self.assertIsNotNone(operacion_caja.cuenta) comprobante = operacion_caja_generar_recibo(operacion_caja.id) comprobante.write_pdf( target= 'media/pruebas_pdf/comprobante_operacion_caja_egreso_acompanante.pdf' ) concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='A', tipo_cuenta='CXC') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=18500, observacion='hola') self.assertEqual(operacion_caja.valor, -18500) self.assertIsNotNone(operacion_caja.cuenta) concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='A', tipo_cuenta='CXP') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=18500, observacion='hola') self.assertEqual(operacion_caja.valor, 18500) self.assertIsNotNone(operacion_caja.cuenta) comprobante = operacion_caja_generar_recibo(operacion_caja.id) comprobante.write_pdf( target= 'media/pruebas_pdf/comprobante_operacion_caja_ingreso_acompanante.pdf' ) def test_operacion_caja_transacciones(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=1000, observacion='hola') transaccion_caja = operacion_caja.transacciones_caja.last() self.assertEqual(transaccion_caja.tipo, 'I') self.assertEqual(transaccion_caja.tipo_dos, 'OPERA_CAJA') self.assertEqual(transaccion_caja.valor_efectivo, 1000) concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='A') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=2000, observacion='hola') self.assertEqual(operacion_caja.transacciones_caja.all().count(), 1) transaccion_caja = operacion_caja.transacciones_caja.last() self.assertEqual(transaccion_caja.tipo, 'E') self.assertEqual(transaccion_caja.tipo_dos, 'OPERA_CAJA') self.assertEqual(transaccion_caja.valor_efectivo, -2000) def test_operacion_caja_colaborador(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='C', tipo_cuenta='CXP') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.colaborador.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, 1000) self.assertIsNotNone(operacion_caja.cuenta) concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='C', tipo_cuenta='CXC') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.colaborador.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, -1000) self.assertIsNotNone(operacion_caja.cuenta) concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='C', tipo_cuenta='CXC') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.colaborador.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, -1000) self.assertIsNotNone(operacion_caja.cuenta) concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='C', tipo_cuenta='CXP') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.colaborador.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, 1000) self.assertIsNotNone(operacion_caja.cuenta) def test_operacion_caja_proveedor(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='P', tipo_cuenta='NA') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.proveedor.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, 1000) self.assertIsNone(operacion_caja.cuenta) concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='P', tipo_cuenta='NA') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.proveedor.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, -1000) self.assertIsNone(operacion_caja.cuenta) def test_operacion_caja_taxi(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='T', tipo_cuenta='NA') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, 1000) self.assertIsNone(operacion_caja.cuenta) concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='T', tipo_cuenta='NA') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, -1000) self.assertIsNone(operacion_caja.cuenta) def test_operacion_caja_otro(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='O', tipo_cuenta='NA') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, 1000) self.assertIsNone(operacion_caja.cuenta) concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='O', tipo_cuenta='NA') operacion_caja = operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, valor=1000, observacion='hola') self.assertEqual(operacion_caja.valor, -1000) self.assertIsNone(operacion_caja.cuenta) def test_operacion_caja_colaborador_creador_punto_venta_turno(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear turno = self.colaborador_pdv.turno_punto_venta_abierto turno.finish = timezone.now() turno.save() with self.assertRaisesMessage( ValidationError, "{'_error': 'Quien crea de la operación debe tener un turno de punto de venta abierto'}" ): concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A') operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=1000, observacion='hola') def test_operacion_caja_valor_solo_positivo(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear concepto_operacion = ConceptoOperacionCajaFactory(tipo='E', grupo='T') with self.assertRaisesMessage( ValidationError, "{'_error': 'El valor ingresado debe ser positivo mayor a cero'}" ): operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, valor=-1000, observacion='hola') def test_operacion_caja_colaborador_acompanante_presentes(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear from terceros.services import tercero_registra_salida, tercero_registra_entrada tercero_registra_salida(self.colaborador_pdv.id, '0000') with self.assertRaisesMessage( ValidationError, "{'_error': 'Quien crea de la operación debe estar presente'}" ): concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A') operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=1000, observacion='hola') with self.assertRaisesMessage( ValidationError, "{'_error': 'A quien se le crea la operación debe estar presente.'}" ): tercero_registra_entrada(self.colaborador_pdv.id, '0000') tercero_registra_salida(self.acompanante.id, '0000') concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A') operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=1000, observacion='hola') usuario = self.colaborador_pdv.usuario self.colaborador_pdv.usuario = None self.colaborador_pdv.save() with self.assertRaisesMessage( ValidationError, "{'_error': 'Quien crea la operación debe tener un tercero'}"): concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A') operacion_caja_crear(concepto_id=concepto_operacion.id, usuario_pdv_id=usuario.id, tercero_id=self.colaborador_pdv.id, valor=1000, observacion='hola') def test_operacion_caja_grupos(self): from ..factories import ConceptoOperacionCajaFactory from ..services import operacion_caja_crear with self.assertRaisesMessage( ValidationError, "{'_error': 'Un tipo de operacion de caja para acompañante solo debe ser creada para un acompañante'}" ): concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A') operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.proveedor.id, valor=1000, observacion='hola') with self.assertRaisesMessage( ValidationError, "{'_error': 'Un tipo de operacion de caja para colaborador solo debe ser creada para un colaborador'}" ): concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='C') operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.proveedor.id, valor=1000, observacion='hola') with self.assertRaisesMessage( ValidationError, "{'_error': 'Un tipo de operacion de caja para proveedor solo debe ser creada para un proveedor'}" ): concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='P') operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=1000, observacion='hola') with self.assertRaisesMessage( ValidationError, "{'_error': 'Para el concepto seleccionado se requiere un tercero'}" ): concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='A') operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, valor=1000, observacion='hola') with self.assertRaisesMessage( ValidationError, "{'_error': 'Para los conceptos Otro y Taxi no se utiliza tercero'}" ): concepto_operacion = ConceptoOperacionCajaFactory(tipo='I', grupo='O') operacion_caja_crear( concepto_id=concepto_operacion.id, usuario_pdv_id=self.colaborador_pdv.usuario.id, tercero_id=self.acompanante.id, valor=1000, observacion='hola')
def setUp(self): from terceros.factories import AcompananteFactory, ColaboradorFactory from puntos_venta.factories import PuntoVentaFactory from puntos_venta.services import punto_venta_abrir from habitaciones.factories import (HabitacionFactory, TipoHabitacionFactory) from servicios.services import servicio_crear_nuevo, servicio_iniciar from terceros_acompanantes.factories import ( CategoriaFraccionTiempoFactory, FraccionTiempoFactory, CategoriaAcompananteFactory) from terceros.services import (acompanante_crear, tercero_set_new_pin, tercero_registra_entrada, colaborador_crear) self.tipo_habitacion_uno = TipoHabitacionFactory(valor=40000) self.tipo_habitacion_dos = TipoHabitacionFactory(valor=60000) self.tipo_habitacion_tres = TipoHabitacionFactory(valor=30000) self.habitacion_uno = HabitacionFactory(tipo=self.tipo_habitacion_uno) self.habitacion_dos = HabitacionFactory(tipo=self.tipo_habitacion_dos) self.habitacion_tres = HabitacionFactory( tipo=self.tipo_habitacion_tres) # Colaborador para transacciones colaborador_base = ColaboradorFactory.build(usuario=None) colaborador_base.pop('es_colaborador') colaborador_base.pop('usuario') self.colaborador = colaborador_crear(colaborador_base) self.colaborador, pin_nuevo = tercero_set_new_pin( self.colaborador.id, '0000') tercero_registra_entrada(tercero_id=self.colaborador.id, raw_pin='0000') self.punto_venta = PuntoVentaFactory(abierto=False, usuario_actual=None) self.punto_venta, self.punto_venta_turno = punto_venta_abrir( punto_venta_id=self.punto_venta.id, usuario_pv_id=self.colaborador.usuario.id, base_inicial_efectivo=0) # Acompanante self.categoria_modelo = CategoriaAcompananteFactory() self.fraccion_tiempo_30 = FraccionTiempoFactory(minutos=30) self.fraccion_tiempo_45 = FraccionTiempoFactory(minutos=45) self.fraccion_tiempo_60 = FraccionTiempoFactory(minutos=60) self.categoria_modelo = CategoriaAcompananteFactory() self.categoria_fraccion_tiempo_30 = CategoriaFraccionTiempoFactory( categoria=self.categoria_modelo, fraccion_tiempo=self.fraccion_tiempo_30, valor=100000) self.categoria_fraccion_tiempo_45 = CategoriaFraccionTiempoFactory( categoria=self.categoria_modelo, fraccion_tiempo=self.fraccion_tiempo_45, valor=150000) self.categoria_fraccion_tiempo_60 = CategoriaFraccionTiempoFactory( categoria=self.categoria_modelo, fraccion_tiempo=self.fraccion_tiempo_60, valor=200000) acompanante_base = AcompananteFactory.build( usuario=None, categoria_modelo=self.categoria_modelo) acompanante_base.pop('es_acompanante') acompanante_base.pop('usuario') self.acompanante = acompanante_crear(acompanante_base) self.acompanante_base_dos = AcompananteFactory.build( usuario=None, categoria_modelo=self.categoria_modelo) self.acompanante_base_dos.pop('es_acompanante') self.acompanante_base_dos.pop('usuario') self.acompanante_dos = acompanante_crear(self.acompanante_base_dos) self.acompanante, pin = tercero_set_new_pin( tercero_id=self.acompanante.id, raw_pin='0000') tercero_registra_entrada(tercero_id=self.acompanante.id, raw_pin='0000') self.acompanante_dos, pin = tercero_set_new_pin( tercero_id=self.acompanante_dos.id, raw_pin='0000') tercero_registra_entrada(tercero_id=self.acompanante_dos.id, raw_pin='0000') self.array_servicios = [ { 'tercero_id': self.acompanante.id, 'categoria_fraccion_tiempo_id': self.categoria_fraccion_tiempo_30.id }, { 'tercero_id': self.acompanante_dos.id, 'categoria_fraccion_tiempo_id': self.categoria_fraccion_tiempo_45.id }, { 'tercero_id': self.acompanante_dos.id, 'categoria_fraccion_tiempo_id': self.categoria_fraccion_tiempo_60.id }, { 'tercero_id': self.acompanante.id, 'categoria_fraccion_tiempo_id': self.categoria_fraccion_tiempo_60.id }, { 'tercero_id': self.acompanante.id, 'categoria_fraccion_tiempo_id': self.categoria_fraccion_tiempo_45.id }, ] self.array_servicios_id = [] for servicio in self.array_servicios: tercero_id = servicio.pop('tercero_id') categoria_fraccion_tiempo_id = servicio.pop( 'categoria_fraccion_tiempo_id') servicio_adicionado = servicio_crear_nuevo( habitacion_id=self.habitacion_uno.id, acompanante_id=tercero_id, categoria_fraccion_tiempo_id=categoria_fraccion_tiempo_id, usuario_pdv_id=self.colaborador.usuario.id) self.array_servicios_id.append(servicio_adicionado.id) servicios_a_iniciar = self.habitacion_uno.servicios.filter(estado=0) [ servicio_iniciar(servicio_id=servicio.id, usuario_pdv_id=self.colaborador.usuario.id) for servicio in servicios_a_iniciar.order_by('id').all() ]