From 937329bd9c743079463e2c96a42007b8e2db4289 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sun, 24 Dec 2017 23:54:19 -0600 Subject: [PATCH] UI Ticket a factura --- source/static/js/controller/tickets.js | 27 ++++ source/static/js/ui/tickets.js | 182 ++++++++++++++++++++++++- 2 files changed, 206 insertions(+), 3 deletions(-) diff --git a/source/static/js/controller/tickets.js b/source/static/js/controller/tickets.js index 6adcffa..74060ca 100644 --- a/source/static/js/controller/tickets.js +++ b/source/static/js/controller/tickets.js @@ -5,8 +5,11 @@ var msg = '' var tickets_controllers = { init: function(){ $$('cmd_nuevo_ticket').attachEvent('onItemClick', cmd_nuevo_ticket_click) + $$('cmd_ticket_to_invoice').attachEvent('onItemClick', cmd_ticket_to_invoice_click) $$('cmd_generar_ticket').attachEvent('onItemClick', cmd_generar_ticket_click) $$('cmd_cerrar_ticket').attachEvent('onItemClick', cmd_cerrar_ticket_click) + $$('cmd_new_invoice_from_ticket').attachEvent('onItemClick', cmd_new_invoice_from_ticket_click) + $$('cmd_close_ticket_invoice').attachEvent('onItemClick', cmd_cerrar_ticket_click) $$('cmd_cancelar_ticket').attachEvent('onItemClick', cmd_cancelar_ticket_click) $$('tsearch_product_key').attachEvent('onKeyPress', tsearch_product_key_press) $$('grid_tdetails').attachEvent('onItemClick', grid_ticket_details_click) @@ -14,6 +17,7 @@ var tickets_controllers = { $$('gt_productos_found').attachEvent('onValueSuggest', gt_productos_found_click) $$('filter_year_ticket').attachEvent('onChange', filter_year_ticket_change) $$('filter_month_ticket').attachEvent('onChange', filter_month_ticket_change) + $$('chk_is_invoice_day').attachEvent('onChange', chk_is_invoice_day_change) webix.extend($$('grid_tickets'), webix.ProgressBar) } @@ -83,6 +87,11 @@ function configuracion_inicial_ticket(){ } +function configuracion_inicial_ticket_to_invoice(){ + //~ get_active_tickets() +} + + function configuracion_inicial_nuevo_ticket(){ var grid = $$('grid_tdetails') @@ -104,6 +113,12 @@ function cmd_nuevo_ticket_click(){ } +function cmd_ticket_to_invoice_click(){ + configuracion_inicial_ticket_to_invoice() + $$('multi_tickets').setValue('tickets_invoice') +} + + function validar_ticket(){ var grid = $$('grid_tdetails') @@ -195,6 +210,7 @@ function cmd_cerrar_ticket_click(){ $$('multi_tickets').setValue('tickets_home') } + function calcular_precio_con_impuestos(precio, taxes){ var precio_final = precio @@ -391,4 +407,15 @@ function cmd_cancelar_ticket_click(){ } }) +} + + +function chk_is_invoice_day_change(new_value, old_value){ + var value = Boolean(new_value) + show('fs_ticket_search_client', !value) +} + + +function cmd_new_invoice_from_ticket_click(){ + showvar('ok') } \ No newline at end of file diff --git a/source/static/js/ui/tickets.js b/source/static/js/ui/tickets.js index a60051c..5d2df46 100644 --- a/source/static/js/ui/tickets.js +++ b/source/static/js/ui/tickets.js @@ -3,6 +3,8 @@ var toolbar_tickets = [ {view: 'button', id: 'cmd_nuevo_ticket', label: 'Nuevo', type: 'iconButton', autowidth: true, icon: 'plus'}, + {view: 'button', id: 'cmd_ticket_to_invoice', label: 'Facturar', + type: 'iconButton', autowidth: true, icon: 'file-code-o'}, {}, {view: 'button', id: 'cmd_cancelar_ticket', label: 'Cancelar', type: 'iconButton', autowidth: true, icon: 'ban'}, @@ -95,7 +97,7 @@ var ticket_suggest_products = { this.hide() } } - } + }, } @@ -192,6 +194,154 @@ var controls_generate_ticket = [ ] +var toolbar_ticket_invoice = {view: 'toolbar', elements: [{}, + {view: 'checkbox', id: 'chk_is_invoice_day', labelWidth: 0, width: 150, + labelRight: 'Es factura del día'}, +{}]} + + +var tsuggest_partners = { + view: 'gridsuggest', + id: 'grid_tclients_found', + name: 'grid_tclients_found', + body: { + autoConfig: false, + header: false, + columns: [ + {id: 'id', hidden: true}, + {id: 'nombre', adjust: 'data'}, + {id: 'rfc', adjust: 'data'}, + {id: 'forma_pago', hidden: true}, + {id: 'uso_cfdi', hidden: true}, + ], + dataFeed:function(text){ + if (text.length > 2){ + this.load('/values/client?name=' + text) + }else{ + this.hide() + } + } + } +} + + +var ticket_search_client = {cols: [{rows: [ + {view: 'fieldset', id: 'fs_ticket_search_client', label: 'Buscar Cliente', body: {rows: [ + {cols: [ + {view: 'search', id: 'tsearch_client_key', name: 'tsearch_client_key', + label: 'por Clave', labelPosition: 'top', maxWidth: 250, + placeholder:'Presiona ENTER para buscar'}, + {view: 'search', id: 'tsearch_client_name', + name: 'tsearch_client_name', label: 'por Nombre o RFC', + labelPosition: 'top', suggest: tsuggest_partners, + placeholder: 'Captura al menos tres letras'}, + ]}, + {cols: [ + {view: 'label', id: 'lbl_tclient_title', autowidth:true, + name: "lbl_tclient_title", label: 'Seleccionado: ' }, + {view: 'label', id: 'lbl_tclient', name: 'lbl_tclient', + label: 'Ninguno'}, + ]} + ]}}, +]},]} + + +var grid_tickets_active_cols = [ + {id: 'index', header: '#', adjust: 'data', css: 'right', + footer: {content: 'countRows', colspan: 3, css: 'right'}}, + {id: "id", header:"ID", hidden:true}, + {id: "serie", header: ["Serie", {content: "selectFilter"}], adjust: "data", + sort:"string", hidden: true}, + {id: 'folio', header: ['Folio', {content: 'numberFilter'}], adjust: 'header', + sort: 'int', css: 'right', footer: {text: 'Tickets', colspan: 3}}, + {id: "fecha", header: ["Fecha y Hora"], + adjust: "data", sort: "string"}, + {id: 'total', header: 'Total', width: 150,sort: 'int', + format: webix.i18n.priceFormat, css: 'right'}, +] + + +var grid_tickets_active = { + view: 'datatable', + id: 'grid_tickets_active', + select: 'row', + adjust: true, + footer: true, + resizeColumn: true, + headermenu: true, + columns: grid_tickets_active_cols, + on:{ + 'data->onStoreUpdated':function(){ + this.data.each(function(obj, i){ + obj.index = i + 1 + }) + } + }, +} + + +var grid_tickets_invoice_cols = [ + {id: 'index', header: '#', adjust: 'data', css: 'right', + footer: {content: 'countRows', colspan: 3, css: 'right'}}, + {id: "id", header:"ID", hidden:true}, + {id: "serie", header: ["Serie", {content: "selectFilter"}], adjust: "data", + sort:"string", hidden: true}, + {id: 'folio', header: 'Folio', adjust: 'header', sort: 'int', + css: 'right', footer: {text: 'Tickets', colspan: 3}}, + {id: "fecha", header: ["Fecha y Hora"], + adjust: "data", sort: "string"}, + {id: 'total', header: 'Total', width: 150,sort: 'int', + format: webix.i18n.priceFormat, css: 'right'}, +] + + +var grid_tickets_invoice = { + view: 'datatable', + id: 'grid_tickets_invoice', + select: 'row', + adjust: true, + footer: true, + resizeColumn: true, + headermenu: true, + columns: grid_tickets_invoice_cols, + on:{ + 'data->onStoreUpdated':function(){ + this.data.each(function(obj, i){ + obj.index = i + 1 + }) + } + }, +} + + +var controls_ticket_to_invoice = [ + {minHeight: 10, maxHeight: 10}, + toolbar_ticket_invoice, + {minHeight: 10, maxHeight: 10}, + ticket_search_client, + {minHeight: 5, maxHeight: 5}, + {cols:[ + {rows: [{view: 'label', label: 'Tickets sin facturar', height: 30, align: 'left'}, grid_tickets_active]}, + {minWidth: 10, maxWidth: 10}, + {rows: [{view: 'label', label: 'Tickets a facturar', height: 30, align: 'left'}, grid_tickets_invoice]}, + ]}, + {minHeight: 20, maxHeight: 20}, + {margin: 20, cols: [{}, + {view: 'button', id: 'cmd_new_invoice_from_ticket', label: 'Facturar', + icon: 'ticket', type: 'iconButton', autowidth: true, align: 'center'}, + {}] + }, + {rows: [ + {template: '', type: 'section'}, + {margin: 10, cols: [{}, + {view: 'button', id: 'cmd_close_ticket_invoice', label: 'Cerrar', + type: 'danger', autowidth: true, align: 'center'} + ] + }, + ]} +] + + var controls_new_ticket = [ { view: 'tabview', @@ -204,6 +354,18 @@ var controls_new_ticket = [ ] +var controls_ticket_invoice = [ + { + view: 'tabview', + id: 'tv_ticket_invoice', + animate: true, + cells: [ + {id: 'Facturar Tickets', rows: controls_ticket_to_invoice}, + ] + }, +] + + var form_new_ticket = { type: 'space', responsive: true, @@ -213,7 +375,20 @@ var form_new_ticket = { complexData: true, scroll: true, elements: controls_new_ticket, - }] + }], +} + + +var form_ticket_invoice = { + type: 'space', + responsive: true, + cols: [{ + view: 'form', + id: 'form_ticket_invoice', + complexData: true, + scroll: true, + elements: controls_ticket_invoice, + }], } @@ -223,7 +398,8 @@ var multi_tickets = { animate: true, cells:[ {id: 'tickets_home', rows: rows_tickets_home}, - {id: 'tickets_new', rows:[form_new_ticket]} + {id: 'tickets_new', rows:[form_new_ticket]}, + {id: 'tickets_invoice', rows:[form_ticket_invoice]} ], }