Files
oficial/app/resources/views/ventas/show/forma_pago.blade.php
2025-05-15 16:04:35 -04:00

230 lines
7.9 KiB
PHP

<div class="ui inverted grey segment">
FORMA DE PAGO
</div>
<div class="ui segment">
<table class="ui very basic fluid table">
@include('ventas.show.forma_pago.pie', ['pie' => $formaPago?->pie])
@include('ventas.show.forma_pago.escritura', ['escritura' => $formaPago?->escritura])
@include('ventas.show.forma_pago.anticipo', ['anticipo' => ['uf' => $formaPago?->anticipo(), 'pesos' => $formaPago?->anticipo('pesos')]])
@include('ventas.show.forma_pago.bono_pie', ['bonoPie' => $formaPago?->bonoPie])
@include('ventas.show.forma_pago.subsidio', ['subsidio' => $formaPago?->subsidio])
@include('ventas.show.forma_pago.credito', ['credito' => $formaPago?->credito])
@include('ventas.show.forma_pago.total')
@include('ventas.show.forma_pago.devolucion', ['devolucion' => $formaPago?->devolucion])
</table>
</div>
<div id="pago_modal" class="ui modal">
<div class="content">
<div class="ui form">
<div class="inline field">
<label for="fecha">Fecha</label>
<div class="ui calendar">
<div class="ui icon input">
<input id="fecha" name="fecha" type="text" />
<i class="calendar icon"></i>
</div>
</div>
</div>
<button class="ui button">
Guardar
</button>
</div>
</div>
</div>
@push('page_scripts')
<script>
class Anchor
{
classes
title
row_id
pago_id
method
icon
status
constructor({classes, title, row_id, pago_id, method, icon})
{
this.classes = classes
this.title = title
this.row_id = row_id
this.pago_id = pago_id
this.method = method
this.icon = icon
this.status = true
}
draw()
{
const row = $(this.row_id)
const anchor = row.find('a')
anchor.attr('class', this.classes)
anchor.attr('title', this.title)
anchor.attr('href', 'javascript: ' + this.method + "({row_id: '" + this.row_id + "', pago_id: " + this.pago_id + '});')
anchor.html('')
anchor.append(
$('<i></i>').addClass(this.icon + ' icon')
)
}
toggle()
{
if (this.status) {
$(this.row_id).find('a').css('pointer-events', 'none')
this.status = false
return
}
$(this.row_id).find('a').css('pointer-events', '')
this.status = true
}
}
class Cell
{
id
classes
text
anchor
status
constructor({id, classes, text, anchor})
{
this.id = id
this.classes = classes
this.text = text
this.anchor = anchor
this.status = true
}
draw()
{
const row = $(this.id)
row.attr('class', this.classes)
row.html('').append(
$('<span></span>').html(this.text)
).append(this.anchor.draw())
}
toggle()
{
if (this.status) {
$(this.id).css('cursor', 'wait')
this.status = false
return
}
$(this.id).css('cursor', 'default')
this.status = true
}
}
class Modal
{
id
date
uri
constructor({id}) {
this.id = id
}
show() {
$(this.id).find('div.ui.calendar').calendar('reset')
$(this.id).find('div.ui.calendar input').val('')
$(this.id).modal('show')
}
setup() {
const modal = $(this.id)
modal.modal({
onHide: function($element) {
const pagos = $("[id$='_pago']")
pagos.css('cursor', 'default')
const anchor = pagos.find("a")
anchor.css('pointer-events', '')
}
})
modal.find('div.ui.calendar').calendar({
type: 'date'
})
}
}
const pagos = {
modal: null,
cells: [],
setup: function({modal_id}) {
this.modal = new Modal({id: modal_id})
this.modal.setup()
},
add: function() {
return {
cell: ({cell_id, classes, text, anchor}) => {
this.cells.push(new Cell({id: cell_id, classes, text, anchor}))
}
}
},
}
function depositar({row_id, pago_id}) {
const row = $(row_id)
const anchor = row.find("a[title='Depositar']")
const uri = '{{$urls->api}}/ventas/pago/' + pago_id + '/depositar'
const modal = $('#pago_modal')
row.css('cursor', 'wait')
anchor.css('pointer-events', 'none')
modal.find('#fecha').calendar('clear')
modal.modal('show')
modal.find('.ui.button').click(event => {
modal.modal('hide')
const date = modal.find('#fecha').val()
return fetchAPI(uri,
{method: 'put', body: JSON.stringify({fecha: date}), headers: {'Content-Type': 'application/json'}}
).then(response => {
anchor.css('pointer-events', '')
row.css('cursor', 'default')
if (response.ok) {
anchor.attr('href', "javascript: abonar({row_id: '" + row_id + "', pago_id: " + pago_id + "});")
anchor.attr('title', 'Abonar')
anchor.html('')
anchor.append(
$('<i></i>').addClass('piggy bank icon')
)
row.removeClass('warning').addClass('positive')
response.json().then(data => {
row.find('.text').html(data.fecha)
})
}
})
})
}
function abonar({row_id, pago_id}) {
const row = $(row_id)
row.css('cursor', 'wait')
const anchor = row.find("a[title='Abonar']")
anchor.css('pointer-events', 'none')
const uri = '{{$urls->api}}/ventas/pago/' + pago_id + '/abonar'
const modal = $('#pago_modal')
modal.modal('show')
modal.find('.ui.button').click(event => {
const date = modal.find('#fecha').val()
return fetchAPI(uri,
{method: 'put', body: JSON.stringify({fecha: date}), headers: {'Content-Type': 'application/json'}}
).then(response => {
anchor.css('pointer-events', '')
row.css('cursor', 'default')
if (response.ok) {
anchor.remove()
row.removeClass('positive')
response.json().then(data => {
row.find('.text').html(data.fecha)
})
}
})
})
}
$(document).ready(() => {
const modal = new Modal({id: '#pago_modal'})
modal.setup()
})
</script>
@endpush