diff --git a/app/resources/views/ventas/facturacion/show.blade.php b/app/resources/views/ventas/facturacion/show.blade.php index d9bcaba..b47ece3 100644 --- a/app/resources/views/ventas/facturacion/show.blade.php +++ b/app/resources/views/ventas/facturacion/show.blade.php @@ -82,7 +82,7 @@ new Unidad({ id: {{$unidad->id}}, tipo: '{{ucwords($unidad->proyectoTipoUnidad->tipoUnidad->descripcion)}}', - descripcion: '{{ucwords($unidad->proyectoTipoUnidad->tipoUnidad->descripcion)}} {{ $unidad->descripcion }} (UF {{ number_format($unidad->precio($venta->currentEstado()->fecha)->valor, 2) }})', + descripcion: '{{ $unidad->descripcion }}', prorrateo: {{$unidad->prorrateo}}, propiedad_unidad_id: {{$unidad->pu_id}}, valor: {{($unidad->valor > 0) ? $unidad->valor : $unidad->precio($venta->currentEstado()->fecha)->valor}} @@ -96,7 +96,7 @@ @if ($terreno->fecha != null) fecha: new Date('{{$terreno->fecha->add(new DateInterval('P1D'))->format('Y-m-d')}}'), @else fecha: null, @endif - valor: {{($terreno->valor ?? 0) * (1+$ipc)}} + valor: {{($terreno->valor ?? 0) * (1 + $ipc)}} }, facturas: [] } @@ -112,7 +112,6 @@ venta: this.venta.props, index: {{$factura->index}}, fecha: new Date('{{$factura->fecha->format('Y-m-d')}}'), - proporcion: {{$factura->proporcion}}, emisor: { rut: '{{$factura->venta->proyecto()->inmobiliaria()->rut}}', nombre: '{{$factura->venta->proyecto()->inmobiliaria()->razon}}', @@ -137,7 +136,7 @@ unidad: new Unidad({ id: {{$unidad->unidad->id}}, tipo: '{{ucwords($unidad->unidad->proyectoTipoUnidad->tipoUnidad->descripcion)}}', - descripcion: '{{ucwords($unidad->unidad->proyectoTipoUnidad->tipoUnidad->descripcion)}} {{ $unidad->unidad->descripcion }} (UF {{ number_format(array_values(array_filter($venta->propiedad()->unidades, function($uni) use ($unidad, $factura) {return $uni->id === $unidad->unidad->id;}))[0]->precio($venta->currentEstado()->fecha)->valor * $factura->proporcion, 2) }})', + descripcion: '{{ $unidad->unidad->descripcion }}', prorrateo: {{$unidad->prorrateo}}, propiedad_unidad_id: {{ array_values(array_filter($venta->propiedad()->unidades, function($uni) use ($unidad) {return $uni->id === $unidad->unidad->id;}))[0]->pu_id }}, valor: {{$unidad->precio}} @@ -150,7 +149,7 @@ ], detalle: { base: {{ $factura->base() }}, - terreno: {{ $factura->terreno * $factura->proporcion }}, + terreno: {{ $factura->terreno * $factura->proporcion * $factura->prorrateo }}, neto: {{ $factura->neto() }}, iva: {{ $factura->iva() }}, bruto: {{ $factura->bruto() }}, diff --git a/app/resources/views/ventas/facturacion/show/factura.blade.php b/app/resources/views/ventas/facturacion/show/factura.blade.php index b039f68..f77ca5f 100644 --- a/app/resources/views/ventas/facturacion/show/factura.blade.php +++ b/app/resources/views/ventas/facturacion/show/factura.blade.php @@ -5,6 +5,10 @@ venta: null, index: 0, proporcion: 0, + terreno: { + fecha: null, + valor: 0 + }, emisor: { rut: '', nombre: '', @@ -50,6 +54,9 @@ get saved() { return this.props.id > 0 } + get prorrateo() { + return this.props.unidades.reduce((sum, unidad) => sum + unidad.prorrateo, 0) + } draw() { return { divider: () => { @@ -186,7 +193,7 @@ return unidadesData.join("\n") }, unidad: ({unidad, no, classes, formatters}) => { - const descuento = this.props.detalle.terreno * unidad.prorrateo + const descuento = this.props.terreno.valor * unidad.prorrateo * this.props.proporcion const bruto = unidad.precio - descuento const neto = bruto / 1.19 const data = [ @@ -240,6 +247,20 @@ return row.join('') }, totales: ({formatters}) => { + let tooltips = { + neto: null, + iva: null, + total: null + } + if (this.props.total.neto !== this.props.detalle.neto) { + tooltips.neto = ` data-tooltip="No coinciden netos! Promesa: ${formatters.pesos.format(this.props.detalle.neto)} - Unidades: ${formatters.pesos.format(this.props.total.neto)}"` + } + if (this.props.total.iva !== this.props.detalle.iva) { + tooltips.iva = ` data-tooltip="No coinciden ivas! Promesa: ${formatters.pesos.format(this.props.detalle.iva)} - Unidades: ${formatters.pesos.format(this.props.total.iva)}"` + } + if (this.props.total.total !== this.props.detalle.total) { + tooltips.total = ` data-tooltip="No coinciden totales! Promesa: ${formatters.pesos.format(this.props.detalle.total)} - Unidades: ${formatters.pesos.format(this.props.total.total)}"` + } return [ '
', '
', @@ -253,7 +274,7 @@ '', '', 'Monto Neto', - ''+formatters.pesos.format(this.props.total.neto)+'', + `${formatters.pesos.format(this.props.total.neto)}`, '', '', 'Monto Exento', @@ -261,11 +282,11 @@ '', '', '19% IVA', - ''+formatters.pesos.format(this.props.total.iva)+'', + `${formatters.pesos.format(this.props.total.iva)}`, '', '', 'Monto Total', - ''+formatters.pesos.format(this.props.total.total)+'', + `${formatters.pesos.format(this.props.total.total)}`, '', '', '', @@ -364,12 +385,10 @@ this.props.uf.valor = venta.props.uf.valor this.update().propietario(venta.props.propietarios.find(propietario => propietario.props.index === this.props.index)) this.update().unidades(venta.props.unidades) - this.props.total.total = this.props.detalle.total = venta.props.valor * this.props.proporcion * venta.props.uf.valor - this.update().detalle(venta.props.facturas.terreno.valor * venta.prorrateo) - this.props.total.exento = this.props.detalle.terreno - this.props.total.iva = this.props.detalle.iva - this.props.total.neto = this.props.unidades.reduce((sum, unidad) => sum + unidad.precio, 0) + this.props.detalle.total = venta.props.valor * this.props.proporcion * venta.props.uf.valor + this.update().detalle(venta.props.facturas.terreno.valor * this.prorrateo) this.props.detalle.descuento = venta.prorrateo * this.props.proporcion + this.update().total() }, detalle: terreno => { this.props.detalle.terreno = terreno * this.props.proporcion @@ -378,14 +397,20 @@ this.props.detalle.iva = this.props.detalle.neto * 0.19 this.props.detalle.base = this.props.detalle.neto + this.props.detalle.terreno }, + total: () => { + this.props.total.exento = this.props.detalle.terreno + this.props.total.neto = (this.props.unidades.reduce((sum, unidad) => sum + unidad.precio, 0) - this.props.total.exento) / 1.19 + this.props.total.iva = this.props.total.neto * 0.19 + this.props.total.total = this.props.total.neto + this.props.total.iva + this.props.total.exento + }, unidades: unidades => { this.props.unidades = [] unidades.forEach(unidad => { this.props.unidades.push({ unidad: unidad, descripcion: unidad.changeDescripcion(this.props.proporcion || 1), - precio: unidad.props.valor * this.props.uf.valor * this.props.proporcion, - prorrateo: unidad.props.prorrateo * this.props.proporcion + precio: unidad.props.valor * this.props.uf.valor, + prorrateo: unidad.props.prorrateo }) }) }, diff --git a/app/resources/views/ventas/facturacion/show/unidad.blade.php b/app/resources/views/ventas/facturacion/show/unidad.blade.php index af57b94..e2aa9b6 100644 --- a/app/resources/views/ventas/facturacion/show/unidad.blade.php +++ b/app/resources/views/ventas/facturacion/show/unidad.blade.php @@ -14,7 +14,7 @@ } changeDescripcion(proporcion = 1) { - return this.descripcion = [this.props.tipo, this.props.descripcion, `[UF ${facturas.formatters.ufs.format(this.props.valor * proporcion)}]`].join(' ') + return this.descripcion = [this.props.tipo, this.props.descripcion, `(UF ${facturas.formatters.ufs.format(this.props.valor * proporcion)})`].join(' ') } update() { return { diff --git a/app/resources/views/ventas/facturacion/show/venta.blade.php b/app/resources/views/ventas/facturacion/show/venta.blade.php index e3638f5..7fd5da0 100644 --- a/app/resources/views/ventas/facturacion/show/venta.blade.php +++ b/app/resources/views/ventas/facturacion/show/venta.blade.php @@ -403,6 +403,7 @@ venta: this.props, index: propietario.props.index, proporcion: propietario.props.proporcion, + terreno: this.props.facturas.terreno, emisor: { rut: this.props.inmobiliaria.rut, nombre: this.props.inmobiliaria.nombre,