def obtener_contrato_por_contrato_id(contrato_id: str) -> Contrato: contrato = Contrato.objects(id=contrato_id).first() return contrato
def obtener_contrato_por_contrato_id_y_correo_vendedor( contrato_id: str, correo_vendedor: str) -> Contrato: contrato = Contrato.objects( Q(id=contrato_id) & Q(correoVendedor=correo_vendedor)).first() return contrato
def obtener_contratos_por_correo_vendedor( correo_vendedor: str) -> List[Contrato]: contratos = Contrato.objects(correoVendedor=correo_vendedor) return contratos
def obtener_contratos_por_cliente_id(cliente_id: str) -> List[Contrato]: contratos = Contrato.objects(Q(activo=True) & Q(clienteId=cliente_id)).all() return contratos
def find_all_for_cliente_id(cliente_id: str) -> List[Contrato]: contratos = Contrato.objects(Q(activo=True) & Q(clienteId=cliente_id)) return contratos
def obtener_contratos() -> List[Contrato]: contratos = Contrato.objects() return contratos
def find_all_contratos_for_producto_id(producto_id: str) -> List[Contrato]: contratos = Contrato.objects(productoId=producto_id) return contratos
def get_contrato_by_id(contrato_id: str) -> Contrato: contrato = Contrato.objects(Q(activo=True) & Q(id=contrato_id))[0] return contrato
def get_last_contrato_for_producto_id(producto_id: str) -> Contrato: contrato = Contrato.objects(Q(activo=True) & Q(producto_id=producto_id))[0] return contrato
def find_all_contratos() -> List[Contrato]: contratos = Contrato.objects() return contratos
def crear_contrato(tipo: str, cliente_id: str, producto_id: str, correo_vendedor: str, dias_validez: int, pagos_programados: List[PagoProgramado]) -> Contrato: contrato = Contrato() contrato.tipo = tipo contrato.clienteId = cliente_id contrato.productoId = producto_id contrato.correoVendedor = correo_vendedor contrato.diasValidez = -1 if not dias_validez else dias_validez pagos_programados_objs = [] if pagos_programados: for pago_programado_dict in pagos_programados: pago_programado_obj = PagoProgramado() pago_programado_obj.fechaCompromisoPago = pago_programado_dict[ 'fechaCompromisoPago'] pago_programado_obj.monto = pago_programado_dict['monto'] pagos_programados_objs.append(pago_programado_obj) if len(pagos_programados_objs) > 0: formatear_pagos_programados(pagos_programados=pagos_programados_objs) contrato.pagosProgramados = pagos_programados_objs contrato.save() producto = obtener_producto_por_id(producto_id=producto_id) if not producto: contrato.delete() raise Exception('No se encontrĂ³ el producto - se destruye el contrato') if not contrato.tipo == 'CORRIDA': producto.estatus = map_estatus_tipo_de_contrato(contrato.tipo) producto.save() return contrato
def obtener_contratos_por_producto_id_y_correo_vendedor( producto_id: str, correo_vendedor: str) -> List[Contrato]: contratos = Contrato.objects( Q(productoId=producto_id) & Q(correoVendedor=correo_vendedor)).all() return contratos
def obtener_contratos_por_producto_id(producto_id: str) -> List[Contrato]: contratos = Contrato.objects(productoId=producto_id).all() return contratos