===== KG's code ===== ==== Javascript ==== === kg.definitions.fields === kg.fields.hotel = [ { name: 'stad*', size: 'md', validation: {'not-empty___message': 'Je moet een stad waar het hotel ligt ingeven'} }, { name: 'naam', size: 'lg', label: 'hotelnaam', labelOffcanvas: 'hotel', classOffcanvas: 'font-size-120' }, { name: '[checkin*', size: 'sm', type: 'dateStart', validation: {'not-empty___message':'Geef de checkin datum in', 'kg-date-max':'checkout', 'kg-date-max-message': 'De checkin datum moet vóór de checkout liggen'}, colOffcanvas: 'col-6' }, { name:'checkout*', size: 'sm', type:'date', validation:{'not-empty___message':'Geef de checkout datum in'}, colOffcanvas: 'col-6' }, { name: 'gratisannuleren', size: 'sm', type:'date', label: 'annuleerbaar tot', info: 'datum tot wanneer er gratis geannuleerd kan worden', options: ['nocopy'] }, { name: 'adres', size: 'lg', labelOffcanvas: '' }, { name: 'telefoon', size: 'md', labelOffcanvas: '' }, { name: 'email', size: 'md', type: 'email', labelOffcanvas: '' }, { name: 'website', size: 'lg', type: 'url', labelOffcanvas: '' }, { name: 'geboekt', size: 'xs', type: 'check' }, { name: 'reservatiecode', size: 'md', classOffcanvas: 'lead bg-success-subtle px-2 border lh-lg' }, { name: 'prijs', size: 'sm', type: 'decimal' }, { name: 'ontbijt', size: 'xs', type: 'decimal', info: 'totaalprijs voor ontbijt, gebruik -1 indien ontbijt inbegrepen is in de prijs', options: ['nocopy'], values: kg.values.inbegrepen }, { name: 'diner', size: 'xs', type: 'decimal', info: 'totaalprijs voor diner, gebruik -1 indien diner inbegrepen is in de prijs', options: ['nocopy'], values: kg.values.inbegrepen }, { name: 'betaald', size: 'sm', type: 'decimal', info: 'bedrag dat al betaald werd bij reservatie', values: kg.values.saldo, valuesArguments: [['prijs', 'ontbijt','diner'], 'betaald'] }, { name: '[checkin_tijd', size: 'sm', type: 'time', colOffcanvas: 'col-6' }, { name: 'checkout_tijd', size: 'sm', type: 'time', colOffcanvas: 'col-6' }, { name: 'latlon', size: 'lg', type: 'latlon', labelExtra: 'GPS coordinaten: lat,lon' }, { name: 'opmerkingen', col: 'col-12', type: 'textarea'}, { name: 'reis_id', type: 'hidden'} ]; if ( kg.data.reis['reis_label_lokale_taal'] ) { kg.fields.hotel.splice(2, 0, { name: 'naam_lokale_taal', size: 'lg', label: 'hotelnaam in lokale taal', labelOffcanvas: 'in lokale taal' }); kg.fields.hotel.splice(7, 0, { name: 'adres_lokale_taal', size: 'lg', labelOffcanvas: '' }); } kg.values.inbegrepen = (val) => { if ( val == -1 ) { return 'inbegrepen'; } else { return (val || ''); } } kg.values.saldo = (args, data) => { let tebetalen = 0; if ( Array.isArray(args[0]) ) { for ( const field of args[0] ) { if ( data[field] && (data[field] != -1 ) ) { tebetalen += Number(data[field]); } } } else { tebetalen = data[args[0]] || null; } let betaald = 0; if ( Array.isArray(args[1]) ) { for ( const field of args[1] ) { if ( data[field] && (data[field] != -1 ) ) { betaald += Number(data[field]); } } } else { betaald = data[args[1]] || null; } const saldo = Number.parseFloat(tebetalen - betaald).toFixed(2); if ( isNaN(saldo) ) { return betaald; } if ( saldo == 0 ) { return `${betaald} (volledig voldaan)` } else { return `${betaald} (nog ${saldo} te betalen)`; } }