Guardar factura
This commit is contained in:
@ -89,11 +89,11 @@
|
||||
rut: () => {
|
||||
return [
|
||||
'<div class="four wide column">',
|
||||
'<div class="ui center aligned red segment">',
|
||||
'<div class="ui center aligned orange segment">',
|
||||
'<strong>',
|
||||
`RUT:${this.props.emisor.rut.toUpperCase()}<br/>`,
|
||||
'FACTURA ELECTRÓNICA<br/>',
|
||||
`N° #${this.props.venta.id}${this.props.index}`,
|
||||
`<span class="ui red text">N° ${this.props.venta.id}${this.props.index}</span>`,
|
||||
'</strong>',
|
||||
'</div>',
|
||||
'</div>'
|
||||
@ -128,34 +128,34 @@
|
||||
table: ({formatters}) => {
|
||||
return [
|
||||
'<div class="row">',
|
||||
'<table class="ui celled table">',
|
||||
'<thead>',
|
||||
'<tr class="grey">',
|
||||
'<th class="center aligned" colspan="6">DETALLES</th>',
|
||||
'</tr>',
|
||||
'<tr class="grey">',
|
||||
'<th>N°</th>',
|
||||
'<th class="center aligned">Descripción</th>',
|
||||
'<th class="center aligned">Cant/Unidad</th>',
|
||||
'<th class="center aligned">Prec. Unit.</th>',
|
||||
'<th class="center aligned">Ind</th>',
|
||||
'<th class="center aligned">Total</th>',
|
||||
'</tr>',
|
||||
'</thead>',
|
||||
'<tbody>',
|
||||
this.draw().unidades({formatters}),
|
||||
'</tbody>',
|
||||
'<tfoot>',
|
||||
'<tr>',
|
||||
'<td colspan="6">',
|
||||
'<br />',
|
||||
'<br />',
|
||||
'<br />',
|
||||
'<br />',
|
||||
'</td>',
|
||||
'</tr>',
|
||||
'</tfoot>',
|
||||
'</table>',
|
||||
'<table class="ui celled table">',
|
||||
'<thead>',
|
||||
'<tr class="grey">',
|
||||
'<th class="center aligned" colspan="6">DETALLES</th>',
|
||||
'</tr>',
|
||||
'<tr class="grey">',
|
||||
'<th>N°</th>',
|
||||
'<th class="center aligned">Descripción</th>',
|
||||
'<th class="center aligned">Cant/Unidad</th>',
|
||||
'<th class="center aligned">Prec. Unit.</th>',
|
||||
'<th class="center aligned">Ind</th>',
|
||||
'<th class="center aligned">Total</th>',
|
||||
'</tr>',
|
||||
'</thead>',
|
||||
'<tbody>',
|
||||
this.draw().unidades({formatters}),
|
||||
'</tbody>',
|
||||
'<tfoot>',
|
||||
'<tr>',
|
||||
'<td colspan="6">',
|
||||
'<br />',
|
||||
'<br />',
|
||||
'<br />',
|
||||
'<br />',
|
||||
'</td>',
|
||||
'</tr>',
|
||||
'</tfoot>',
|
||||
'</table>',
|
||||
'</div>'
|
||||
].join("\n")
|
||||
},
|
||||
@ -279,7 +279,7 @@
|
||||
'<div class="row">',
|
||||
'<div class="fourteen wide column"></div>',
|
||||
'<div class="two wide center aligned column">',
|
||||
'<div class="ui green message">',
|
||||
`<div class="ui green message guardar" data-index="${this.props.index}">`,
|
||||
'<i class="check icon"></i>',
|
||||
'Guardada',
|
||||
'</div>',
|
||||
@ -300,14 +300,30 @@
|
||||
watch() {
|
||||
return {
|
||||
save: () => {
|
||||
document.querySelector(`button[data-index="${this.props.index}"]`).addEventListener('click', clickEvent => {
|
||||
document.querySelector(`.guardar[data-index="${this.props.index}"]`).addEventListener('click', clickEvent => {
|
||||
const index = clickEvent.currentTarget.getAttribute('data-index')
|
||||
facturas.save().factura(index)
|
||||
facturas.venta.save().factura({index: index - 1})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
validate() {
|
||||
if (this.props.venta.id === null || typeof this.props.venta.id === 'undefined') {
|
||||
return false
|
||||
}
|
||||
if (this.props.index === null || typeof this.props.index === 'undefined') {
|
||||
return false
|
||||
}
|
||||
if (this.props.proporcion === null || typeof this.props.proporcion === 'undefined') {
|
||||
return false
|
||||
}
|
||||
return !(this.props.receptor.rut === '' || this.props.receptor.nombre === '' || this.props.receptor.direccion === '' || this.props.receptor.comuna === '');
|
||||
|
||||
}
|
||||
save() {
|
||||
if (!this.validate()) {
|
||||
return
|
||||
}
|
||||
let url = '{{$urls->api}}/ventas/facturas/add'
|
||||
if (this.saved) {
|
||||
url = `{{$urls->api}}/ventas/facturas/${this.props.id}/edit`
|
||||
@ -326,6 +342,7 @@
|
||||
body.set('detalle', JSON.stringify(this.props.detalle))
|
||||
body.set('total', JSON.stringify(this.props.total))
|
||||
body.set('uf', JSON.stringify({fecha: [this.props.uf.fecha.getFullYear(), this.props.uf.fecha.getMonth()+1, this.props.uf.fecha.getDate()].join('-'), valor: this.props.uf.valor}))
|
||||
|
||||
return APIClient.fetch(url, {method, body}).then(response => {
|
||||
if (!response) {
|
||||
return
|
||||
@ -366,7 +383,7 @@
|
||||
unidades.forEach(unidad => {
|
||||
this.props.unidades.push({
|
||||
unidad: unidad,
|
||||
descripcion: unidad.descripcion(this.props.proporcion),
|
||||
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
|
||||
})
|
||||
@ -376,10 +393,10 @@
|
||||
this.props.proporcion = propietario.props.proporcion
|
||||
|
||||
this.props.receptor = {
|
||||
rut: propietario.props.rut,
|
||||
nombre: propietario.props.nombre,
|
||||
direccion: propietario.props.direccion,
|
||||
comuna: propietario.comuna
|
||||
rut: propietario.props.rut ?? '',
|
||||
nombre: propietario.props.nombre ?? '',
|
||||
direccion: propietario.props.direccion ?? '',
|
||||
comuna: propietario.comuna ?? ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,11 @@
|
||||
}
|
||||
|
||||
get comuna() {
|
||||
return $('#comuna_propietario'+this.props.index).dropdown('get text') ?? this.props.comuna
|
||||
const comuna = $('#comuna_propietario'+this.props.index).dropdown('get text')
|
||||
if (typeof comuna === 'string') {
|
||||
return comuna
|
||||
}
|
||||
return this.props.comuna ?? ''
|
||||
}
|
||||
update() {
|
||||
return {
|
||||
|
@ -13,8 +13,8 @@
|
||||
this.props = props
|
||||
}
|
||||
|
||||
descripcion(proporcion = 1) {
|
||||
return [this.props.tipo, this.props.descripcion, `[UF ${facturas.formatters.ufs.format(this.props.valor * proporcion)}]`].join(' ')
|
||||
changeDescripcion(proporcion = 1) {
|
||||
return this.descripcion = [this.props.tipo, this.props.descripcion, `[UF ${facturas.formatters.ufs.format(this.props.valor * proporcion)}]`].join(' ')
|
||||
}
|
||||
update() {
|
||||
return {
|
||||
|
@ -252,6 +252,11 @@
|
||||
this.props.propietarios.forEach(propietario => {
|
||||
propietario.watch().propietario()
|
||||
})
|
||||
},
|
||||
facturas: () => {
|
||||
this.props.facturas.facturas.forEach(factura => {
|
||||
factura.watch().save()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -267,11 +272,11 @@
|
||||
value: ufFormatter => {
|
||||
return [
|
||||
'<div class="ui grid">',
|
||||
'<div class="three wide column">',
|
||||
'<div class="ui very segment">',
|
||||
'Valor Venta: UF ' + ufFormatter.format(this.props.valor),
|
||||
'</div>',
|
||||
'</div>',
|
||||
'<div class="three wide column">',
|
||||
'<div class="ui very segment">',
|
||||
'Valor Venta: UF ' + ufFormatter.format(this.props.valor),
|
||||
'</div>',
|
||||
'</div>',
|
||||
'</div>'
|
||||
].join("\n")
|
||||
},
|
||||
@ -377,7 +382,7 @@
|
||||
},
|
||||
facturas: formatters => {
|
||||
const output = []
|
||||
this.props.facturas.facturas.forEach((factura, index) => {
|
||||
this.props.facturas.facturas.forEach(factura => {
|
||||
output.push(factura.draw().factura({formatters}))
|
||||
})
|
||||
return output.join("\n")
|
||||
@ -405,10 +410,10 @@
|
||||
comuna: this.props.inmobiliaria.comuna
|
||||
},
|
||||
receptor: {
|
||||
rut: '',
|
||||
nombre: '',
|
||||
direccion: '',
|
||||
comuna: ''
|
||||
rut: propietario.props.rut ?? '',
|
||||
nombre: propietario.props.nombre ?? '',
|
||||
direccion: propietario.props.direccion ?? '',
|
||||
comuna: propietario.props.comuna ?? ''
|
||||
},
|
||||
unidades: [],
|
||||
detalle: {
|
||||
|
Reference in New Issue
Block a user