Validaciones

This commit is contained in:
Juan Pablo Vial
2025-01-10 11:39:36 -03:00
parent 604c49c99d
commit 728207d63d

View File

@ -8,7 +8,7 @@
<div class="inline field"> <div class="inline field">
<div class="ui calendar" id="fecha_venta_calendar"> <div class="ui calendar" id="fecha_venta_calendar">
<div class="ui icon input"> <div class="ui icon input">
<input type="text" name="fecha_venta" id="fecha_venta" /> <input type="text" name="fecha_venta" id="fecha_venta" required />
<i class="calendar icon"></i> <i class="calendar icon"></i>
</div> </div>
</div> </div>
@ -34,6 +34,7 @@
<div class="four wide field"> <div class="four wide field">
<div class="ui fluid search selection dropdown" id="proyecto"> <div class="ui fluid search selection dropdown" id="proyecto">
<input type="hidden" name="proyecto" /> <input type="hidden" name="proyecto" />
<i class="dropdown icon"></i>
<div class="default text">Proyecto</div> <div class="default text">Proyecto</div>
<div class="menu"> <div class="menu">
@foreach($proyectos as $proyecto) @foreach($proyectos as $proyecto)
@ -67,7 +68,7 @@
<label for="valor">Valor</label> <label for="valor">Valor</label>
<div class="inline field"> <div class="inline field">
<div class="ui right labeled input"> <div class="ui right labeled input">
<input type="text" name="valor" id="valor" /> <input type="text" name="valor" id="valor" required />
<div class="ui label">UF</div> <div class="ui label">UF</div>
</div> </div>
</div> </div>
@ -261,7 +262,9 @@
provincias: [] provincias: []
} }
$(this.id).dropdown() $(this.id).dropdown({
forceSelection: true
})
} }
get() { get() {
@ -331,6 +334,7 @@
const dd = $(this.id) const dd = $(this.id)
dd.dropdown({ dd.dropdown({
fireOnInit: true, fireOnInit: true,
forceSelection: true,
onChange: value => { onChange: value => {
this.comuna.data.region = value this.comuna.data.region = value
this.comuna.get().provincias() this.comuna.get().provincias()
@ -348,7 +352,7 @@
const lines = [ const lines = [
'<label for="rut">RUT</label>', '<label for="rut">RUT</label>',
'<div class="inline field">', '<div class="inline field">',
'<input type="text" id="rut" name="rut" placeholder="00000000-0" />', '<input type="text" id="rut" name="rut" placeholder="00000000-0" required />',
'<span class="ui error message" id="alert_rut">', '<span class="ui error message" id="alert_rut">',
'<i class="exclamation triangle icon"></i>', '<i class="exclamation triangle icon"></i>',
'RUT Inválido', 'RUT Inválido',
@ -357,22 +361,22 @@
'<label for="nombres">Nombre</label>', '<label for="nombres">Nombre</label>',
'<div class="inline fields">', '<div class="inline fields">',
'<div class="field">', '<div class="field">',
'<input type="text" name="nombres" id="nombres" placeholder="Nombre(s)" />', '<input type="text" name="nombres" id="nombres" placeholder="Nombre(s)" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="apellido_paterno" placeholder="Apellido Paterno" />', '<input type="text" name="apellido_paterno" placeholder="Apellido Paterno" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="apellido_materno" placeholder="Apellido Materno" />', '<input type="text" name="apellido_materno" placeholder="Apellido Materno" required />',
'</div>', '</div>',
'</div>', '</div>',
'<label for="calle">Dirección</label>', '<label for="calle">Dirección</label>',
'<div class="inline fields">', '<div class="inline fields">',
'<div class="eight wide field">', '<div class="eight wide field">',
'<input type="text" name="calle" id="calle" size="16" placeholder="Calle" />', '<input type="text" name="calle" id="calle" size="16" placeholder="Calle" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="numero" size="5" placeholder="Número" />', '<input type="text" name="numero" size="5" placeholder="Número" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="extra" placeholder="Otros Detalles" />', '<input type="text" name="extra" placeholder="Otros Detalles" />',
@ -383,6 +387,7 @@
'<div class="four wide field">', '<div class="four wide field">',
'<div class="ui fluid search selection dropdown" id="comuna">', '<div class="ui fluid search selection dropdown" id="comuna">',
'<input type="hidden" name="comuna" />', '<input type="hidden" name="comuna" />',
'<i class="dropdown icon"></i>',
'<div class="default text">Comuna</div>', '<div class="default text">Comuna</div>',
'<div class="menu"></div>', '<div class="menu"></div>',
'</div>', '</div>',
@ -390,6 +395,7 @@
'<div class="six wide field">', '<div class="six wide field">',
'<div class="ui fluid search selection dropdown" id="region">', '<div class="ui fluid search selection dropdown" id="region">',
'<input type="hidden" name="region" />', '<input type="hidden" name="region" />',
'<i class="dropdown icon"></i>',
'<div class="default text">Región</div>', '<div class="default text">Región</div>',
'<div class="menu">', '<div class="menu">',
...regiones, ...regiones,
@ -415,7 +421,7 @@
const lines = [ const lines = [
'<label for="rut">RUT Sociedad</label>', '<label for="rut">RUT Sociedad</label>',
'<div class="inline field">', '<div class="inline field">',
'<input type="text" id="rut_sociedad" name="rut_sociedad" />', '<input type="text" id="rut_sociedad" name="rut_sociedad" required />',
'<span class="ui error message" id="alert_rut_sociedad">', '<span class="ui error message" id="alert_rut_sociedad">',
'<i class="exclamation triangle icon"></i>', '<i class="exclamation triangle icon"></i>',
'RUT Inválido', 'RUT Inválido',
@ -423,15 +429,15 @@
'</div>', '</div>',
'<label for="razon_social">Razón Social</label>', '<label for="razon_social">Razón Social</label>',
'<div class="field">', '<div class="field">',
'<input type="text" name="razon_social" id="razon_social" />', '<input type="text" name="razon_social" id="razon_social" required />',
'</div>', '</div>',
'<label for="calle_comercial">Dirección Comercial</label>', '<label for="calle_comercial">Dirección Comercial</label>',
'<div class="inline fields">', '<div class="inline fields">',
'<div class="eight wide field">', '<div class="eight wide field">',
'<input type="text" name="calle_comercial" id="calle_comercial" size="16" />', '<input type="text" name="calle_comercial" id="calle_comercial" size="16" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="numero_comercial" size="5" />', '<input type="text" name="numero_comercial" size="5" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="extra_comercial" />', '<input type="text" name="extra_comercial" />',
@ -442,6 +448,7 @@
'<div class="four wide field">', '<div class="four wide field">',
'<div class="ui fluid search selection dropdown" id="comuna_sociedad">', '<div class="ui fluid search selection dropdown" id="comuna_sociedad">',
'<input type="hidden" name="comuna_sociedad" />', '<input type="hidden" name="comuna_sociedad" />',
'<i class="dropdown icon"></i>',
'<div class="default text">Comuna</div>', '<div class="default text">Comuna</div>',
'<div class="menu"></div>', '<div class="menu"></div>',
'</div>', '</div>',
@ -449,6 +456,7 @@
'<div class="six wide field">', '<div class="six wide field">',
'<div class="ui fluid search selection dropdown" id="region_sociedad">', '<div class="ui fluid search selection dropdown" id="region_sociedad">',
'<input type="hidden" name="region_sociedad" />', '<input type="hidden" name="region_sociedad" />',
'<i class="dropdown icon"></i>',
'<div class="default text">Región</div>', '<div class="default text">Región</div>',
'<div class="menu">', '<div class="menu">',
...regiones, ...regiones,
@ -478,7 +486,7 @@
this.persona.draw(), this.persona.draw(),
'<label for="rut">RUT Otro</label>', '<label for="rut">RUT Otro</label>',
'<div class="inline field">', '<div class="inline field">',
'<input type="text" id="rut_otro" name="rut_otro" />', '<input type="text" id="rut_otro" name="rut_otro" required />',
'<span class="ui error message" id="alert_rut_otro">', '<span class="ui error message" id="alert_rut_otro">',
'<i class="exclamation triangle icon"></i>', '<i class="exclamation triangle icon"></i>',
'RUT Inválido', 'RUT Inválido',
@ -487,22 +495,22 @@
'<label for="nombres_otro">Nombre Otro</label>', '<label for="nombres_otro">Nombre Otro</label>',
'<div class="inline fields">', '<div class="inline fields">',
'<div class="field">', '<div class="field">',
'<input type="text" name="nombres_otro" id="nombres_otro" />', '<input type="text" name="nombres_otro" id="nombres_otro" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="apellido_paterno_otro" />', '<input type="text" name="apellido_paterno_otro" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="apellido_materno_otro" />', '<input type="text" name="apellido_materno_otro" required />',
'</div>', '</div>',
'</div>', '</div>',
'<label for="calle_otro">Dirección Otro</label>', '<label for="calle_otro">Dirección Otro</label>',
'<div class="inline fields">', '<div class="inline fields">',
'<div class="eight wide field">', '<div class="eight wide field">',
'<input type="text" name="calle_otro" id="calle_otro" size="16" />', '<input type="text" name="calle_otro" id="calle_otro" size="16" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="numero_otro" size="5" />', '<input type="text" name="numero_otro" size="5" required />',
'</div>', '</div>',
'<div class="field">', '<div class="field">',
'<input type="text" name="extra_otro" />', '<input type="text" name="extra_otro" />',
@ -513,6 +521,7 @@
'<div class="four wide field">', '<div class="four wide field">',
'<div class="ui fluid search selection dropdown" id="comuna_otro">', '<div class="ui fluid search selection dropdown" id="comuna_otro">',
'<input type="hidden" name="comuna_otro" />', '<input type="hidden" name="comuna_otro" />',
'<i class="dropdown icon"></i>',
'<div class="default text">Comuna</div>', '<div class="default text">Comuna</div>',
'<div class="menu"></div>', '<div class="menu"></div>',
'</div>', '</div>',
@ -520,6 +529,7 @@
'<div class="six wide field">', '<div class="six wide field">',
'<div class="ui fluid search selection dropdown" id="region_otro">', '<div class="ui fluid search selection dropdown" id="region_otro">',
'<input type="hidden" name="region_otro" />', '<input type="hidden" name="region_otro" />',
'<i class="dropdown icon"></i>',
'<div class="default text">Región</div>', '<div class="default text">Región</div>',
'<div class="menu">', '<div class="menu">',
...regiones, ...regiones,
@ -633,6 +643,7 @@
$(this.ids.proyecto).dropdown({ $(this.ids.proyecto).dropdown({
fireOnInit: true, fireOnInit: true,
forceSelection: true,
onChange: (value, text, $choice) => { onChange: (value, text, $choice) => {
this.data.id = value this.data.id = value
this.ids.buttons.forEach(button => { this.ids.buttons.forEach(button => {
@ -640,8 +651,10 @@
}) })
this.reset() this.reset()
this.fetch().unidades().then(() => { this.fetch().unidades().then(() => {
this.ids.buttons.forEach(button => { Object.keys(this.unidades).forEach(name => {
$(button).prop('disabled', false) if (this.unidades[name].length > 0) {
$(`#agregar_${name}`).prop('disabled', false)
}
}) })
}) })
} }
@ -653,7 +666,7 @@
'terraza' 'terraza'
] ]
buttons.forEach(name => { buttons.forEach(name => {
const id = '#agregar_' + name const id = `#agregar_${name}`
this.ids.buttons.push(id) this.ids.buttons.push(id)
$(id).click(event => { $(id).click(event => {
this.add(name) this.add(name)
@ -793,9 +806,18 @@
button.prop('disabled', true) button.prop('disabled', true)
button.css('cursor', 'wait') button.css('cursor', 'wait')
const body = new FormData(event.currentTarget) const body = new FormData(event.currentTarget)
/*const unidades = event.currentTarget.querySelectorAll("[name^='unidad_']") const unidades = event.currentTarget.querySelectorAll("[name^='unidad']")
console.debug(unidades) const emptyUnidades = []
return;*/ unidades.forEach(unidad => {
if (unidad.value.trim() === '') {
emptyUnidades.push(unidad)
body.delete(unidad.name)
}
})
if (unidades.length === emptyUnidades.length) {
alert("No hay unidades seleccionadas")
return;
}
const uri = '{{$urls->api}}/ventas/add' const uri = '{{$urls->api}}/ventas/add'
return fetchAPI(uri, {method: 'post', body}).then(response => { return fetchAPI(uri, {method: 'post', body}).then(response => {
if (!response) { if (!response) {