BRIDGE - Gestión de ClientPOS


REVISIONES

Fecha

Versión

Descripción

Autor

 

1.0

Creación del documento

 

1.1

Actualización de documento

 

1.2

Actualización de documento


CONTENIDO


Acerca de este manual

El presente manual tiene por finalidad la capacitación de los usuarios que deseen gestionar las imágenes y recursos del pos para la personalización del punto de venta de un cliente.
Brinda la información necesaria, con el nivel suficiente de detalle para que el usuario pueda entender la arquitectura del ClientPos, así como también su custamización y actualización.


¿Qué es el ClientPOS?


El archivo ClientPos.Zip, es un archivo de customización que mantiene el look & feel de cada cliente.

Al momento de instalar el BPos (producto base) se genera la estructura de directorios que contendrá las imágenes y recursos para la correcta visualización del POS.

Estas imágenes y recursos pueden ser customizadas y adaptadas para que el POS se visualice con los colores e imágenes de la marca, así como también, de ser necesario, el ocultamiento de botones que no sean utilizados por el cliente.

Cuando se realiza algún desarrollo nuevo o un fix, el mismo se hace sobre el producto. Al momento de  realizar una actualización sobre la versión de producto que opera en el cliente debe considerarse la actualización del archivo ClientPos.Zip, para que al momento de que el cliente realice la actualización en el punto de venta no le superponga el archivo del producto base  y quede con la tipografía, colores y logos correspondientes al cliente.

Los procesos de actualización de productos, en este caso de BPOS son gestionados desde DIRECTOR, Donde desde la versión Multiempresa 2.0 de DIRECTOR se incluye la gestión de los archivos ClientPOS de cada cliente.

Para mas información sobre el proceso de actualización de BPOS y la gestión de archivos ClientPOS.zip puede consultarse el documento:


 DIRECTOR Multiempresas - Manual de usuario 2.0 - SMB,

sección  10.2 Administración de ClientPOS




Arquitectura

    • Archivo clientPOS.zip: Este archivo contiene imágenes y recursos para un cliente en particular. Si no existe el archivo se instalarán las imágenes y recursos predeterminados del producto base.

    • Nombre del Archivo: debe ser clientPOS.zip (es importante que el archivo se comprima directamente en formato zip, no basta con cambiar la extensión de un .rar)

    • Estructura del ClientPOS: Dentro del archivo debe informarse la ruta exacta del archivo a Modificar/Agregar: Ej: "\bridge\app\config\vouchers\templates\sales"

      • Para este ejemplo se crea la siguiente estructura de carpetas:


    • Una vez creada las carpetas se debe guardar el o los archivos como muestra la siguiente imagen:


          


    • Modificación de archivos de imágenes del POS: El archivo "ClientPOS.zip" debe contener en su interior la siguiente estructura: "bridge\app\config\views\themes\synthesis" + "\archivo a modificar"

    • Se puede modificar o agregar cualquier archivo, para eso se debe especificar la ruta correspondiente y el nombre del archivo.


QUÉ CARPETA CORRESPONDE A CADA PANTALLA

Se accede por bridge\app\config\views\themes

  • Si es para la otra pantalla (no cuadrada), las carpetas están en \bridge\app\config\views\themes\synthesis
  • Si es para la pantalla cuadrada, las carpetas están en  \bridge\app\config\views\themes\synthesis-square


Estructura de Directorios y Relación Pantalla/Carpeta

Cada directorio contendrá los archivos .fxml, archivos de estilos (.css), e imágenes que aplican a cada sección del pos.


/synthesis: General, inicio y LogIn


  • Directorios

/additionaldata

  • panelCardPlans.fxml
  • panelCombobox.fxml
  • panelContactMethod.fxml
  • panelCustomers.fxml
  • panelCustomersIdName.fxml
  • panelEditCustomerFiscalData.fxml
  • panelExternalSeller.fxml
  • panelSerializedUnit.fxml
  • panelShipment.fxml
  • panelTenderType.fxml
  • panelTexto.fxml
  • panelTillAccounts.fxml
  • panelUserSellers.fxml
  • panelContactMethod.css


/adjustment

  • cambioValores.css
  • cambioValores.fxml


/authorization

  • icon-key.png
  • remoteAuthorization.fxml
  • supervisor.fxml
  • supervisor.css


/bannerPublicity

bannerPublicity.fxml

  • /synthesis/bannerPublicity/img/
    • imagen2.png

    • imagen3.png

    • publi-coca05.jpg


/budget

  • /synthesis/budget/history/
    • workflowHistory.css

    • workflowHistory.fxml


  • /synthesis/budget/items/
    • budgetItems.css

    • budgetItems.fxml

    • icon-less.png

    • icon-more.png

    • icon-numero-serie.png

    • icon-reject-reason.png


  • /synthesis/budget/notes/
    • notes.css

    • notes.fxml


  • /synthesis/budget/search/
    • icon-check-stock.png

    • icon-fin-consult.png

    • icon-negocio-pedido.png

    • searchBudgets.css

    • searchBudgets.fxml



/commission

  • commissionERPGoals.fxml
  • commissionFilters.fxml
  • commissionGoals.fxml
  • report.css
  • commissionERPGoals.css 


/contingency

  • contingencyAddData.fxml
  • contingencyLoadInput.fxml


/control

  • icon-finish.png
  • icon-quantity.png
  • noVenta.css
  • noVenta.fxml
  • tenderType.fxml

/credits

  • credit.css

  • credit.fxml

  •  /synthesis/credits/cards/
    • cards.fxml
  • /synthesis/credits/paymentCredit/
    • paymentCredit.fxml   


/extraCash

  • extraCashPopup.fxml   


/findcustomers: Búsqueda de clientes

  • findCustomers.css           

  • findCustomers.fxml       

  • icon-alta-empresa.png   

  • icon-alta-persona.png   

  • icon-credit-info-45.png   

  • icon-credit-info.png       

  • icon-edit-persona.png   

  • icon-fidelidad.png       

  • icon-fin-consult.png       

  • icon-lectura-dni.png       

  • icon-notes-customer.png

  • /synthesis/findcustomers/content/party/
    • editCustomer.css           

    • editCustomer.fxml           

    • exemptionPane.fxml       

    • icon-acceptContact.png   

    • icon-acceptData.png       

    • icon-cancelEdit.png       

    • jurisdictionBox.fxml       

    • newCustomer.css           

    • newCustomer.fxml           

    • showCreditInfo.fxml       


/finditems: Búsqueda de ítems

  • findItems.css               

  • findItems.fxml               

  • findItemsAdvanced.fxml   

  • icon-complement.png       

  • icon-fin-consult.png       

  • icon-picture.png           

  • icon-related-items.png   

  • icon-simil.png   

  • icon-stock-general.png   

  • icon-stock.png   

  • itemAdding.css               

  • itemAdding.fxml

  • /synthesis/finditems/itemAttributes/
    • back.png                   

    • bola.png                   

    • bolaSel.png               

    • itemAttributes.css   

    • itemAttributes.fxml   

    • next.png

  • /synthesis/finditems/itemImages/
    • itemImage.css

    • itemImage.fxml    


/findTransaction

  • findTransaction.css   

  • findTransaction.fxml

  • icon-fin-consult.png

  • /synthesis/findTransaction/content/
    • panelAssociatedSales.fxml

    • panelLayaway.css               

    • panelLayaway.fxml        


/findTrxWithoutReference

  • findTrxWithoutReference.fxml   

  • finTrxWithoutReference.css       

  • icon-fin-consult.png


/fiscal

  • fiscalFilesFilters.css   

  • fiscalFilesFilters.fxml   

  • report.css                   

  • reportFilters.fxml


/fonts

  • Montserrat-Black.otf           

  • Montserrat-Bold.otf           

  • Montserrat-Hairline.otf       

  • Montserrat-Light.otf           

  • Montserrat-Regular.otf       

  • SIL Open Font License.txt


/franking

  • confirmar.fxml    


/keyboard

  • back-icon.png               

  • enter-icon.png               

  • icon-quantity.png           

  • keyboard-back-icon.png   

  • keyboard-icon.png           

  • keyboard.css               

  • keyboard.fxml               

  • mic-icon.png               

  • shift-icon.png   


/layaway

  • historicoCuota.fxml   

  • icon-cancel.png       

  • icon-historial-1.png   

  • icon-historial.png   

  • layaway.css               

  • layaway.fxml           

  • layawayPayments.css   

  • layawayPayments.fxml    


/login

  • icon-query-customer.png   

  • icon-query-items.png       

  • icon-supervisor.png       

  • login.css                   

  • login.fxml                   

  • loginSecond.fxml            


/monederogiftcards

  • monederogiftcards.css    
  • monederogiftcards.fxml    


/numpad

  • back-icon.png       

  • enter-icon.png       

  • keyboard-icon.png   

  • numpad.css           

  • numpad.fxml           


/orders

  • /synthesis/orders/history/
    • workflowHistory.css
    • workflowHistory.fxml
    • workflowHistory.fxml.svnpatch.rej   
  • /synthesis/orders/items/
    • icon-less.png               

    • icon-more.png               

    • icon-notes.png               

    • icon-numero-serie.png   

    • icon-reject-reason.png   

    • orderItems.css               

    • orderItems.fxml           

  • /synthesis/orders/notes/
    • notes.css                   

    • notes.fxml                   

    • notes.fxml.svnpatch.rej   

  • /synthesis/orders/search/
    • icon-block.png           

    • icon-fin-consult.png   

    • searchOrders.css       

    • searchOrders.fxml       



/payment

  • icon-amex.png                                       

  • icon-aplazo.png                                   

  • icon-atrato.png                                   

  • icon-back-sales.png                               

  • icon-bbva-cheque.png                               

  • icon-bbva-deposito-efectivo.png           

  • icon-bbva-transferencia.png               

  • icon-bbva.png                                   

  • icon-billetera-virtual.png                   

  • icon-bimo.png                                   

  • icon-card.png                                   

  • icon-cash.png                                   

  • icon-cdni.png                                   

  • icon-checks.png                               

  • icon-contactless.png                           

  • icon-credit-card-off.png                   

  • icon-credit-card-on.png                       

  • icon-credit-card.png                           

  • icon-credit-note.png                           

  • icon-credit.png                               

  • icon-cupones.png                               

  • icon-delivery.png                               

  • icon-dollar.png                               

  • icon-efectivo-real.png                       

  • icon-euros.png                                   

  • icon-fidelidad.png                           

  • icon-finish.png                               

  • icon-flota.png                                   

  • icon-fuga.png                                   

  • icon-giftcard.png                           

  • icon-go-cuotas.png                       

  • icon-hsbc-cheque.png                       

  • icon-hsbc-deposito-efectivo.png       

  • icon-hsbc-transferencia.png           

  • icon-hsbc.png                               

  • icon-intencion-pago.png                   

  • icon-izipay.png                           

  • icon-klap.png                               

  • icon-kueskipay.png                       

  • icon-link-pagos.png                       

  • icon-lkpy.png                               

  • icon-maestro.png                           

  • icon-master.png                           

  • icon-mercado-pago.png                   

  • icon-mobo-efectivo.png                   

  • icon-mobofacil.png                       

  • icon-modo.png                               

  • icon-monedero.png                           

  • icon-naranja.png                           

  • icon-operator.png                           

  • icon-payjoy.png                           

  • icon-paystore.png                           

  • icon-pedidosya.png                       

  • icon-pei.png                               

  • icon-pesosar.png                           

  • icon-promos.png                           

  • icon-rappi.png                               

  • icon-reales.png                           

  • icon-sales.png                               

  • icon-surtidor-sin-retorno.png           

  • icon-todo-pago.png                       

  • icon-trade.png                               

  • icon-transfer.png                           

  • icon-ubereats.png                           

  • icon-visa-electron.png                   

  • icon-visa.png                               

  • icon-void-transaction.png               

  • icon-yacare.png                           

  • pagos.css                                   

  • pagos.fxml                                   

  • pagosSecond.fxml                          

  • /synthesis/payment/cards/
    • cards.fxml   
  • /synthesis/payment/creditNotes/
    • notasCredito.fxml   
  • /synthesis/payment/paymentPlans/
    • bankList.fxml               

    • checkPlans.fxml           

    • layawayPlans.css           

    • layawayPlans.fxml           

    • planesPago.fxml           

    • planesPagoDisjoin.fxml    


/paymentOnAccount

  • infoPagosACuenta.css      

  • pagosCuenta.css
  • infoPagosACuenta.fxml            

  • pagosCuenta.fxml            


/popup

  • icon-aviso.png                                   

  • icon-error.png                                   

  • icon-info.png                                   

  • icon-war.png

  • warningBig.css       

  • warning.css       

  • request.css               

  • error.css   

  • lock.css                                           

  • customerLoyaltyInfo.css                       

  • externalDepositoryAccounts.css        

  • itemRelated.fxml                               

  • lock.fxml                                       

  • posMonitorStatusList.fxml                   

  • recoverTransaction.fxml                       

  • request-boolean.fxml                           

  • request-booleanYesNo.fxml                   

  • request-combobox.fxml                       

  • request-noroot.fxml                           

  • request-notification.fxml                   

  • request-text-simple.fxml                   

  • request-text.fxml                               

  • request.fxml                                   

  • scanValue.fxml                                   

  • selectChangeOption.fxml                       

  • selectCustomerMailOption.fxml                                       

  • selectWitnessReportShiftContentPane.fxml                       

  • selectWitnessReportTenderRepositoryContentPane.fxml   

  • warning.fxml                                                           

  • warningBig.fxml                                                       

  • warningBudget.fxml   

  • changePassword.fxml                                                   

  • channelSelection.fxml                                               

  • customerDiscountContentPane.fxml   

  • background.fxml

  • customerLoyaltyInfo.fxml                                           

  • donationData.fxml        

  • error.fxml                                                    

  • eventsView.fxml                                                       

  • externalDepositoryAccounts.fxml                                   

  • form8001Data.fxml       

  • /synthesis/popup/automaticNCC/
    • automaticNcc.css
    • automaticNcc.fxml    
  • /synthesis/popup/linesPrinter/
    • linesPrinterPopup.fxml   
  • /synthesis/popup/returnItem/
    • returnItemPopup.fxml    


/promoSimulation

  • promoRedeemPointSimulation.css   

  • promoRedeemPointsSimulation.fxml   

  • promoSimulation.css                   

  • promoSimulation.fxml                    


/repairManagement

  • detailRepairManagements.css   

  • detailRepairManagements.fxml   

  • icon-bill.png                       

  • icon-deliver.png                   

  • icon-fin-consult.png

  • /synthesis/repairManagement/search/
    • icon-bill.png   

    • icon-deliver.png

    • icon-fin-consult.png   

    • searchBudgets.css   

    • searchRepairManagements.fxml


/reprint

  • findReprint.css       

  • findReprint.fxml       

  • icon-fin-consult.png   

  • itemsReprint.css       

  • itemsReprint.fxml       

  • reprintFilter.fxml   

  • /synthesis/reprint/reprintTransaction/
    • reprintTransaction.css
    • reprintTransaction.fxml    


/sales

  • icon-afinidad.png                       

  • icon-back-sales.png                   

  • icon-budget-payment.png               

  • icon-cash.png                           

  • icon-cashdrawer-open.png           

  • icon-consult-info.png               

  • icon-credit-card.png                   

  • icon-department-sales.png           

  • icon-discont-amount.png               

  • icon-discont-percent.png           

  • icon-discount-amount.png           

  • icon-discount-percent.png           

  • icon-exchange.png                       

  • icon-finish.png                       

  • icon-gas-station.png                   

  • icon-intencion-pago.png               

  • icon-less.png                           

  • icon-more.png                           

  • icon-notes-reference.png           

  • icon-notes.png                           

  • icon-operator.png                       

  • icon-otherPromotions.png           

  • icon-promos.png                       

  • icon-refresh.png                       

  • icon-related-items.png               

  • icon-seller.png                       

  • icon-shipment.png                       

  • icon-suspend-transaction.png       

  • icon-warranties.png                   

  • sales.css                               

  • sales.fxml                               

  • salesSecond.css                       

  • salesSecond.fxml                       

  • shipmentInnerPane.fxml   


  • /synthesis/sales/content/
    • icon-quantity.png
    • /synthesis/sales/content/dataRequiredWarranty/
      • dataRequieredWarranty.fxml  
    • /synthesis/sales/content/gasStation/
      • button-gas-station-amarillo.png

      • button-gas-station-blanco.png    

      • button-gas-station-verde.png       

      • gasStation.css                           

      • gasStation.fxml                       

      • icon-arrow-left.png                   

      • icon-arrow-right.png              

    • /synthesis/sales/content/notes/
      • attachNotes.css
      • attachNotes.fxml   
    • /synthesis/sales/content/policyNumber/
      • policyNumber.fxml   
    • /synthesis/sales/content/promotions/
      • panelPromociones.css
      • panelPromociones.fxml   
    • /synthesis/sales/content/quickSales/
      • icon-arrow-down.png                   

      • icon-arrow-left.png                   

      • icon-arrow-right.png                   

      • icon-arrow-up.png                       

      • icon-cancel.png                       

      • icon-magnitude.png                   

      • icon-price.png                           

      • icon-quantity.png                       

      • icon-search.png                       

      • panelVenta.css                           

      • quickSales.css                           

      • quickSales.fxml                       

      • suggestions-background-bottom.png

      • suggestions-glow.png                   

      • suggestions-icon.png                   

      • suggestions-ok.png

    • /synthesis/sales/content/relatedfinditems/
      • btn_before_over.png                   

      • btn_before.png                           

      • btn_finalizar_consulta_over.png   

      • btn_finalizar_consulta.png           

      • btn_next_over.png                       

      • btn_next.png                           

      • btn_tecladoalfanumerico_over.png   

      • btn_tecladoalfanumerico.png       

      • btn_tecladonumeros_over.png       

      • btn_tecladonumeros.png               

      • filaTabla.fxml                           

      • findRelatedItemsSales.css           

      • findRelatedItemsSales.fxml           

      • fondo.png                               

      • sub_agregar_articulo_over.png       

      • sub_agregar_articulo.png           

      • sub_ver_stock_gral_over.png       

      • sub_ver_stock_gral.png               

      • sub_ver_stock_over.png               

      • sub_ver_stock.png                       

      • waitingFilaTabla.fxml              

    • /synthesis/sales/content/repairInformation/
      • repairInformation.fxml   
    • /synthesis/sales/content/sales/
      • cambio-de-precios.png                   

      • icon-cancel.png                           

      • icon-cupones.png                           

      • icon-magnitude.png                       

      • icon-notes.png                               

      • icon-price.png                               

      • icon-quantity.png                           

      • icon-search.png                           

      • magnitude.png                               

      • panelVenta.css                               

      • panelVenta.fxml                           

      • suggestions-background-bottom.png   

      • suggestions-glow.png                       

      • suggestions-icon.png                       

      • suggestions-ok.png

      • /synthesis/sales/content/sales/margin/
        • icon-light-green.png       

        • icon-light-grey.png       

        • icon-light-red.png       

        • icon-light-yellow.png   

    • /synthesis/sales/content/stock/
      • btn_aceptar_over.png   

      • btn_aceptar.png       

      • btn_before_over.png   

      • btn_before.png           

      • btn_cancelar_over.png

      • btn_cancelar.png       

      • btn_next_over.png       

      • btn_next.png           

      • filaTabla.fxml           

      • fondo.png               

      • stock.css               

      • stock.fxml                

    • /synthesis/sales/content/stockItem/
      • icon-block.png          

      • icon-unblock.png       

      • stockItem.fxml          

      • stockItemTable.css   

      • stockItemTable.fxml

    • /synthesis/sales/content/stockReserve/
      • btn_aceptar_over.png       

      • btn_aceptar.png           

      • btn_cancelar_over.png   

      • btn_cancelar.png           

      • confirmar.css               

      • confirmar.fxml               

      • fondo_cancelacion.png    

    • /synthesis/sales/content/warranties/
      • warranty.css
      • warranty.fxml
  • /synthesis/sales/departments/
    • departments.xml    
    • /synthesis/sales/departments/images/
      • ckone.png
      • perfumeria.png   
  • /synthesis/sales/itemDetails/
    • detalle.css                

    • detalle.fxml           

    • icon-delete-hover.png

    • icon-delete.png       

    • icon-sale.png           

    • icon-war.png           

  • /synthesis/sales/itemPriceChange/
    • itemPriceChange.css
    • itemPriceChange.fxml   
  • /synthesis/sales/return/
    • itemsDevolucion.css
    • itemsDevolucion.fxml   
  • /synthesis/sales/shipmentDocuments/
    • shipmentDocuments.css
    • shipmentDocuments.fxml    


/screensaver

  • screensaver.css
  • screensaver.fxml   
  • /synthesis/screensaver/img/
    • imagen-BridgeCore.jpg   

    • imagen-BridgeManager.jpg

    • imagen-BridgePOS.jpg       

    • imagen-BridgeWeb.jpg       

    • imagen-Promo.jpg           

    • imagen-Vtol.jpg            


/selection: Pantalla Principal

  • selection.css
  • selection.fxml
  • /synthesis/selection/findTransaction/
    • findTransactionFilters.fxml   
  • /synthesis/selection/order/
    • orderSubTypeSelect.css
    • orderSubTypeSelect.fxml   
  • /synthesis/selection/paymentOnAccount/
    • amountInstallmet.fxml       

    • icon-cash.png                   

    • icon-delete-interest.png   

    • icon-fin-consult.png           

    • icon-foreign.png               

    • installmentForeign.css       

    • installmentForeign.fxml       

    • installmentsView.css           

    • installmentsView.fxml       

    • paymentForeign.css           

    • paymentForeign.fxml           

    • paymentOnAccount.fxml       

  • /synthesis/selection/reason/
    • reasonItemSelect.fxml

    • reasonSelect.css       

    • reasonSelect.fxml       

    • reasonSelectItem.css   

  • /synthesis/selection/recoverTransaction/
    • recoverTransaction.css
    • recoverTransaction.fxml   
  • /synthesis/selection/resumeTransaction/
    • retomarTrx.fxml
    • retomarTrxs.fxml   
    • /synthesis/selection/resumeTransaction/suspended/
      • icon-cash.png                       

      • icon-credit.png                   

      • selectMultiTransactions.css   

      • selectMultiTransactions.fxml   

      • suspendedTransaction.fxml       

  • /synthesis/selection/selectTransaction/
    • proccesTransactions.fxml    
    • selectTransaction.fxml   


/shipment

  • icon-back-sales.png           

  • icon-confirm.png               

  • icon-home.png                   

  • icon-void-transaction.png   

  • shipment.css                   

  • shipment.fxml                   


/storeClose

  • closePeriod.fxml                       

  • error.fxml                               

  • finish.fxml                               

  • init.fxml                               

  • preValidations.fxml                   

  • storeClose.css                           

  • storeClose.fxml                       

  • storeCloseStatus.fxml               

  • validateClosedTerminals.fxml       

  • validateConciliateTerminals.fxml    


/transfer

  • transferenciaTerminal.fxml    


/virtualCharge

  • virtualCharge.fxml
  • virtualChargePopup.fxml   


Archivos de Imagenes '.png'

  • background-dark.png
  • background.png
  • brand-logo.png
  • button-glow.png
  • coupon.png
  • event.png
  • icon-back.png
  • icon-cancel.png
  • icon-clock.png
  • icon-close-session.png
  • icon-edit-persona.png
  • icon-light-green.png
  • icon-light-grey.png
  • icon-light-red.png
  • icon-light-yellow.png
  • icon-lock-session.png
  • icon-operator.png
  • icon-order-notification-not-available.png
  • icon-order-notification-pending.png
  • icon-order-notification.png
  • icon-paging-back.png
  • icon-paging-next.png
  • keyboard-up-button.png
  • person-logo.png
  • returnReference-logo.png
  • sts-logo-full.png
  • sts-logo.png


Estilos

  • general.css
  • loader.css


'.fxml'

  • loader.fxml






ClientPOS - IMÁGENES


Cambio de imagen Background y logos de la marca

Para el cambio de la imagen de fondo y logo de la marca, en el clientPos.zip deberá de reemplazarse los siguientes archivos en el directorio ...\bridge\app\config\views\themes\synthesis:

  • background.png
  • background-dark.png
  • brand-logo.png
  • sts-logo-full.png


Deberá tenerse en cuenta las dimensiones de las imágenes a reemplazar, a fin de que la estética y ubicación en el POS de las imágenes no se vean afectadas.


Ejemplo:

Al iniciar el pos, su pantalla de carga es la siguiente:

Con fondo negro y el logo de producto base.


La pantalla de logIn y el menú principal son los siguientes (producto base):



Luego de reemplazados los archivos background.png, background-dark.png, brand-logo.png, sts-logo-full.png por los de la marca la pantalla de carga, logIn y menú principal se verán de la siguiente forma:





Archivos de Imágenes en 'general.css'

Los archivos .png gestionados por el archivo general.css son:

  • brand-logo.png
  • sts-logo-full.png
  • sts-logo.png
  • icon-cancel.png
  • person-logo.png
  • icon-edit-persona.png
  • returnReference-logo.png
  • icon-close-session.png
  • icon-lock-session.png
  • icon-back.png
  • icon-paging-back.png
  • icon-paging-next.png
  • icon-operator.png
  • keyboard-up-button.png
  • icon-order-notification.png
  • icon-order-notification-not-available.png
  • icon-order-notification-pending.png

Archivos de Imágenes en 'loader.css'

Los archivos .png gestionados por el archivo loader.css (login) son:

  • background.png

El procesamiento para el cambio o actualización de las imágenes (.png) gestionados por todos los .css es el mismo que el descripto mas arriba para el cambio del logo e imagen de fondo.



ClientPOS - ESTILOS


Los archivos CSS tiene la finalidad de definir estilos personalizados para una aplicación, incluyendo atributos visuales como fuente, color, tamaño, márgenes, rellenos, bordes y otros efectos visuales. Los cambios que se realicen en estos archivos modificaran la visual general del POS, asimismo, cada sección podrá contener un archivo .css y .fxml que aplique solamente a la sección que se desea modificar y no a todo el estilo en general, es decir si dos reglas tienen la misma especificidad, la última regla cargada o definida será la que se aplique.


El archivo .css involucrado en la visualización general del POS son:

Archivo general.css

En este apartado realizaremos un breve resumen de las reglas definidas en este archivo.

Definición de Fuentes

El código define varias versiones de la fuente Montserrat usando la regla @font-face. Esto permite que se utilicen diferentes estilos y pesos de la fuente en la aplicación.

general.cass - Fuentes
@font-face {
    font-family: 'Montserrat';
    font-weight: bolder;
    src: url('fonts/Montserrat-Black.otf');
}

@font-face {
    font-family: 'Montserrat';
    font-weight: bold;
    src: url('fonts/Montserrat-Bold.otf');
}

@font-face {
    font-family: 'Montserrat';
    font-weight: normal;
    src: url('fonts/Montserrat-Regular.otf');
}

@font-face {
    font-family: 'Montserrat';
    font-weight: lighter;
    src: url('fonts/Montserrat-Light.otf');
}

@font-face {
    font-family: 'Montserrat Hairline';
    src: url('fonts/Montserrat-Hairline.otf');
}


Definición de Colores Globales

Se definen colores globales para la interfaz utilizando propiedades personalizadas dentro de la clase .root.

general.css - Colores globales
.root {
    brand-color: #000000;
    selection-color: #282525;
    void-color: #D85980;
    voided-color: #D8CF7C;
    focus-text-color: #BBBCBF;
    popup-color: #231F20;
    popup-header-color: #414042;
    pending-color: #D8CF7C;
    accepted-color: #006838;
    button-color: #1B75BC;
    error-color: #7F1320;
    price-box-color: #282525;
}


Estilos de Texto

Define estilos para el texto, incluyendo la familia de fuentes y colores.

general.css - Estilo de Texto
.text{
    -fx-font-family: 'Montserrat';
    -fx-font-weight: normal;
    -fx-text-fill: white;
}

.invalid {
    -fx-text-fill: red;
}


Imágenes de Logos

Define estilos para las imágenes de los logos.

general.css - imagenes
.brand-logo {
    -fx-image: url("brand-logo.png");
}

.sts-logo-full {
    -fx-image: url("sts-logo-full.png");
}

.sts-logo {
    -fx-image: url("sts-logo.png");
    -fx-effect: dropshadow(three-pass-box, shadow-color, 80, 0.45, 20, 0);
}


Estilos de Títulos y Etiquetas

Define estilos específicos para títulos y etiquetas.

general.css - Títulos y Etiquetas
.title {
    -fx-font: bold 28pt 'Montserrat';
    -fx-text-fill: white;
    -fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.4), 7, 0.5, 2, 2);
}

.label, .check-box .label, .radio-button .label {
    -fx-font: bold 10pt 'Montserrat';
    -fx-text-fill: white;
}


Estilos para Áreas de Texto

Define los estilos de las áreas de texto.

general.css - Áreas de Texto
.text-area {
    -fx-background-color: #111111;
    -fx-border-color: #000000;
    -fx-font: lighter 18pt 'Montserrat';
    -fx-text-fill: white;
}


Estilos para Botones

Define estilos para diferentes tipos de botones y sus estados.

general.css - Botones
.button, .toggle-button, .menu-button  {
    -fx-background-color: transparent;
    -fx-font: lighter 20pt 'Montserrat';
    -fx-text-fill: white;
    -fx-border-color: button-color;
    -fx-border-width: 2pt 2pt 2pt 2pt;
}

.button:hover, .menu-button:hover , .toggle-button:hover {
    -fx-background-color: button-color;
}

.button:armed , .toggle-button:armed{
    -fx-background-color: selection-color;
    -fx-scale-x: 1.15;
    -fx-scale-y: 1.15;
}


Estilos para Campos de Texto

Define los estilos para los campos de texto, incluyendo los estados de foco e invalidez.

general.css - Campos de Texto
.text-field {
    -fx-background-color: #111111;
    -fx-border-color: #000000;
    -fx-border-width: 1pt;
    -fx-font: lighter 20pt 'Montserrat';
    -fx-text-fill: white;
}

.text-field:focused{
    -fx-background-color: #0F0F0F;
    -fx-text-fill: focus-text-color;
}

.validable-text-field-invalid {
    -fx-background-color: #111111;
    -fx-border-color: #000000;
    -fx-border-width: 1pt;
    -fx-font: lighter 20pt 'Montserrat';
    -fx-text-fill: red;
}


Estilos para Vistas de Tablas

Define estilos para diferentes partes de las tablas, como los encabezados, filas y celdas.

general.css - Vistas de Tablas
.table-view .column-header .label  {
    -fx-text-fill: white;
    -fx-font: lighter 15pt 'Montserrat';
}

.table-view .table-row-cell:focused {
    -fx-background-color: selection-color;
}

.table-view .table-row-cell:void {
    -fx-background-color: void-color;
}

.table-view .table-row-cell:voided {
    -fx-background-color: voided-color;
}


Estilos para Vistas de Listas

Define estilos para las celdas de las listas.

general.css - Vistas de Listas
.list-view  .list-cell {
    -fx-background-color: transparent;
    -fx-font: lighter 16pt 'Montserrat';
    -fx-text-fill: white;
}


Estilos para Barras de Desplazamiento

Define estilos para las barras de desplazamiento.

general.css - Barras de Desplazamiento
.scroll-bar .thumb {
    -fx-background-color: silver;
    -fx-border-width: 0;
    -fx-background-radius: 12;
}

.scroll-bar .thumb:hover,
.scroll-bar .thumb:pressed {
    -fx-effect: dropshadow(gaussian, selection-color, 27.0, 0.1, 0.0, 0.0);
}


Otros Estilos

Define estilos para otros componentes de la interfaz, como botones específicos, campos personalizados, etc.

general.css - Otros estilos
.lower-bar {
    -fx-background-color: transparent;
    -fx-min-width: 100%;
}

.lower-button {
    -fx-font: 10pt 'Montserrat';
    -fx-text-fill: white;
}

Pantalla de inicio y LogIn

En este apartado realizaremos un breve resumen de las reglas definidas en los archivos loader.css y loader.fxml.

Archivo loader.css

El archivo loader.css contiene reglas de estilo específicas para elementos que están involucrados en la pantalla de login del POS. (Si general.css también tiene reglas para .errorText, estas podrían ser sobrescritas por las de loader.css o viceversa, dependiendo del orden en que se carguen las hojas de estilo).


imagen Background - Login

Esta regla aplica un fondo específico (background.png) . Esto establece el fondo visual de la pantalla de login.

loader.css - background
.root {
    -fx-background-image: url("background.png");
}


Barra de progreso

Esta regla define el color de fondo y el estilo de borde (en este caso, sin borde) para la barra de progreso del login.

loader.css - .progress-bar .track
.progress-bar .track {
    -fx-background-color: black;
    -fx-border-style: none;
}


Barra de progreso interna

loader.css - .progress-bar .bar
.progress-bar .bar {
    -fx-background-color: #195C89;
    -fx-border-style: none;
}


Texto de Error

Define el estilo para los textos de error, incluyendo la fuente, tamaño y color del texto.

loader.css - .errorText
.errorText {
    -fx-font: bold 16pt 'Montserrat';
    -fx-text-fill: #ff0b0c;
}

Archivo loader.fxml

El archivo loader.fxml define la estructura y los componentes de la interfaz de usuario para la pantalla de login del Pos. El orden de las hojas de estilo en el FXML define la prioridad de aplicación de los estilos, con loader.css aplicándose después de general.css.


Estructura del archivo loader.fxml:

Declaración FXML y Importaciones:

Define que el documento es un archivo FXML y especifica la versión y la codificación e importa clases necesarias de Java y JavaFX para usar en este archivo FXML.

loader.fxml - Declaracion fxml
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.net.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>


Contenedor Principal <AnchorPane>

 Es el contenedor principal que permite anclar nodos hijos a las cuatro esquinas del panel, así como también define las dimensiones mínimas, preferidas y máximas del contenedor y aplica la clase de estilo root a este contenedor.

loader.fxml - <AnchorPane>
<AnchorPane id="AnchorPane" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="768.0" minWidth="1024.0" prefHeight="768.0" prefWidth="1360.0" style="" styleClass="root" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
  ...
</AnchorPane>


Barra de Progreso <ProgressBar>

 Define una barra de progreso para mostrar el estado de carga. También especifica las dimensiones y la posición anclada de la barra de progreso. Y establece el progreso inicial en 0%  (progress="0.0")

loader.fxml - <ProgressBar>
<ProgressBar fx:id="progressBar" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="1024.0" prefHeight="14.0" prefWidth="1360.0" progress="0.0" style="" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />

Contenedor Vertical <VBox>

Es un contenedor, que organiza sus hijos en una columna vertical, define la posición y alineación del VBox, aplica la clase de estilo errorText al VBox y sus hijos y contiene un ImageView para mostrar una imagen y un Label para mostrar mensajes de error.

loader.fxml - <VBox>
<VBox alignment="CENTER" layoutX="341.0" layoutY="218.0" spacing="50.0" styleClass="errorText" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
   <children>
      <ImageView pickOnBounds="true" preserveRatio="true" styleClass="sts-logo-full" />
      <Label fx:id="message" styleClass="errorText" />
   </children>
</VBox>

Estilos

 Define que general.css y loader.css se aplicarán a los elementos definidos en este archivo FXML.

loader.fxml - Declaracion fxml
<stylesheets>
  <URL value="@general.css" />
  <URL value="@loader.css" />
</stylesheets>

Interacción con general.css y loader.css

1 .root:

El AnchorPane tiene la clase root, lo que significa que se aplicarán las reglas de estilo de .root de ambas hojas de estilo (general.css y loader.css). La imagen de fondo (background.png) definida en loader.css se aplicará al AnchorPane.

2 .progress-bar .track y .progress-bar .bar:

El ProgressBar utilizará las reglas de estilo definidas en loader.css para la pista y la barra interna, dándoles un fondo negro y un color de barra específico.

3 .errorText:

El VBox y el Label dentro de él usarán la clase errorText que define una fuente en negrita y un color de texto rojo en loader.css. Esta clase asegura que los mensajes de error se muestren claramente.

4 .sts-logo-full:

El ImageView que tiene la clase sts-logo-full aplicará los estilos correspondientes de general.css, como la imagen y el posible efecto de sombra si está definido.




ClientPOS - Layout Desing


Introducción a la Configuración de ClientPOS - Diseño de Layout

En esta sección, se describen los pasos necesarios para ajustar las propiedades de los elementos en ClientPOS a través de archivos .properties. Este enfoque permite realizar cambios en la interfaz de usuario sin modificar directamente los archivos .fxml, lo que facilita la personalización y mantenimiento del diseño.

Propiedades para ajustar cambios en ClientPOS

Para realizar modificaciones en ClientPOS, es necesario seguir estos pasos:

  1. Identificación del archivo .fxml: Primero, localice el archivo .fxml que contiene la definición del componente que desea modificar.

  2. Creación del archivo .properties: Cree un archivo .properties con el mismo nombre que el archivo .fxml y colóquelo en el mismo directorio. Este archivo contendrá las nuevas propiedades que se aplicarán al componente.


Ejemplo de cambio de nombre de un botón

Pasos para cambiar el texto de un botón en el archivo selection.fxml.:


1.Buscar el campo en el archivo .fxml: Encuentre la definición del botón dentro del archivo .fxml. Por ejemplo:


Dentro de este archivo, encontramos la definición para el botón "VENTAS" que se muestra en el MENÚ PRINCIPAL

selection.fxml
...

<Button id="SalesOperation" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#onSalesOperation" prefHeight="100.0" prefWidth="258.0" text="VENTA" textAlignment="CENTER" wrapText="true" />  

...



2.Validar el ID del campo: Asegúrese de que el campo tenga un identificador único (id), como id="SalesOperation".

El id de este botón es id="SalesOperation" y el texto a mostrar esta definido en text="VENTA"


Cree o edite el archivo .properties correspondiente (selection.properties en este caso) y añadir la línea:

selection.properties
# Archivo de propiedades para ajustes en ClientPOS

# Cambios en nombres de botones y etiquetas del MENÚ PRINCIPAL
id.SalesOperation.text.string = SALES

Luego de guardados los cambios, y reiniciado el pos, el menú principal mostrara el nuevo texto para el botón de ventas.

Este procedimiento permite cambiar el texto mostrado en el botón de "VENTA" a "SALES" sin necesidad de editar el archivo .fxml directamente.

Ejemplo de cambio tamaño de un botón

  • Buscar en el 'archivo.fxml' el campo a modificar :  

         {{ <Button id="finishOperationButton" text="BUSCAR"/> }}

  • Validar que tenga id el campo que queremos cambiar el nombre(ej : id="finishOperationButton") 
  • Modificar en archivo.properties  : id.finishOperationButton.prefWidth.double = 100.0


Ejemplo:

  • Nombre del archivo .fxml = findItems.fxml


Dentro de este archivo, encontramos la definición para el botón "BUSCAR" que se muestra en la pantalla de Búsqueda de Artículos

findItems.fxml
...  

<Button id="finishOperationButton" fx:id="finishOperationButton" defaultButton="true" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onFindItems" prefHeight="68.0" prefWidth="160.0" text="BUSCAR" />

...

El id de este botón es id="finishOperationButton" y el texto a mostrar esta definido en text="BUSCAR"

Se genera el archivo findItems.properties con el siguiente formato:

findItems.properties
# Archivo de propiedades para ajustes en ClientPOS

# Cambios en nombres de botones y etiquetas de BUSQUEDA DE ARTICULOS  
id.finishOperationButton.prefWidth.double = 100.0 

Luego de guardados los cambios, y reiniciado el pos, el botón de Buscar se mostrara mas pequeño en la pantalla de búsqueda de artículos.

Ejemplo para agregar o quitar clases .CSS

  • Para modificar la lista de clases se debe agregar una entrada con la propiedad "styleClass" y luego "add" o "remove"
  • Ejemplo: para agregar una clase CSS, agregar: fxid.customerButton.styleClass.add=hide
  • Ejemplo: para quitar una clase CSS, agregar: fxid.customerButton.styleClass.remove=hide

Siguiendo el ejemplo anterior, donde se cambio el tamaño del botón "BUSCAR", para que la visualización del botón sea correcta, deberá de modificarse la fuente de la leyenda BUSCAR en el botón.

Para ello agregaremos en el .properties una nueva línea para agregar una clase al CSS que gestiona las fuentes de los botones, en este caso, "general.css"

findItems.properties
# Archivo de propiedades para ajustes en ClientPOS

# Cambios en nombres de botones y etiquetas de BUSQUEDA DE ARTICULOS  
id.finishOperationButton.prefWidth.double = 100.0


#Cambiar tamaño de fuente al botón BUSCAR en BUSQUEDA DE ARTICULOS
fxid.finishOperationButton.styleClass.add=hide
 

Hecho esto, deberá agregarse una nueva regla en el archivo general.css para que el cambio de fuente solo aplique al botón "BUSCAR"

general.css
...

/* Nueva regla CSS para el botón BUSCAR */
#finishOperationButton {
    -fx-font-size: 10px; /* Ajusta el tamaño de la fuente botón BUSCAR en Buscar Articulo */
}

...

Luego de guardados los cambios, y reiniciado el pos, la leyenda del botón BUSCAR se mostrara mas pequeño en la pantalla de búsqueda de artículos.

Ejemplo para ocultar un botón

  • Buscar en el 'archivo.fxml'el campo a modificar :                                                          
     <Button id="catalogToggleButton" />
  • Validar que tenga id el campo que queremos cambiar el nombre(ej : id="catalogToggleButton") 
  • Modificar la visibilidad del botón en el archivo.properties: id.catalogToggleButton.visible.boolean=false
  • Agregar para que no ocupe lugar el boton: id.catalogToggleButton.managed.boolean=false


Ejemplo:

  • Nombre del archivo .fxml = sales.fxml


Dentro de este archivo, encontramos la definición para el botón "VENTA POR CATALOGO" que se muestra en la pantalla de Venta

sales.fxml
...               

<ToggleButton fx:id="catalogToggleButton" contentDisplay="TOP" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onDepartments" prefHeight="70.0" prefWidth="70.0" textAlignment="CENTER">
               <styleClass>
                  <String fx:value="button" />
                  <String fx:value="department-sales" />
               </styleClass>
               <HBox.margin>
                  <Insets bottom="2.0" left="1.0" right="1.0" top="2.0" />
	           </HBox.margin>
</ToggleButton>

...

El id de este botón es id="catalogToggleButton"

Se genera el archivo sales.properties con el siguiente formato:

sales.properties
# Archivo de propiedades para ajustes en ClientPOS

# Cambios en nombres de botones y etiquetas de Pantalla de VENTA  

#ocultar botón Venta por Catálogo
id.catalogToggleButton.visible.boolean=false

#Ajuste para que no ocupe lugar el botón
id.catalogToggleButton.managed.boolean=false


Luego de guardados los cambios, y reiniciado el pos, el botón de venta por catálogo no se mostrará en la pantalla de venta.

Ejemplo para modificar la ubicación dentro de una grilla (gridPane)

Para modificar el posicionamiento de elementos dentro de un GridPane, se debe agregar al .properties "gridPane" y luego una de las siguientes opciones: "rowIndex", "columnIndex", "rowSpan", "columnSpan".

  • Ejemplo: para cambiar la columna: id.quantity-button.gridPane.columnIndex=4
  • Ejemplo: para cambiar la cantidad de columnas que ocupa: id.search-box-text.gridPane.columnSpan=4


Ejemplo:

  • Nombre del archivo .fxml = newCustomer.fxml


Dentro de este archivo, encontramos la definición para la sección de DATOS PERSONALES en el alta de clientes (tanto cliente Persona o cliente empresa)

newCustomer.fxml
<children>
   <Label text="* DATOS OBLIGATORIOS" GridPane.columnSpan="2147483647" GridPane.rowIndex="5" />
   <Label text="NÚMERO DE INGRESOS BRUTOS" wrapText="true" />
   <Label fx:id="txtJurisdiction" text="JURISDICCIONES" GridPane.rowIndex="2" />
   <ValidableTextField fx:id="txtIibbTaxNumber" GridPane.columnIndex="1" />
	<ComboBox fx:id="cboIibbTaxCondition" prefHeight="57.0" prefWidth="360.0" GridPane.columnIndex="3" />
   <ValidableTextField fx:id="txtIibbIssueDate" GridPane.columnIndex="1" GridPane.rowIndex="1" />
   <ValidableTextField fx:id="txtIibbExpirationDate" GridPane.columnIndex="3" GridPane.rowIndex="1" />
   <Label text="FECHA DE EXPEDICIÓN" wrapText="true" GridPane.rowIndex="1" />
   <Label text="FECHA DE VENCIMIENTO" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="1" />
   <Label layoutX="15.0" layoutY="27.0" text="CONDICIÓN DE INGRESOS BRUTOS" wrapText="true" GridPane.columnIndex="2" />
   <ListView fx:id="jurisdictionsList" prefHeight="200.0" prefWidth="200.0" GridPane.columnSpan="2147483647" GridPane.rowIndex="3" GridPane.rowSpan="2" />
</children>


Para los siguientes Id se modifican las opciones "columnIndex" y "rowIndex"

  • habeasDataCheckBox
  • habeasDataText
  • cboHabeasDataChannels
  • txtHabeasDataChannels
  • txtExternalCode
  • txt1ExternalCode



Se genera el archivo newCustomer.properties con el siguiente formato:

newCustomer.properties
# Archivo de propiedades para ajustes en ClientPOS

# Cambios en Ubicación dentro de la tabla

#ACEPTA
id.habeasDataCheckBox.gridPane.columnIndex=4
id.habeasDataCheckBox.gridPane.rowIndex=4
id.habeasDataText.gridPane.rowIndex=4

#CANAL AUTORIZACION
id.cboHabeasDataChannels.gridPane.columnIndex=5
id.cboHabeasDataChannels.gridPane.rowIndex=4
id.txtHabeasDataChannels.gridPane.columnIndex=6
id.txtHabeasDataChannels.gridPane.rowIndex=4

#ID SOPORTE
id.txtExternalCode.gridPane.rowIndex=2
id.txtExternalCode.gridPane.columnIndex=2
id.txt1ExternalCode.gridPane.rowIndex=2


Luego de guardados los cambios, y reiniciado el pos, la pantalla de Datos personales mostrara otra disposición de los componentes en la tabla.



También editaremos, para el alta de Cliente empresa la solapa de "Ingresos Brutos"

newCustomer.fxml
<children>
   <Label text="* DATOS OBLIGATORIOS" GridPane.columnSpan="2147483647" GridPane.rowIndex="5" />
   <Label text="NÚMERO DE INGRESOS BRUTOS" wrapText="true" />
   <Label fx:id="txtJurisdiction" text="JURISDICCIONES" GridPane.rowIndex="2" />
   <ValidableTextField fx:id="txtIibbTaxNumber" GridPane.columnIndex="1" />
	<ComboBox fx:id="cboIibbTaxCondition" prefHeight="57.0" prefWidth="360.0" GridPane.columnIndex="3" />
   <ValidableTextField fx:id="txtIibbIssueDate" GridPane.columnIndex="1" GridPane.rowIndex="1" />
   <ValidableTextField fx:id="txtIibbExpirationDate" GridPane.columnIndex="3" GridPane.rowIndex="1" />
   <Label text="FECHA DE EXPEDICIÓN" wrapText="true" GridPane.rowIndex="1" />
    <Label text="FECHA DE VENCIMIENTO" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="1" />
    <Label layoutX="15.0" layoutY="27.0" text="CONDICIÓN DE INGRESOS BRUTOS" wrapText="true" GridPane.columnIndex="2" />
   <ListView fx:id="jurisdictionsList" prefHeight="200.0" prefWidth="200.0" GridPane.columnSpan="2147483647" GridPane.rowIndex="3" GridPane.rowSpan="2" />
</children>


Para los siguientes Id se modifican las opciones "columnSpan", "rowSpan" y "rowIndex"

  • txtJurisdiction
  • jurisdictionsList



En el archivo newCustomer.properties agregaremos la siguiente definición para la sección Jurisdicciones

newCustomer.properties
#JURISDICCIONES
id.txtJurisdiction.gridPane.rowIndex=4
id.txtJurisdiction.gridPane.columnSpan=2

id.jurisdictionsList.gridPane.columnSpan=2
id.jurisdictionsList.gridPane.rowIndex=5
id.jurisdictionsList.gridPane.rowSpan=4


Luego de guardados los cambios y reiniciado el pos, la pantalla de Ingresos Brutos para el cliente Empresa mostrara una disposición distinta para "Jurisdicciones" en la tabla.


Ejemplo para Cambio de Nombre de un Botón, modificar las propiedades de columnas y filas de manera independiente:


  • El elemento que se debe referenciar es el GridPane
  • El tercer parámetro en la línea debe ser gridPane.**
  • El cuarto parámetro es una combinación de 3 partes:
    • Las primeras 3 letras pueden ser "col" o "row" para hacer referencia a una columna o fila respectivamente
    • A continuación, sigue un número entero, que referencia al número de fila o columna, comenzando desde cero
    • Luego viene el nombre del campo que se quiere modificar. Por ahora solo soporta los campos de tipo double


#JURISDICCIONES
id.txtJurisdiction.gridPane.rowIndex=4
id.txtJurisdiction.gridPane.columnSpan=2

id.jurisdictionsList.gridPane.columnSpan=2
id.jurisdictionsList.gridPane.rowIndex=5
id.jurisdictionsList.gridPane.rowSpan=4



 
En la sección columnConstraints (o rowConstraints) puede haber tantos tags ColumnConstraints (o RowConstraints) como columnas (o filas), los cuales están en orden.

Para realizar un cambio en esas constraints, se puede realizar de la siguiente manera:
 
id.grilla.gridPane.col0prefWidth=80.0


Ejemplo:

  • Nombre del archivo .fxml = findItems.fxml


Dentro de este archivo, encontramos la definición para la ubicación de la HORA informada en la pantalla de Buscar Artículos

findItems.fxml
      <GridPane id="findCustomerTable" layoutX="10.0" layoutY="10.0" AnchorPane.bottomAnchor="4.0" AnchorPane.rightAnchor="20.0">
         <children>
            <Label text="V" GridPane.columnIndex="9" />
            <HBox fx:id="operatorBox" alignment="CENTER" GridPane.columnSpan="10" GridPane.rowIndex="2">
               <children>
                  <Label alignment="CENTER" text="OPERADOR:  " />
                  <Label id="userLabel" fx:id="userLabel" alignment="CENTER" text="MATEO GÓMEZ" wrapText="true" GridPane.rowIndex="2" />
               </children>
               <GridPane.margin>
                  <Insets />
               </GridPane.margin>
            </HBox>
            <Clock format="dd/MM/yyyy" styleClass="clock-month" uppercase="true" GridPane.rowIndex="1" />
            <Clock format="HH:mm" styleClass="clock-time" GridPane.columnIndex="2" GridPane.rowIndex="1" />
            <Label id="terminal-label" fx:id="terminalLabel" text="10" wrapText="true" GridPane.columnIndex="6" GridPane.rowIndex="1" />
            <MonitorVbox fx:id="statusMonitor" GridPane.columnIndex="8" GridPane.rowIndex="1" />
            <Button fx:id="sessionButton" alignment="CENTER" contentDisplay="TOP" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onCloseSession" prefHeight="70.0" prefWidth="70.0" styleClass="close-session-button" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="12" GridPane.rowSpan="2147483647" />
            <Button fx:id="lockSessionButton" alignment="CENTER" contentDisplay="TOP" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onSpecialLogoff" prefHeight="70.0" prefWidth="70.0" styleClass="lock-session-button" textAlignment="CENTER" visible="false" wrapText="true" GridPane.columnIndex="12" GridPane.rowSpan="2147483647" />
            <Label text="●" GridPane.columnIndex="1" GridPane.rowSpan="2" />
            <Label layoutX="110.0" layoutY="16.0" text="●" GridPane.columnIndex="3" GridPane.rowSpan="2" />
            <Label layoutX="310.0" layoutY="16.0" text="●" GridPane.columnIndex="7" GridPane.rowSpan="2" />
            <Label text="FECHA" />
            <Label text="HORA" GridPane.columnIndex="2" />
            <Label text="T" GridPane.columnIndex="6" />
            <Label text="E" GridPane.columnIndex="8" />
            <Label layoutX="193.0" layoutY="19.0" text="●" GridPane.columnIndex="5" GridPane.rowSpan="2" />
            <Label text="T" GridPane.columnIndex="4" />
            <Label id="store-label" fx:id="storeLabel" text="01" GridPane.columnIndex="4" GridPane.rowIndex="1" />
            <Label fx:id="versionLabel" alignment="BASELINE_RIGHT" GridPane.columnIndex="9" GridPane.rowIndex="1" />
            <Button id="keyboard-button" fx:id="keyboardButton" alignment="CENTER" contentDisplay="TOP" layoutX="396.0" layoutY="10.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onKeyboard" prefHeight="70.0" prefWidth="70.0" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="13" GridPane.rowIndex="1" />
             <Label visible="false" managed="false" text="●" GridPane.columnIndex="10" GridPane.rowSpan="2" />
             <Button visible="false" managed="false" fx:id="orderPendingButton" id="order-pending" onAction="#onShowPendingOrders" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="70.0" prefWidth="70.0" styleClass="icon-order-notification,order-notification-button" GridPane.columnIndex="11" GridPane.rowIndex="1" />
             <Label visible="false" managed="false" fx:id="pendingOrdersQty" text="0" GridPane.columnIndex="11" />
         </children>
         <columnConstraints>
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="80.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="10.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="60.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="10.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="50.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="-Infinity" prefWidth="10.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="50.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="10.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="50.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="54.0" />
             <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="10.0" />
             <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="74.0" />
             <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="74.0" />
            <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="74.0" />
         </columnConstraints>
         <rowConstraints>
            <RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="23.0" vgrow="SOMETIMES" />
            <RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="23.0" vgrow="SOMETIMES" />
            <RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="23.0" vgrow="SOMETIMES" />
         </rowConstraints>
      </GridPane>


Para el siguiente Id del "GridPane"se modifican las opciones "prefWidth":

  • findCustomerTable


En el archivo findItems.properties agregaremos la siguiente definición para el id findCustomerTable

findItems.properties
#cambia las propiedades de columnas y filas de manera independiente - HORA
id.findCustomerTable.gridPane.col2prefWidth=150.0


Luego de guardados los cambios y reiniciado el po, la pantalla de Buscar Artículos mostrará la Hora en pantalla con más espacio a ambos lados.


Ejemplo para cambiar ubicación de elementos dentro de un panel (anchorPane)

Para cambiar el espacio desde el borde del panel hasta los lados de un determinado elemento (dentro de un AnchorPane), se pueden utilizar las opciones "bottomAnchor", "leftAnchor", "rightAnchor", "topAnchor".

Ejemplo:

anchorPane
<AnchorPane ...>
  <children>
    <GridPane id="gridInterno" AnchorPane.leftAnchor="80.0" ...>



En este caso, se puede modificar el espacio lateral izquierda del GridPane con respecto al panel padre AnchorPane con la siguiente línea:

id.gridInterno.leftAnchor.double=80.0


Ejemplo:

  • Nombre del archivo .fxml = selection.fxml


Dentro de este archivo, encontramos la definición para la ubicación de los botones dentro del panel del Menú Principal:

selection.fxml
....

<AnchorPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="1024.0" prefHeight="768.0" prefWidth="1360.0" styleClass="root" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
  <children>
      <VBox layoutX="292.0" layoutY="10.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="1000.0" AnchorPane.topAnchor="150.0">
         <children>
            <Label id="training-mode-label" fx:id="trainingModeLabel" text="MODO ENTRENAMIENTO" textAlignment="RIGHT" visible="false" wrapText="true" GridPane.columnSpan="2147483647" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
         </children>
      </VBox>
    <Pane maxHeight="-Infinity" maxWidth="1.7976931348623157E308" minHeight="-Infinity" prefHeight="78.0" prefWidth="1360.0" styleClass="lower-bar" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />
    <GridPane id="selectionPane" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
      <children>
        <FlowPane fx:id="noSaleFlowPane" hgap="10.0" styleClass="button-box" vgap="10.0" visible="false" GridPane.columnIndex="0" GridPane.rowIndex="2">
          <children>
                <Button id="TenderLoan" fx:id="tenderLoanButton" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#onTenderLoan" prefHeight="120.0" prefWidth="258.0" text="DOTACIÓN" textAlignment="CENTER" />

....


Para el siguiente Id se modifican las opciones "bottomAnchor", "leftAnchor", "rightAnchor"  y "topAnchor"

  • selectionPane


En el archivo selection.properties agregaremos las siguientes definiciones para el id "selectionPane"

selection.properties
#CAMBIAR UBICACIÓN DE ELEMENTOS DENTRO DE UN PANEL (AnchorPane)
id.selectionPane.bottomAnchor.double=80.0
id.selectionPane.leftAnchor.double=80.0
id.selectionPane.rightAnchor.double=80.0
id.selectionPane.topAnchor.double=80.0


Luego de guardados los cambios y reiniciado el pos la pantalla Menú Principal mostrara una disposición distinta de los botones de selección en la tabla.


Ejemplo para cambiar Padding (y otros) en varios tipos de paneles

Esta sección describe como cambiar propiedades como padding u otros que requieren objeto tipo Insets, como se ve en el siguiente ejemplo:

<HBox fx:id="hbox1" ...>
  <padding>
    <Insets top="2.0" right="0" bottom="2.0" left="0 />
  </padding>


La propiedad padding se debe informar como cualquier otra, pero con tipo de campo insets

Este tipo de propiedad tiene la particularidad de que necesita cuatro valores que deben ser especificados si o si.

Los cuatros valores deben estar ordenados en sentido horario partiendo de top, separados con coma y utilizando punto como separador decimal.

Como alternativa se puede colocar un solo número, el cual se aplicará a los 4 campos.


fxid.hbox1.padding.insets=2.0,0,2.0,0


Ejemplo:

  • Nombre del archivo .fxml = pagos.fxml


Dentro de este archivo, encontramos la definición para la ubicación de los botones de pago en la pantalla de pagos

pagos.fxml
....

                  <HBox fx:id="buttonBox" alignment="BOTTOM_LEFT" spacing="5.0" styleClass="button-bar" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0">
                     <children>
                        <Button id="cash" fx:id="button_cash" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="cash" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button id="credit-card" fx:id="button_cards" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="credit-card" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button id="checks" fx:id="button_checks" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="checks" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button id="credit" fx:id="button_credit" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="credit" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button id="mgc" fx:id="monederoGiftCardButton" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="gift-card" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button id="credit-note" fx:id="button_NCC" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="credit-note" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button id="coupon" fx:id="button_coupon" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="coupon" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button id="wallet" fx:id="button_wallet" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="wallet" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button id="transfer" fx:id="button_transfer" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#showBox" prefHeight="70.0" prefWidth="70.0" styleClass="transfer" textAlignment="CENTER" wrapText="true">
                           <HBox.margin>
                              <Insets />
                           </HBox.margin>
                        </Button>
                        <Button fx:id="button_reportIzipay" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" layoutX="30.0" layoutY="12.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onIzipayReport" prefHeight="70.0" prefWidth="70.0" styleClass="izip" textAlignment="CENTER" wrapText="true">
                           <tooltip>
                              <Tooltip text="Reporte detallado" />
                           </tooltip>
                        </Button>
                        <Button fx:id="button_client" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" layoutX="30.0" layoutY="12.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onFindCustomers" prefHeight="70.0" prefWidth="70.0" styleClass="find-customers-button" textAlignment="CENTER" wrapText="true" />
                        <Button fx:id="button_client_fiscal" visible="false" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" layoutX="30.0" layoutY="12.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditCustomersFiscalData" prefHeight="70.0" prefWidth="70.0" styleClass="edit-fiscal-data-customers-button" textAlignment="CENTER" wrapText="true" />
                        <Button fx:id="paymentIntentionButton" alignment="CENTER" contentDisplay="TOP" focusTraversable="false" layoutX="30.0" layoutY="12.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onPaymentIntention" prefHeight="70.0" prefWidth="70.0" styleClass="payment-intention-button" textAlignment="CENTER" wrapText="true" />
                     </children>
                     <padding>
                        <Insets bottom="2.0" left="20.0" top="2.0" />
                     </padding>
                  </HBox>

....


Para el siguiente Id se modifican las opciones de "padding" para el siguiente Id de HBox:

  • buttonBox


En el archivo pagos.properties agregaremos las siguientes definiciones para el id "buttonBox"

pagos.properties
#CAMBIAR PADDING EN VARIOS TIPOS DE PANELES - pagos
fxid.buttonBox.padding.insets=15.0,15.0,180.0,0


Luego de guardados los cambios y reiniciado el pos, los botones de la pantalla de pagos se visualizarán de la siguiente forma:






ClientPOS - Gestión de archivos .VCL


En esta sección explicaremos cómo gestionar los archivos .vcl que organizan la información a imprimir en los comprobantes fiscales y no fiscales. Estos archivos son fundamentales para la personalización y correcta emisión de los documentos legales necesarios en las transacciones de venta y no venta (se trate de un comprobante físico o por medio de los emuladores configurados para el pos).


La estructura de directorios donde se gestionan los documentos comienza en la siguiente ruta:

Estructura de directorios
\bridge\app\config\vouchers

En este directorio, encontrará dos subdirectorios (default y templates) y el archivo clave velocimacros.vm.

A continuación, proporcionaremos una visión detallada de cómo se utilizan estos elementos para configurar y gestionar los comprobantes.

Directorio 'default'

Este directorio contiene los detalles y estructuras de los comprobantes fiscales y no fiscales que el producto mostrará por defecto, es decir, cuando no este personalizado en base a los requerimientos de un cliente en particular. Así como también, las definiciones para la emisión de comprobantes cuando el pos opera en "modo entrenamiento".

Dentro del directorio 'default' encontraremos la siguiente estructura de directorios:

Directorio '\bridge\app\config\vouchers\default\templates"

Dentro del directorio templates, se encuentran los siguientes archivos y directorio:

default.vcl

Estas instrucciones configuran el formato del contenido impreso en los comprobantes

default.vcl
setCharsPerLine 40;
setAlignment left;

trainingMode.vcl

Estas instrucciones configuran el formato del comprobante cuando el sistema está en modo de entrenamiento. 

Las configuraciones aquí presentes permiten que, cuando el sistema está en modo de entrenamiento, se muestre un mensaje destacado en el comprobante, indicando claramente que las operaciones realizadas son solo para fines de práctica y no deben ser consideradas como transacciones reales.

trainingMode.vcl
#parse( "default/templates/defaults.vcl" )

#if( $trainingMode )
	newline;
	newline;
	setAlignment center;
	setFontSize high;
	beginBold;
		text "*** MODO ENTRENAMIENTO ***";
	endBold;
	setFontSize normal;
	newline;
	newline;
#end
  • #if( $trainingMode )

    • Descripción: Inicia una condición que verifica si la variable $trainingMode está activada.
    • Propósito: Ejecuta el bloque de código siguiente solo si el sistema está en modo de entrenamiento.
  • newline;

    • Descripción: Añade una nueva línea.
    • Propósito: Separa las diferentes secciones del texto en el comprobante.
  • setAlignment center;

    • Descripción: Establece la alineación del texto al centro.
    • Propósito: Centra el texto para mejorar la presentación del mensaje de entrenamiento.
  • setFontSize high;

    • Descripción: Configura el tamaño de la fuente a alto.
    • Propósito: Aumenta la visibilidad del mensaje de entrenamiento.
  • beginBold;

    • Descripción: Inicia el texto en negrita.
    • Propósito: Resalta el texto especificado a continuación.
  • text "* MODO ENTRENAMIENTO *";

    • Descripción: Imprime el texto "*** MODO ENTRENAMIENTO ***".
    • Propósito: Indica claramente que el sistema está en modo de entrenamiento.
  • endBold;

    • Descripción: Finaliza el texto en negrita.
    • Propósito: Deja de resaltar el texto.
  • setFontSize normal;

    • Descripción: Configura el tamaño de la fuente a normal.
    • Propósito: Establece el tamaño de la fuente estándar para el texto que sigue.
  • newline;

    • Descripción: Añade una nueva línea.
    • Propósito: Separa las diferentes secciones del texto en el comprobante.
  • #end

    • Descripción: Finaliza la condición iniciada por #if.
    • Propósito: Cierra el bloque condicional.

header.vcl

Estas instrucciones configuran el encabezado del comprobante y permiten reutilizar macros o configuraciones definidas en el archivo trainingMode.vcl.

header.vcl
#parse( "default/templates/trainingMode.vcl" )

setAlignment center;
setFontSize high;
beginBold;
	text "SYNTHESIS R.S.";
endBold;
setFontSize normal;
text "$date   $time";
newline;

setAlignment left;
beginBold;
	text "Tienda: $ticket.storeCode";
	text "Vendedor: $ticket.userName";
	text "Terminal/Trx.: $ticket.terminalCode/$ticket.transactionID.transactionNumber";
endBold;
newline;
  • setAlignment center;

    • Descripción: Establece la alineación del texto al centro.
    • Propósito: Centra el texto para mejorar la presentación del encabezado.
  • setFontSize high;

    • Descripción: Configura el tamaño de la fuente a alto.
    • Propósito: Aumenta la visibilidad del texto en el encabezado.
  • beginBold;

    • Descripción: Inicia el texto en negrita.
    • Propósito: Resalta el texto especificado a continuación.
  • text "SYNTHESIS R.S.";

    • Descripción: Imprime el texto "SYNTHESIS R.S.".
    • Propósito: Muestra el nombre de la empresa en el encabezado del comprobante.
  • endBold;

    • Descripción: Finaliza el texto en negrita.
    • Propósito: Deja de resaltar el texto.
  • setFontSize normal;

    • Descripción: Configura el tamaño de la fuente a normal.
    • Propósito: Establece el tamaño de la fuente estándar para el texto que sigue.
  • text "$date $time";

    • Descripción: Imprime la fecha y hora actuales.
    • Propósito: Proporciona la información de fecha y hora en el encabezado.
  • newline;

    • Descripción: Añade una nueva línea.
    • Propósito: Separa las diferentes secciones del texto en el comprobante.
  • setAlignment left;

    • Descripción: Establece la alineación del texto a la izquierda.
    • Propósito: Alinea el siguiente bloque de texto a la izquierda.
  • beginBold;

    • Descripción: Inicia el texto en negrita.
    • Propósito: Resalta el texto especificado a continuación.
  • text "Tienda: $ticket.storeCode";

    • Descripción: Imprime el código de la tienda.
    • Propósito: Muestra el código de la tienda en el encabezado.
  • text "Vendedor: $ticket.userName";

    • Descripción: Imprime el nombre del vendedor.
    • Propósito: Muestra el nombre del vendedor en el encabezado.
  • text "Terminal/Trx.: $ticket.terminalCode/$ticket.transactionID.transactionNumber";

    • Descripción: Imprime el código de la terminal y el número de la transacción.
    • Propósito: Proporciona información sobre la terminal y la transacción en el encabezado.
  • endBold;

    • Descripción: Finaliza el texto en negrita.
    • Propósito: Deja de resaltar el texto.
  • newline;

    • Descripción: Añade una nueva línea.
    • Propósito: Separa las diferentes secciones del texto en el comprobante.

sts_logo.jpg

Es la imagen a mostrar cuando se emita un comprobante en modo entrenamiento (se trate de un comprobante físico o por medio de los emuladores configurados para el pos)

El nombre del archivo .jpg de este directorio deberá ser siempre sts_logo.jpg para que sea tomado correctamente.


Imagen por default:


Dimensiones por default:

  • 560 x 200

Directorio 'layaway'

También, dentro del directorio 'template' encontraremos el directorio 'layaway' con la definición de las secciones particulares de un comprobante y la siguiente estructura:


Directorios:

Aquí se definirán las estructuras de los siguientes comprobantes para el cliente y para el comprobante testigo de la tienda.

/cancel

  • ticket-client.vcl    
  • ticket-store.vcl    


/create

  • ticket-client.vcl    
  • ticket-store.vcl    


/payment

  • lastPayment-client.vcl       

  • lastPayment-store.vcl       

  • payInstallment-client.vcl   

  • payInstallment-store.vcl    


/retur

  • returnInstallment-client.vcl    
  • returnInstallment-store.vcl    


/status

  • ticketStatus.vcl    



Archivos .vcl

indican la estructura de cada sección del comprobante.

  • customer.vcl

  • discount.vcl

  • footer.vcl

  • header.vcl

  • item.vcl

  • itemList.vcl

  • itemsListHeader.vcl

  • layawayPrinterStatus.vcl

  • layawayStatus.vcl

  • partialPayment.vcl

  • payment.vcl

  • paymentsChange.vcl

  • paymentsList.vcl

  • paymentsListHeader.vcl

  • perceptions.vcl

  • returnPayment.vcl

  • total.vcl

  • totalDiscounts.vcl

Directorio 'templates'

En este directorio encontraremos los archivos y sub-directorios con el detalle para la regionalización de los comprobantes, tanto para el cliente como para la tienda, las imágenes a imprimir en los comprobantes, las cuales podrán ser reemplazadas por las imágenes que utilice el cliente (respetando siempre el nombre del archivo y sus dimensiones), así como también el detalle para las secciones particulares de un comprobante como ser pago con GiftCard, login. reportes, ordenes, entre otras


Directorios

/adjustment

  • footer.vcl               

  • header.vcl               

  • newPayment.vcl           

  • originalPayment.vcl   

  • paymentsChange.vcl   

  • paymentsList.vcl       

  • receipt.vcl               

  • receiptEnding.vcl       

  • trxCanceled.vcl        


/authorization

  • authorizationEntered.vcl    


/cashdrawer       

  • cashdrawerOpen.vcl    


/chile       

  • additionalInfo.vcl           

  • cardVouchers_transact.vcl

  • cardVouchers.vcl               

  • concomitantItem.vcl           

  • concomitantItemsList.vcl   

  • customer.vcl                   

  • defaults.vcl                   

  • discount.vcl                   

  • footer.vcl                       

  • giftCard.vcl                   

  • giftCardVoucher.vcl           

  • giftCardVouchers.vcl           

  • giftTicket.vcl                   

  • header-voucher.vcl           

  • header.vcl                       

  • item.vcl                           

  • itemsList.vcl                   

  • itemsListHeader.vcl           

  • payment.vcl                       

  • paymentsChange.vcl           

  • paymentsList.vcl               

  • paymentsListHeader.vcl       

  • perceptions.vcl               

  • shipment_doc.vcl               

  • ticket.vcl                       

  • ticketBeginning.vcl           

  • ticketEnding.vcl               

  • total.vcl                       

  • totalDiscounts.vcl           

  • trxCanceled.vcl               

  • trxSuspended.vcl               

  • virtualChargeVoucher.vcl    

  • voucher_transact.vcl           

  • voucher.vcl    


  •  /vouchers/templates/chile/shipment/
    • despatchItem.vcl           

    • despatchNote.vcl           

    • despatchNoteCustomer.vcl

    • despatchNoteHeader.vcl   

    • despatchNoteItems.vcl    



/colombia   

  • cardVouchers_transact.vcl

  • cardVouchers.vcl               

  • concomitantItem.vcl           

  • concomitantItemsList.vcl   

  • customer.vcl                   

  • discount.vcl                   

  • footer.vcl                       

  • giftCard.vcl                   

  • giftCardVoucher.vcl           

  • giftCardVouchers.vcl           

  • giftTicket.vcl                   

  • header-voucher.vcl           

  • header.vcl    2.1 kB           

  • item.vcl    3.1 kB               

  • itemsList.vcl                   

  • itemsListHeader.vcl           

  • payment.vcl                       

  • paymentsChange.vcl           

  • paymentsList.vcl               

  • paymentsListHeader.vcl       

  • perceptions.vcl               

  • shipment_doc.vcl               

  • sts_Logcafam.jpg               

  • ticket.vcl                       

  • ticketBeginning.vcl           

  • ticketEnding.vcl               

  • total.vcl                       

  • totalDiscounts.vcl           

  • trxCanceled.vcl               

  • trxSuspended.vcl               

  • virtualChargeVoucher.vcl   

  • voucher_transact.vcl           

  • voucher.vcl                       

  • /vouchers/templates/colombia/shipment/
    • despatchItem.vcl               

    • despatchNote.vcl               

    • despatchNoteCustomer.vcl   

    • despatchNoteHeader.vcl       

    • despatchNoteItems.vcl        


/control  

  • footer.vcl                   

  • header.vcl                   

  • payment.vcl                   

  • paymentsList.vcl           

  • paymentsListHeader.vcl   

  • receipt.vcl                   

  • receiptEnding.vcl           

  • totals.vcl                   

  • trxCanceled.vcl            


/coupons     

  • coupon.vcl    
  • jumbo.vcl    


/device 

  • deviceNotInitialized.vcl    
  • monitoringDisabled.vcl


/ecuador     

  • cardVouchers_fiserv.vcl       

  • cardVouchers_transact.vcl   

  • cardVouchers.vcl               

  • concomitantItem.vcl           

  • concomitantItemsList.vcl   

  • customer.vcl                   

  • discount.vcl                   

  • footer.vcl                       

  • giftCard.vcl                   

  • giftCardVoucher.vcl           

  • giftCardVouchers.vcl           

  • giftTicket.vcl                   

  • header-voucher.vcl           

  • header.vcl                       

  • item.vcl                           

  • itemsList.vcl                   

  • itemsListHeader.vcl           

  • payment.vcl                       

  • paymentsChange.vcl           

  • paymentsList.vcl               

  • paymentsListHeader.vcl       

  • perceptions.vcl               

  • prepaidItem.vcl               

  • prepaidItemsList.vcl           

  • prepaidItemsListHeader.vcl   

  • shipment_doc.vcl               

  • ticket.vcl                       

  • ticketBeginning.vcl           

  • ticketEnding.vcl               

  • total.vcl                       

  • totalDiscounts.vcl           

  • trxCanceled.vcl               

  • trxSuspended.vcl               

  • virtualChargeVoucher.vcl   

  • voucher_fiserv.vcl           

  • voucher_transact.vcl           

  • voucher.vcl                       

  • /vouchers/templates/ecuador/shipment/
    • despatchItem.vcl           

    • despatchNote.vcl           

    • despatchNoteCustomer.vcl

    • despatchNoteHeader.vcl   

    • despatchNoteItems.vcl   


/error    

  • errorOccurred.vcl   


/fidelityCard      

  • fidelityPoints.vcl           

  • giftCardRecharge.vcl           

  • header.vcl                       

  • loyaltyPointsPayment.vcl   


/franking           

  • franking.vcl    


/honduras           

  • cardVouchers_transact.vcl

  • cardVouchers.vcl

  • concomitantItem.vcl

  • concomitantItemsList.vcl

  • customer.vcl

  • defaults.vcl

  • discount.vcl

  • footer.vcl

  • giftCard.vcl

  • giftCardVoucher.vcl

  • giftCardVouchers.vcl

  • giftTicket.vcl

  • header-voucher.vcl

  • header.vcl

  • item.vcl

  • itemsList.vcl

  • itemsListHeader.vcl

  • payment.vcl

  • paymentsChange.vcl

  • paymentsList.vcl

  • paymentsListHeader.vcl

  • perceptions.vcl

  • pinturas.png

  • shipment_doc.vcl

  • sts_Logcafam.jpg

  • ticket.vcl

  • ticketBeginning.vcl

  • ticketEnding.vcl

  • total.vcl

  • totalDiscounts.vcl

  • trxCanceled.vcl

  • trxSuspended.vcl

  • virtualChargeVoucher.vcl

  • voucher_transact.vcl

  • voucher.vcl

  • /vouchers/templates/honduras/shipment/
    • despatchItem.vcl

    • despatchNote.vcl

    • despatchNoteCustomer.vcl

    • despatchNoteHeader.vcl

    • despatchNoteItems.vcl


/izipay               

  • printBatchClosureIzipay.vcl

  • printDetailedReportIzipay.vcl

  • printDetailedReportIzipaySelection.vcl


/login               

  • balance.vcl

  • header.vcl


/monederogiftcard   

  • balance.vcl 

  • header.vcl  


/orders               

  • footer.vcl

  • header.vcl

  • order.vcl  

  • trxCanceled.vcl

  • /vouchers/templates/orders/withNotes/
    • customer.vcl 

    • footer.vcl   

    • header.vcl  

    • item.vcl  

    • items.vcl

    • orderWithNotes.vcl   


/paymentsOnAccount   

  • customer.vcl   

  • footer.vcl   

  • header.vcl  

  • item.vcl   

  • itemsList.vcl

  • payment.vcl

  • paymentOnAccount.vcl

  • paymentsChange.vcl   

  • paymentsList.vcl   

  • paymentsListHeader.vcl

  • total.vcl  


/peru               

  • cardVouchers_fiserv.vcl

  • cardVouchers_transact.vcl

  • cardVouchers.vcl

  • concomitantItem.vcl

  • concomitantItemsList.vcl

  • customer.vcl

  • discount.vcl

  • footer.vcl

  • giftCard.vcl

  • giftCardVoucher.vcl

  • giftCardVouchers.vcl

  • giftTicket.vcl

  • header_Turno.vcl

  • header-voucher.vcl

  • header.vcl

  • item.vcl

  • itemsList.vcl

  • itemsListHeader.vcl

  • payment.vcl

  • paymentsChange.vcl

  • paymentsList.vcl

  • paymentsListHeader.vcl

  • perceptions.vcl

  • prepaidItem.vcl

  • prepaidItemsList.vcl

  • prepaidItemsListHeader.vcl

  • reprintVoucherIzipay.vcl

  • shipment_doc.vcl

  • ticket.vcl

  • ticketBeginning.vcl

  • ticketEnding.vcl

  • total.vcl

  • totalDiscounts.vcl

  • trxCanceled.vcl

  • trxSuspended.vcl

  • virtualChargeVoucher.vcl

  • voucher_fiserv.vcl

  • voucher_transact.vcl

  • voucher.vcl

  • voucherIzipay.vcl

  • /vouchers/templates/peru/shipment/
    • despatchItem.vcl

    • despatchNote.vcl

    • despatchNoteCustomer.vcl   

    • despatchNoteHeader.vcl   

    • despatchNoteItems.vcl   


/report               

  • /vouchers/templates/report/receivedPayments/
    • footer.vcl   

    • header.vcl  

    • receipt.vcl  

    • receivedPaymentsList.vcl   

    • receivedPaymentsListHeader.vcl

  • /vouchers/templates/report/witnessReport/
    • footer.vcl 

    • header.vcl

    • salesByTender.vcl

    • witnessReport.vcl

    • witnessReportSalesByCash.vcl   

    • witnessReportTip.vcl   


/sales               

  • cardVouchers_fiserv.vcl

  • cardVouchers_transact.vcl

  • cardVouchers.vcl

  • concomitantItem.vcl

  • concomitantItemsList.vcl

  • customer.vcl

  • discount.vcl

  • footer.vcl

  • giftCard.vcl

  • giftCardVoucher.vcl

  • giftCardVouchers.vcl

  • giftTicket.vcl

  • header-voucher.vcl

  • header.vcl

  • item.vcl

  • itemsList.vcl

  • itemsListHeader.vcl

  • payment.vcl

  • paymentsChange.vcl

  • paymentsList.vcl

  • paymentsListHeader.vcl

  • perceptions.vcl

  • prepaidItem.vcl

  • prepaidItemsList.vcl

  • prepaidItemsListHeader.vcl

  • reprintVoucherIzipay.vcl

  • shipment_doc.vcl

  • ticket.vcl

  • ticketBeginning.vcl

  • ticketEnding.vcl

  • total.vcl

  • totalDiscounts.vcl

  • trxCanceled.vcl

  • trxSuspended.vcl

  • virtualChargeVoucher.vcl

  • voucher_fiserv.vcl

  • voucher_transact.vcl

  • voucher.vcl

  • voucherIzipay.vcl

  • /vouchers/templates/sales/shipment/
    • despatchItem.vcl 

    • despatchNote.vcl

    • despatchNoteCustomer.vcl   

    • despatchNoteFooter.vcl   

    • despatchNoteHeader.vcl  

    • despatchNoteItems.vcl   


/simpleText           

  • textLines.vcl    


/trainingMode       

  • header.vcl  
  • receipt.vcl  


/uruware               

  • agendas.vcl

  • analisisDeIVA.vcl

  • concomitantItem.vcl

  • concomitantItemsList.vcl

  • customer.vcl

  • discount.vcl

  • footer.vcl

  • giftCard.vcl

  • giftTicket.vcl

  • header.vcl

  • item.vcl

  • itemsList.vcl

  • itemsListHeader.vcl

  • monederoGiftCardVouchers.vcl

  • monederoGiftVoucher.vcl

  • nroticket.vcl

  • payment.vcl

  • paymentsChange.vcl

  • paymentsList.vcl

  • paymentsListHeader.vcl

  • perceptions.vcl

  • ticket.vcl

  • ticketBeginning.vcl

  • ticketEnding.vcl

  • total.vcl

  • totalDiscounts.vcl

  • trxCanceled.vcl

  • trxSuspended.vcl

  • /vouchers/templates/uruware/shipment/
    • despatchItem.vcl

    • despatchNote.vcl

    • despatchNoteCustomer.vcl   

    • despatchNoteHeader.vcl   

    • despatchNoteItems.vcl   


/warranties

  • customer.vcl   

  • footer.vcl   

  • header.vcl   

  • sts_logo.jpg

  • ticket.vcl   

  • warranty.vcl


Archivos .vcl

  • defaults.vcl   

  • header.vcl                   

  • trainingMode.vcl


Archivo de imagen .jpg

  • sts_logo.jpg


velocimacros.vm

El archivo velocimacros.vm es una biblioteca de macros de Velocity que proporciona funcionalidades comunes para el formateo y manipulación de datos en los comprobantes fiscales y no fiscales. Son herramientas que facilitan la personalización y formateo de los comprobantes emitidos por el POS, garantizando que la información se presenta de manera clara y coherente.

A continuación, se describen las macros definidas en este archivo y su propósito:

Formato de Cadenas (fmt)

'fmt'
#macro (fmt $pattern $value)
$FormatUtils.escapeQuotes($FormatUtils.format($pattern, $value))#end

Esta macro formatea una cadena según un patrón específico y escapa las comillas en el resultado.

Formato de Fechas (dateFmt)

'dateFmt'
#macro (dateFmt $pattern $value)
$FormatUtils.formatDate($pattern, $value)#end

Esta macro formatea una fecha según el patrón proporcionado.


Truncar Texto (trunk)

'trunk'
#macro (trunk $text $lenght)
$FormatUtils.trunk($text, $lenght)#end

Esta macro trunca un texto a la longitud especificada.


Ruta Absoluta (absPath)

'absPath'
#macro (absPath $relativePath)
$FormatUtils.getAbsolutePath($relativePath)#end

Esta macro convierte una ruta relativa en una ruta absoluta.


Comandos de Texto VCL (vclTexts)

'vclTexts'
#macro (vclTexts $text)
$FormatUtils.parseIntoTextCommands($text)#end

Esta macro analiza un texto en comandos de texto VCL.


Formato de Múltiples Líneas (fmtMultiline)

'fmtMultiline'
#macro (fmtMultiline $pattern $value)
$FormatUtils.formatMultiline($pattern, $value)#end

Esta macro formatea un valor en múltiples líneas según el patrón especificado.


Ejemplo para cambiar el Logo a imprimir en el comprobante de venta.

Podrá realizarse la personalización de los comprobantes emitidos en el punto de ventas, por ejemplo, para el cambio del logo que se muestra al momento de emitir un comprobante de ventas.


Para ello, en el directorio \bridge\app\config\vouchers\templates encontraremos la imagen que el POS trae por defecto, bajo el nombre sts_logo.jpg.

Imagen pdoducto base para comprobantes. (sts_logo.jpg)



Teniendo la imagen de la marca del cliente en formato .jpg, le cambiaremos el nombre, colocando el mismo nombre que trae el logo del producto base (sts.logo.jpg) y reemplazaremos en el directorio \bridge\app\config\vouchers\templates el archivo existente con el mismo nombre.


Luego podremos reiniciar el pos, y al momento de cerrar una venta podremos observar el nuevo logo del cliente en el comprobante de ventas.








  • Sem rótulos