2023-07-28 16:22:20 -04:00
< ? php
namespace Incoviba\Service ;
2024-07-03 15:13:13 -04:00
use Exception ;
2023-09-13 18:51:46 -03:00
use DateTimeImmutable ;
2025-03-03 14:57:22 -03:00
use DateMalformedStringException ;
2025-03-26 16:41:54 -03:00
use Incoviba\Exception\ServiceAction\ { Read , Update };
2024-04-29 18:35:44 -04:00
use Psr\Log\LoggerInterface ;
2024-02-13 17:59:46 -03:00
use Incoviba\Common\Ideal\Service ;
2023-08-08 23:53:49 -04:00
use Incoviba\Common\Implement ;
2023-07-28 16:22:20 -04:00
use Incoviba\Repository ;
2023-08-08 23:53:49 -04:00
use Incoviba\Model ;
2023-07-28 16:22:20 -04:00
2024-02-13 17:59:46 -03:00
class Venta extends Service
2023-07-28 16:22:20 -04:00
{
public function __construct (
2024-02-13 17:59:46 -03:00
LoggerInterface $logger ,
2023-07-28 16:22:20 -04:00
protected Repository\Venta $ventaRepository ,
2023-09-13 18:51:46 -03:00
protected Repository\Venta\EstadoVenta $estadoVentaRepository ,
protected Repository\Venta\TipoEstadoVenta $tipoEstadoVentaRepository ,
2023-12-20 08:44:49 -03:00
protected Repository\Venta\Credito $creditoRepository ,
protected Repository\Venta\Escritura $escrituraRepository ,
2024-01-18 15:18:07 -03:00
protected Repository\Venta\Pago $pagoRepository ,
protected Repository\Venta\EstadoPago $estadoPagoRepository ,
2024-03-13 14:38:44 -03:00
protected Venta\FormaPago $formaPagoService ,
2023-09-13 18:51:46 -03:00
protected Venta\Propietario $propietarioService ,
protected Venta\Propiedad $propiedadService ,
protected Venta\Pie $pieService ,
protected Venta\Subsidio $subsidioService ,
protected Venta\Credito $creditoService ,
protected Venta\BonoPie $bonoPieService ,
2023-12-21 19:15:11 -03:00
protected Venta\Pago $pagoService ,
2024-04-29 18:35:44 -04:00
protected Proyecto\Terreno $terrenoService ,
2024-07-03 15:13:13 -04:00
protected Money $moneyService ,
protected Valor $valorService
2024-02-13 17:59:46 -03:00
) {
parent :: __construct ( $logger );
}
2023-07-28 16:22:20 -04:00
2025-03-26 16:41:54 -03:00
/**
* @ param int $venta_id
* @ return Model\Venta
* @ throws Read
*/
2023-08-08 23:53:49 -04:00
public function getById ( int $venta_id ) : Model\Venta
{
2025-03-26 16:41:54 -03:00
try {
return $this -> process ( $this -> ventaRepository -> fetchById ( $venta_id ));
} catch ( Implement\Exception\EmptyResult $exception ) {
throw new Read ( __CLASS__ , $exception );
}
2023-08-08 23:53:49 -04:00
}
2023-07-28 16:22:20 -04:00
public function getByProyecto ( int $proyecto_id ) : array
{
$ventas = $this -> ventaRepository -> fetchByProyecto ( $proyecto_id );
2023-10-19 18:20:37 -03:00
return array_map ([ $this , 'process' ], $ventas );
2023-09-28 21:05:16 -03:00
}
public function getActivaByProyecto ( int $proyecto_id ) : array
{
$ventas = $this -> ventaRepository -> fetchActivaByProyecto ( $proyecto_id );
2023-10-19 18:20:37 -03:00
return array_map ([ $this , 'process' ], $ventas );
2023-07-28 16:22:20 -04:00
}
2024-04-19 23:19:35 -04:00
public function getIdsByProyecto ( int $proyecto_id ) : array
{
return $this -> ventaRepository -> fetchIdsByProyecto ( $proyecto_id );
}
2023-08-08 23:53:49 -04:00
public function getByProyectoAndUnidad ( string $proyecto_nombre , int $unidad_descripcion ) : Model\Venta
{
$venta = $this -> ventaRepository -> fetchByProyectoAndUnidad ( $proyecto_nombre , $unidad_descripcion );
2023-09-28 21:05:16 -03:00
return $this -> process ( $venta );
}
2025-04-21 19:40:10 -04:00
/**
* @ param string $unidad
* @ param string $tipo
* @ return array
* @ throws Read
*/
2023-09-28 21:05:16 -03:00
public function getByUnidad ( string $unidad , string $tipo ) : array
{
2025-04-21 19:40:10 -04:00
try {
$ventas = $this -> ventaRepository -> fetchByUnidad ( $unidad , $tipo );
return array_map ([ $this , 'process' ], $ventas );
} catch ( Implement\Exception\EmptyResult $exception ) {
throw new Read ( __CLASS__ , $exception );
}
2023-09-28 21:05:16 -03:00
}
2025-04-21 19:40:10 -04:00
/**
* @ param int $unidad_id
* @ return Model\Venta
* @ throws Read
*/
2024-02-13 17:59:46 -03:00
public function getByUnidadId ( int $unidad_id ) : Model\Venta
{
2025-04-21 19:40:10 -04:00
try {
return $this -> process ( $this -> ventaRepository -> fetchByUnidadId ( $unidad_id ));
} catch ( Implement\Exception\EmptyResult $exception ) {
throw new Read ( __CLASS__ , $exception );
}
2024-02-13 17:59:46 -03:00
}
2023-09-28 21:05:16 -03:00
public function getByPropietario ( string $propietario ) : array
{
$ventas = $this -> ventaRepository -> fetchByPropietario ( $propietario );
2023-10-19 18:20:37 -03:00
return array_map ([ $this , 'process' ], $ventas );
2023-09-28 21:05:16 -03:00
}
public function getByPrecio ( string $precio ) : array
{
$ventas = $this -> ventaRepository -> fetchByPrecio ( $precio );
2023-10-19 18:20:37 -03:00
return array_map ([ $this , 'process' ], $ventas );
}
public function getEscriturasByProyecto ( int $proyecto_id ) : array
{
$ventas = $this -> ventaRepository -> fetchEscriturasByProyecto ( $proyecto_id );
return array_map ([ $this , 'process' ], $ventas );
2023-09-28 21:05:16 -03:00
}
2024-02-28 21:44:37 -03:00
public function getByIdForSearch ( int $venta_id ) : array
{
return $this -> ventaRepository -> fetchByIdForSearch ( $venta_id );
}
2024-03-13 16:17:14 -03:00
public function getByIdForList ( int $venta_id ) : array
{
return $this -> ventaRepository -> fetchByIdForList ( $venta_id );
}
2024-03-26 13:21:47 -03:00
public function getByPie ( int $pie_id ) : Model\Venta
{
return $this -> process ( $this -> ventaRepository -> fetchByPie ( $pie_id ));
}
2024-04-29 18:35:44 -04:00
public function getFacturacionById ( int $venta_id ) : array
{
$venta = $this -> getById ( $venta_id );
2025-03-03 14:57:22 -03:00
$escritura = ( in_array ( $venta -> currentEstado () -> tipoEstadoVenta -> descripcion , [ 'escriturando' , 'firmado por inmobiliaria' ])) ? $venta -> currentEstado () -> fecha : $venta -> fecha ;
2024-04-29 18:35:44 -04:00
$data = [
'id' => $venta -> id ,
'fecha' => $venta -> fecha -> format ( 'Y-m-d' ),
'valor' => $venta -> valor ,
'escritura' => $escritura -> format ( 'Y-m-d' ),
'unidades' => [],
];
foreach ( $venta -> propiedad () -> unidades as $unidad ) {
$data [ 'unidades' ] [] = [
'id' => $unidad -> id ,
'tipo' => ucwords ( $unidad -> proyectoTipoUnidad -> tipoUnidad -> descripcion ),
'descripcion' => $unidad -> descripcion ,
'prorrateo' => $unidad -> prorrateo ,
2024-05-16 21:23:24 -04:00
'valor' => $unidad -> valor ,
2024-04-29 18:35:44 -04:00
'precio' => ( isset ( $unidad -> currentPrecio )) ? $unidad -> currentPrecio -> valor : 0
];
}
$principal = $venta -> propiedad () -> principal ();
$data [ 'principal' ] = [
'id' => $principal -> id ,
'descripcion' => $principal -> descripcion
];
return $data ;
}
2023-09-28 21:05:16 -03:00
protected function process ( Model\Venta $venta ) : Model\Venta
{
2024-03-13 14:38:44 -03:00
$venta -> addFactory ( 'formaPago' , ( new Implement\Repository\Factory ())
-> setCallable ([ $this -> formaPagoService , 'getByVenta' ])
-> setArgs ([ 'venta_id' => $venta -> id ]));
2023-10-13 10:45:21 -03:00
$venta -> addFactory ( 'estados' , ( new Implement\Repository\Factory ())
-> setCallable ([ $this -> estadoVentaRepository , 'fetchByVenta' ])
-> setArgs ([ $venta -> id ]));
$venta -> addFactory ( 'currentEstado' , ( new Implement\Repository\Factory ())
-> setCallable ([ $this -> estadoVentaRepository , 'fetchCurrentByVenta' ])
-> setArgs ([ $venta -> id ]));
2023-08-08 23:53:49 -04:00
return $venta ;
}
2023-09-13 18:51:46 -03:00
2024-07-03 15:13:13 -04:00
/**
* @ throws Exception
*/
2023-11-23 00:53:49 -03:00
public function add ( array $data ) : Model\Venta
2023-09-13 18:51:46 -03:00
{
$fecha = new DateTimeImmutable ( $data [ 'fecha_venta' ]);
$data [ 'uf' ] = $this -> moneyService -> getUF ( $fecha );
$propietario = $this -> addPropietario ( $data );
$propiedad = $this -> addPropiedad ( $data );
2024-03-13 22:43:37 -03:00
$formaPago = $this -> addFormaPago ( $data );
2023-09-13 18:51:46 -03:00
$venta_data = [
'propietario' => $propietario -> rut ,
'propiedad' => $propiedad -> id ,
'fecha' => $fecha -> format ( 'Y-m-d' ),
2024-07-03 15:13:13 -04:00
'valor_uf' => $this -> valorService -> clean ( $data [ 'valor' ]),
2023-09-13 18:51:46 -03:00
'fecha_ingreso' => ( new DateTimeImmutable ()) -> format ( 'Y-m-d' ),
'uf' => $data [ 'uf' ]
];
$map = [ 'pie' , 'subsidio' , 'credito' , 'bono_pie' ];
foreach ( $map as $field ) {
$name = lcfirst ( str_replace ( ' ' , '' , ucwords ( str_replace ( '_' , ' ' , $field ))));
2024-03-13 22:43:37 -03:00
if ( isset ( $formaPago -> { $name })) {
$venta_data [ $field ] = $formaPago -> { $name } -> id ;
2023-09-13 18:51:46 -03:00
}
}
2024-01-19 23:10:20 -03:00
try {
return $this -> ventaRepository -> fetchByPropietarioAndPropiedad ( $propietario -> rut , $propiedad -> id );
} catch ( Implement\Exception\EmptyResult ) {
$venta = $this -> ventaRepository -> create ( $venta_data );
2024-03-13 22:43:37 -03:00
$venta -> setFormaPago ( $formaPago );
2024-01-19 23:10:20 -03:00
$venta = $this -> ventaRepository -> save ( $venta );
2023-11-23 00:53:49 -03:00
2024-01-19 23:10:20 -03:00
$tipoEstado = $this -> tipoEstadoVentaRepository -> fetchByDescripcion ( 'vigente' );
$estado = $this -> estadoVentaRepository -> create ([
'venta' => $venta -> id ,
'estado' => $tipoEstado -> id ,
'fecha' => $venta -> fecha -> format ( 'Y-m-d' )
]);
$this -> estadoVentaRepository -> save ( $estado );
return $venta ;
}
2023-09-13 18:51:46 -03:00
}
protected function addPropietario ( array $data ) : Model\Venta\Propietario
{
if ( isset ( $data [ 'natural_uno' ])) {
if ( isset ( $data [ 'natural_multiple' ])) {
return $this -> addDosPropietarios ( $data );
}
return $this -> addUnPropietario ( $data );
}
return $this -> addSociedad ( $data );
}
protected function addUnPropietario ( array $data ) : Model\Venta\Propietario
{
$fields = array_fill_keys ([
'rut' ,
'nombres' ,
'apellido_paterno' ,
'apellido_materno' ,
'calle' ,
'numero' ,
'extra' ,
'comuna'
], 0 );
$filtered_data = array_intersect_key ( $data , $fields );
return $this -> propietarioService -> addPropietario ( $filtered_data );
}
protected function addDosPropietarios ( array $data ) : Model\Venta\Propietario
{
$fields = array_fill_keys ([
'rut_otro' ,
'nombres_otro' ,
'apellido_paterno_otro' ,
'apellido_materno_otro' ,
'calle_otro' ,
'numero_otro' ,
'extra_otro' ,
'comuna_otro'
], 0 );
$filtered_data = array_intersect_key ( $data , $fields );
$mapped_data = array_combine ([
'rut' ,
'nombres' ,
'apellido_paterno' ,
'apellido_materno' ,
'calle' ,
'numero' ,
'extra' ,
'comuna'
], $filtered_data );
$otro = $this -> propietarioService -> addPropietario ( $mapped_data );
$data [ 'otro' ] = $otro -> rut ;
$fields = array_fill_keys ([
'rut' ,
'nombres' ,
'apellido_paterno' ,
'apellido_materno' ,
'calle' ,
'numero' ,
'extra' ,
'comuna' ,
'otro'
], 0 );
$filtered_data = array_intersect_key ( $data , $fields );
return $this -> propietarioService -> addPropietario ( $filtered_data );
}
protected function addSociedad ( array $data ) : Model\Venta\Propietario
{
$representante = $this -> addUnPropietario ( $data );
$data [ 'representante' ] = $representante -> rut ;
$fields = array_fill_keys ([
'rut_sociedad' ,
'razon_social' ,
'calle_comercial' ,
'numero_comercial' ,
'extra_comercial' ,
'comuna_comercial' ,
'representante'
], 0 );
$filtered_data = array_intersect_key ( $data , $fields );
$mapped_data = array_combine ([
'rut' ,
'razon_social' ,
'calle' ,
'numero' ,
'extra' ,
'comuna' ,
'representante'
], $filtered_data );
return $this -> propietarioService -> addSociedad ( $mapped_data );
}
protected function addPropiedad ( array $data ) : Model\Venta\Propiedad
{
$ids = array_filter ( $data , function ( $key ) {
2024-03-13 22:43:37 -03:00
return str_starts_with ( $key , 'unidad' );
2023-09-13 18:51:46 -03:00
}, ARRAY_FILTER_USE_KEY );
return $this -> propiedadService -> addPropiedad ( $ids );
}
protected function addFormaPago ( array $data ) : Model\Venta\FormaPago
{
2024-03-13 14:38:44 -03:00
return $this -> formaPagoService -> add ( $data );
2023-09-13 18:51:46 -03:00
}
2024-07-03 15:13:13 -04:00
2025-03-26 16:41:54 -03:00
/**
* @ param Model\Venta $venta
* @ param array $data
* @ return Model\Venta
* @ throws Update
*/
public function edit ( Model\Venta $venta , array $data ) : Model\Venta
{
try {
$filteredData = $this -> ventaRepository -> filterData ( $data );
return $this -> ventaRepository -> edit ( $venta , $filteredData );
} catch ( Implement\Exception\EmptyResult $exception ) {
throw new Update ( __CLASS__ , $exception );
}
}
2023-12-21 18:45:47 -03:00
protected function addEstado ( Model\Venta $venta , Model\Venta\TipoEstadoVenta $tipoEstadoVenta , array $data ) : void
{
2025-02-24 14:02:12 -03:00
try {
$fecha = new DateTimeImmutable ( $data [ 'fecha' ]);
2025-03-03 14:57:22 -03:00
} catch ( DateMalformedStringException ) {
2025-02-24 14:02:12 -03:00
$fecha = new DateTimeImmutable ();
}
2023-12-21 18:45:47 -03:00
$estadoData = [
'venta' => $venta -> id ,
'estado' => $tipoEstadoVenta -> id ,
'fecha' => $fecha -> format ( 'Y-m-d' )
];
$estado = $this -> estadoVentaRepository -> create ( $estadoData );
$this -> estadoVentaRepository -> save ( $estado );
}
public function escriturar ( Model\Venta $venta , array $data ) : bool
{
if ( in_array ( $venta -> currentEstado () -> tipoEstadoVenta -> descripcion , [ 'escriturando' , 'firmado por inmobiliaria' , 'archivado' ])) {
return true ;
}
try {
if ( $this -> validarData ( $data , [ 'fecha_reajuste' , 'valor_reajuste' ])) {
$this -> reajustarEscritura ( $venta , $data );
}
if ( $this -> validarData ( $data , [ 'fecha_pago' ], [ 'valor_pago_pesos' , 'valor_pago_ufs' ])) {
$this -> abonoEscritura ( $venta , $data );
}
2024-01-18 15:18:07 -03:00
if ( $this -> validarData ( $data , [ 'banco_credito' ], [ 'valor_credito' ])) {
$this -> editCredito ( $venta , $data );
2023-12-21 18:45:47 -03:00
}
if ( $this -> validarData ( $data , [ 'valor_subsidio' , 'valor_ahorro' , 'fecha' ])) {
$this -> subsidioEscritura ( $venta , $data );
}
$tipoEstado = $this -> tipoEstadoVentaRepository -> fetchByDescripcion ( 'escriturando' );
$this -> addEstado ( $venta , $tipoEstado , [ 'fecha' => $data [ 'fecha' ]]);
return true ;
} catch ( Implement\Exception\EmptyResult ) {
return false ;
}
}
protected function validarData ( array $data , array $keys , array $optionals = []) : bool
{
foreach ( $keys as $key ) {
if ( ! isset ( $data [ $key ])) {
return false ;
}
if ( $data [ $key ] === '' ) {
return false ;
}
}
foreach ( $optionals as $key ) {
if ( isset ( $data [ $key ]) and $data [ $key ] !== '' ) {
break ;
}
}
return true ;
}
2024-07-03 15:13:13 -04:00
2023-12-21 18:45:47 -03:00
protected function reajustarEscritura ( Model\Venta $venta , array $data ) : void
{
2025-02-24 14:02:12 -03:00
try {
$fecha = new DateTimeImmutable ( $data [ 'fecha_reajuste' ]);
2025-03-03 14:57:22 -03:00
} catch ( DateMalformedStringException ) {
2025-02-24 14:02:12 -03:00
$fecha = new DateTimeImmutable ();
}
2023-12-21 18:45:47 -03:00
$reajusteData = [
2024-07-03 15:13:13 -04:00
'valor' => $this -> valorService -> clean ( $data [ 'valor_reajuste' ]),
2023-12-21 18:45:47 -03:00
'fecha' => $fecha -> format ( 'Y-m-d' )
];
$pie = $venta -> formaPago () -> pie ;
$this -> pieService -> reajustar ( $pie , $reajusteData );
}
2024-07-03 15:13:13 -04:00
2023-12-21 18:45:47 -03:00
protected function abonoEscritura ( Model\Venta $venta , array $data ) : void
{
2025-02-24 14:02:12 -03:00
try {
$fecha = new DateTimeImmutable ( $data [ 'fecha_pago' ]);
2025-03-03 14:57:22 -03:00
} catch ( DateMalformedStringException ) {
2025-02-24 14:02:12 -03:00
$fecha = new DateTimeImmutable ();
}
2023-12-21 18:45:47 -03:00
$uf = $this -> moneyService -> getUF ( $fecha );
2024-07-03 15:13:13 -04:00
$valor = $data [ 'valor_pago_ufs' ] !== '' ? $this -> valorService -> clean ( $data [ 'valor_pago_ufs' ]) * $uf : $this -> valorService -> clean ( $data [ 'valor_pago_pesos' ]);
2024-01-18 15:18:07 -03:00
$pagoData = [
2023-12-21 18:45:47 -03:00
'valor' => $valor ,
'fecha' => $fecha -> format ( 'Y-m-d' ),
'uf' => $uf
];
2024-01-18 15:18:07 -03:00
$pago = $this -> pagoService -> add ( $pagoData );
$escrituraData = [
'valor' => $valor ,
'fecha' => $fecha -> format ( 'Y-m-d' ),
'uf' => $uf ,
'pago' => $pago -> id
];
2023-12-21 18:45:47 -03:00
$escritura = $this -> escrituraRepository -> create ( $escrituraData );
$escritura = $this -> escrituraRepository -> save ( $escritura );
$this -> ventaRepository -> edit ( $venta , [ 'escritura' => $escritura -> id ]);
}
2024-07-03 15:13:13 -04:00
2023-12-21 18:45:47 -03:00
protected function subsidioEscritura ( Model\Venta $venta , array $data ) : void
{
2025-02-24 14:02:12 -03:00
try {
$fecha = new DateTimeImmutable ( $data [ 'fecha' ]);
2025-03-03 14:57:22 -03:00
} catch ( DateMalformedStringException ) {
2025-02-24 14:02:12 -03:00
$fecha = new DateTimeImmutable ();
}
2023-12-21 18:45:47 -03:00
$uf = $this -> moneyService -> getUF ( $fecha );
$subsidioData = [
'fecha_venta' => $fecha -> format ( 'Y-m-d' ),
2024-07-03 15:13:13 -04:00
'ahorro' => $this -> valorService -> clean ( $data [ 'valor_ahorro' ]),
'subsidio' => $this -> valorService -> clean ( $data [ 'valor_subsidio' ]),
2023-12-21 18:45:47 -03:00
'uf' => $uf
];
2025-03-03 14:57:22 -03:00
$formaPago = $this -> addFormaPago ( $subsidioData );
$this -> ventaRepository -> edit ( $venta , [ 'subsidio' => $formaPago -> subsidio -> id ]);
2023-12-21 18:45:47 -03:00
}
2024-07-03 15:13:13 -04:00
2024-01-18 15:18:07 -03:00
protected function editCredito ( Model\Venta $venta , array $data ) : void
{
2025-02-24 14:02:12 -03:00
try {
$fecha = new DateTimeImmutable ( $data [ 'fecha' ]);
2025-03-03 14:57:22 -03:00
} catch ( DateMalformedStringException ) {
2025-02-24 14:02:12 -03:00
$fecha = new DateTimeImmutable ();
}
2024-01-18 15:18:07 -03:00
$uf = $this -> moneyService -> getUF ( $fecha );
2024-07-03 15:13:13 -04:00
$valor = $this -> valorService -> clean ( $data [ 'valor_credito' ]) * $uf ;
2024-01-18 15:18:07 -03:00
if ( $venta -> formaPago () -> credito === null ) {
2025-02-24 14:02:12 -03:00
if ( $data [ 'valor_credito' ] === 0 ) {
return ;
}
2024-01-18 15:18:07 -03:00
$pagoData = [
'valor' => $valor ,
'fecha' => $fecha -> format ( 'Y-m-d' ),
'uf' => $uf
];
$pago = $this -> pagoService -> add ( $pagoData );
$creditoData = [
'banco' => $data [ 'banco_credito' ],
'valor' => $valor ,
'pago' => $pago -> id
];
$credito = $this -> creditoRepository -> create ( $creditoData );
$credito = $this -> creditoRepository -> save ( $credito );
$this -> ventaRepository -> edit ( $venta , [ 'credito' => $credito -> id ]);
return ;
}
2025-02-24 14:02:12 -03:00
if ( $data [ 'valor_credito' ] === 0 ) {
$this -> pagoRepository -> remove ( $venta -> formaPago () -> credito -> pago );
$this -> creditoRepository -> remove ( $venta -> formaPago () -> credito );
$this -> ventaRepository -> edit ( $venta , [ 'credito' => null ]);
return ;
}
2024-01-18 15:18:07 -03:00
$this -> pagoRepository -> edit ( $venta -> formaPago () -> credito -> pago , [
'valor' => $valor ,
'banco' => $data [ 'banco_credito' ],
'uf' => $uf
]);
$this -> estadoPagoRepository -> edit ( $venta -> formaPago () -> credito -> pago -> currentEstado , [
'fecha' => $fecha -> format ( 'Y-m-d' )
]);
$this -> creditoRepository -> edit ( $venta -> formaPago () -> credito , [
'valor' => $valor ,
'fecha' => $fecha -> format ( 'Y-m-d' ),
'uf' => $uf
]);
}
2023-12-21 18:45:47 -03:00
public function desistir ( Model\Venta $venta , array $data ) : bool
{
try {
if ( $this -> validarData ( $data , [ 'fecha' , 'devolucion' ])) {
2024-07-03 15:13:13 -04:00
$pago = $this -> pagoService -> add ([ 'fecha' => $data [ 'fecha' ], 'valor' => $this -> valorService -> clean ( $data [ 'devolucion' ])]);
2023-12-21 18:45:47 -03:00
$this -> ventaRepository -> edit ( $venta , [ 'resciliacion' => $pago -> id ]);
}
$tipoEstado = $this -> tipoEstadoVentaRepository -> fetchByDescripcion ( 'desistida' );
$this -> addEstado ( $venta , $tipoEstado , [ 'fecha' => $data [ 'fecha' ]]);
return true ;
} catch ( Implement\Exception\EmptyResult ) {
return false ;
}
}
2023-12-22 12:52:04 -03:00
public function insistir ( Model\Venta $venta ) : bool
{
try {
$pago = $venta -> resciliacion ();
$this -> pagoService -> delete ( $pago );
$estado = $venta -> currentEstado ();
$this -> estadoVentaRepository -> remove ( $estado );
$this -> ventaRepository -> edit ( $venta , [ 'resciliacion' => null ]);
return true ;
} catch ( Implement\Exception\EmptyResult ) {
return false ;
}
}
2023-07-28 16:22:20 -04:00
}