feature/cierres (#25)

Varios cambios

Co-authored-by: Juan Pablo Vial <jpvialb@incoviba.cl>
Reviewed-on: #25
This commit is contained in:
2025-07-22 13:18:00 +00:00
parent ba57cad514
commit 307f2ac7d7
418 changed files with 20045 additions and 984 deletions

View File

@ -27,13 +27,13 @@ Editar Propietario
</div>
<div class="field">
<label for="apellido_materno">Apellido Materno</label>
<input type="text" id="apellido_materno" name="apellido_materno" value="{{$propietario->apellidos['materno']}}" />
<input type="text" id="apellido_materno" name="apellido_materno" value="{{$propietario->apellidos['materno'] ?? ''}}" />
</div>
</div>
<div class="fields">
<div class="field">
<label for="calle">Dirección</label>
<input type="text" name="calle" id="calle" value="{{$propietario->datos->direccion->calle}}" />
<input type="text" name="calle" id="calle" value="{'{$propietario->datos->direccion->calle}}" />
</div>
<div class="field">
<label for="numero">Número</label>
@ -58,16 +58,28 @@ Editar Propietario
<select class="ui search selection dropdown" name="comuna" id="comunas"></select>
</div>
</div>
<button class="ui button" id="guardar_button">Guardar</button>
<div class="fields">
<div class="four wide field">
<label>Email</label>
<input type="email" name="email" value="{{$propietario->datos?->email}}" />
</div>
<div class="field">
<label>Teléfono</label>
<input type="text" name="telefono" value="{{$propietario->datos?->telefono}}" />
</div>
</div>
<button type="button" class="ui button" id="guardar_button">Guardar</button>
</form>
</div>
@endsection
@include('layout.body.scripts.rut')
@push('page_scripts')
<script type="text/javascript">
<script>
class Propietario {
props
constructor({rut, digito, nombres, apellidos: {paterno, materno}, direccion: {calle, numero, extra, comuna, region}}) {
constructor({rut, digito, nombres, apellidos: {paterno, materno}, direccion: {calle, numero, extra, comuna, region}, email, telefono}) {
this.props = {
rut,
digito,
@ -83,6 +95,8 @@ Editar Propietario
comuna,
region
},
email,
telefono
}
}
@ -90,7 +104,7 @@ Editar Propietario
return {
rut: rut => {
this.props.rut = rut
this.update().digito(Rut.digito(this.props.rut))
this.update().digito(Rut.digitoVerificador(this.props.rut))
},
digito: digito => {
this.props.digito = digito
@ -126,6 +140,12 @@ Editar Propietario
this.props.direccion.region = region
}
}
},
email: email => {
this.props.email = email
},
telefono: telefono => {
this.props.telefono = telefono
}
}
}
@ -136,14 +156,16 @@ Editar Propietario
nombres: '{{trim($propietario->nombres)}}',
apellidos: {
paterno: '{{trim($propietario->apellidos['paterno'])}}',
materno: '{{trim($propietario->apellidos['materno'])}}'
materno: '{{trim($propietario->apellidos['materno'] ?? '')}}'
},
direccion: {
calle: '{{trim($propietario->datos->direccion->calle)}}',
numero: '{{$propietario->datos->direccion->numero}}',
extra: '{{trim($propietario->datos->direccion->extra)}}',
comuna: '{{$propietario->datos->direccion->comuna->id}}'
}
},
email: '{{trim($propietario->datos?->email)}}',
telefono: '{{trim($propietario->datos?->telefono)}}'
}
const data = {}
const collator = new Intl.Collator('es')
@ -187,7 +209,7 @@ Editar Propietario
return
}
if ('rut' in data) {
data['dv'] = Rut.digito(data['rut'])
data['dv'] = Rut.digitoVerificador(data['rut'])
}
return fetchAPI(uri,
{method: 'put', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(data)}
@ -297,6 +319,16 @@ Editar Propietario
propietario.props.data.update().direccion().comuna(comuna_id)
})
}
static email() {
$("[name='email']").change(event => {
propietario.props.data.update().email(event.currentTarget.value)
})
}
static telefono() {
$("[name='telefono']").change(event => {
propietario.props.data.update().telefono($(event.currentTarget).val())
})
}
static run() {
Watcher.rut()
@ -305,6 +337,8 @@ Editar Propietario
Watcher.direccion()
Watcher.region()
Watcher.comuna()
Watcher.email()
Watcher.telefono()
}
}
class EventHandler {
@ -360,22 +394,7 @@ Editar Propietario
}
}
}
class Rut {
static format(rut) {
return Intl.NumberFormat('es-CL', {maximumFractionDigits: 0}).format(rut)
}
static digito(rut) {
const cleanRut = rut.replace(/\D/g, ''); // Removes non-digit characters more efficiently
let sum = 0;
const factors = [2, 3, 4, 5, 6, 7, 2, 3, 4, 5];
for (let i = 0; i < cleanRut.length; i++) {
const digit = parseInt(cleanRut[cleanRut.length - 1 - i], 10);
sum += digit * factors[i % factors.length];
}
const dv = 11 - (sum % 11);
return dv === 10 ? 'K' : dv === 11 ? '0' : dv.toString();
}
}
const propietario = {
props: {
ids: {},
@ -394,6 +413,8 @@ Editar Propietario
$("[name='numero']").val(this.props.data.props.direccion.numero)
$("[name='extra']").val(this.props.data.props.direccion.extra)
$('#region').val(this.props.data.props.direccion.region)
$("[name='email']").val(this.props.data.props.email)
$("[name='telefono']").val(this.props.data.props.telefono)
this.update().region()
},
region: () => {
@ -435,6 +456,8 @@ Editar Propietario
this.props.data.update().direccion().extra(data.propietario.direccion.extra)
this.props.data.update().direccion().comuna(data.propietario.direccion.comuna.id)
this.props.data.update().direccion().region(data.propietario.direccion.comuna.provincia.region.id)
this.props.data.update().email(data.propietario.email)
this.props.data.update().telefono(data.propietario.telefono)
this.update().propietario()
})
})
@ -489,6 +512,8 @@ Editar Propietario
$("[name='calle']").val('')
$("[name='numero']").val('')
$("[name='extra']").val('')
$("[name='email']").val('')
$("[name='telefono']").val('')
}
}
},
@ -511,7 +536,8 @@ Editar Propietario
})
this.update().region()
$(this.props.ids.forms.edit).submit(Form.submit)
document.getElementById(this.props.ids.forms.edit.replace('#', '')).addEventListener('submit', Form.submit)
document.getElementById(this.props.ids.buttons.guardar.replace('#', '')).addEventListener('click', Form.submit)
Watcher.run()
}
}
@ -534,7 +560,7 @@ Editar Propietario
nombres: '{{$propietario->nombres}}',
apellidos: {
paterno: '{{$propietario->apellidos['paterno']}}',
materno: '{{$propietario->apellidos['materno']}}'
materno: '{{$propietario->apellidos['materno'] ?? ''}}'
},
direccion: {
calle: '{{$propietario->datos->direccion->calle}}',
@ -542,7 +568,9 @@ Editar Propietario
extra: '{{$propietario->datos->direccion->extra}}',
comuna: '{{$propietario->datos->direccion->comuna->id}}',
region: '{{$propietario->datos->direccion->comuna->provincia->region->id}}',
}
},
email: '{{$propietario->datos?->email}}',
telefono: '{{$propietario->datos?->telefono}}'
})
})
})