Guardar factura

This commit is contained in:
Juan Pablo Vial
2025-02-03 22:17:57 -03:00
parent 71615050f3
commit 59a28a353b
11 changed files with 296 additions and 122 deletions

View File

@ -41,13 +41,18 @@
},
facturas: () => {
document.getElementById(this.ids.facturas).innerHTML = this.venta.draw().facturas(this.formatters)
$('button.guardar').click(clickEvent => {
const index = clickEvent.currentTarget.getAttribute('data-index')
facturas.venta.save().factura({index: index-1})
})
this.venta.watch().facturas()
}
}
},
proporcion() {
if (this.venta.props.facturas.facturas.length === 0) {
return 1
}
return this.venta.props.facturas.facturas.reduce((sum, factura) => {
return sum + factura.props.proporcion
}, 0)
},
setup({ids}) {
this.ids = ids
this.venta = new Venta({
@ -77,7 +82,7 @@
new Unidad({
id: {{$unidad->id}},
tipo: '{{ucwords($unidad->proyectoTipoUnidad->tipoUnidad->descripcion)}}',
descripcion: '{{$unidad->descripcion}}',
descripcion: '{{ucwords($unidad->proyectoTipoUnidad->tipoUnidad->descripcion)}} {{ $unidad->descripcion }} (UF {{ number_format($unidad->precio($venta->currentEstado()->fecha)->valor, 2) }})',
prorrateo: {{$unidad->prorrateo}},
propiedad_unidad_id: {{$unidad->pu_id}},
valor: {{($unidad->valor > 0) ? $unidad->valor : $unidad->precio($venta->currentEstado()->fecha)->valor}}
@ -98,23 +103,100 @@
})
@if (count($facturas) > 0)
this.venta.props.uf = {
fecha: new Date('{{$facturas[0]->fechaUF->format('Y-m-d')}}'),
valor: {{$facturas[0]->valorUF}}
fecha: new Date('{{$facturas[0]->uf->fecha->format('Y-m-d')}}'),
valor: {{$facturas[0]->uf->valor}}
}
@foreach ($facturas as $factura)
this.venta.props.facturas[{{$factura->index-1}}] = new Factura(JSON.parse('{!! json_encode($factura) !!}'))
this.venta.props.facturas[{{$factura->index-1}}].props.saved = true
this.venta.props.propietarios[{{$factura->index-1}}] = new Propietario({
this.venta.props.facturas.facturas[{{$factura->index - 1}}] = new Factura({
id: {{ $factura->id }},
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}}',
direccion: '{{$factura->venta->proyecto()->direccion()->simple()}}',
comuna: '{{$factura->venta->proyecto()->direccion()->comuna->id}}',
},
receptor: {
rut: '{{$factura->cliente->rutCompleto()}}',
nombre: '{{$factura->cliente->nombreCompleto()}}',
direccion: '{{$factura->cliente->datos()->direccion->simple()}}',
comuna: '{{$factura->cliente->datos()->direccion->comuna->id}}',
},
terreno: {
@if ($terreno->fecha != null) fecha: new Date('{{$terreno->fecha->add(new DateInterval('P1D'))->format('Y-m-d')}}'),
@else fecha: null,
@endif
valor: {{ $factura->terreno}}
},
unidades: [
@foreach ($factura->unidades as $unidad)
{
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) }})',
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}}
}),
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) }})',
precio: {{ $unidad->precio }},
prorrateo: {{ $unidad->prorrateo }},
},
@endforeach
],
detalle: {
base: {{ $factura->base() }},
terreno: {{ $factura->terreno * $factura->proporcion }},
neto: {{ $factura->neto() }},
iva: {{ $factura->iva() }},
bruto: {{ $factura->bruto() }},
total: {{ $factura->total() }},
descuento: {{ array_reduce($factura->unidades, function($sum, $unidad) use ($factura) { return $sum + $unidad->prorrateo * $factura->proporcion; }, 0) }}
},
total: {
neto: {{ array_reduce($factura->unidades, function($sum, $unidad) {return $sum + $unidad->precio * $factura->proporcion;}, 0) }},
exento: {{ $factura->terreno * $factura->proporcion }},
iva: {{ $factura->iva() }},
total: {{ $factura->total() }}
},
saved: true,
uf: {
fecha: new Date('{{$factura->uf->fecha->format('Y-m-d')}}'),
valor: {{$factura->uf->valor}}
}
})
this.venta.props.facturas.facturas[{{$factura->index - 1}}].props.saved = true
this.venta.props.propietarios[{{$factura->index - 1}}] = new Propietario({
index: {{$factura->index}},
proporcion: {{$factura->proporcion}},
rut: '{{$factura->receptorRut}}',
nombre: '{{$factura->receptorNombre}}',
direccion: '{{$factura->receptorDireccion}}',
comuna: '{{$factura->receptorComuna}}',
rut: '{{$factura->cliente->rutCompleto()}}',
nombre: '{{$factura->cliente->nombreCompleto()}}',
direccion: '{{$factura->cliente->datos()->direccion->simple()}}',
comuna: '{{$factura->cliente->datos()->direccion->comuna->id}}',
fecha: new Date('{{$factura->fecha->format('Y-m-d')}}'),
})
@endforeach
@else
this.draw().venta()
if (this.proporcion() < 1) {
const p = 1 - this.proporcion()
const propietario = this.venta.add().propietario({
rut: '',
nombre: '',
proporcion: (p*100).toFixed(0)/100,
direccion: '',
comuna: '0'
})
document.getElementById('propietarios').innerHTML = this.venta.draw().propietarios()
document.getElementById('cantidad_propietarios').value = this.venta.props.propietarios.length
this.venta.add().factura(propietario)
this.draw().facturas()
}
@else
const propietario = this.venta.add().propietario({
proporcion: 1,
rut: '{{$venta->propietario()->rut()}}',
@ -122,11 +204,11 @@
direccion: '{{$venta->propietario()->datos->direccion->simple()}}',
comuna: '{{$venta->propietario()->datos->direccion->comuna->id}}'
})
this.draw().venta()
if (typeof propietario !== 'undefined') {
this.venta.add().factura(propietario)
}
@endif
this.draw().venta()
if (typeof propietario !== 'undefined') {
this.venta.add().factura(propietario)
}
this.draw().facturas()
}
}