61 Commitit 35d5bc8b8b ... a39749dd1c

Tekijä SHA1 Viesti Päivämäärä
  OscarGil03 a39749dd1c Pedidos sin mesa ahora crea pedido con mesa para llevar 2 kuukautta sitten
  OscarGil03 d047697650 Merge branch 'desarrollo' into OGdev 2 kuukautta sitten
  OscarGil03 582e7ab344 Ajuste para guardar correctamente las propinas en pedidos sin mesa 2 kuukautta sitten
  OscarGil03 abbcf67934 Ajuste assets 2 kuukautta sitten
  OscarGil03 807f36dab5 Ajustes formato hora y redes sociales en ticket 2 kuukautta sitten
  OscarGil03 7e01fdcb7d Cambio version sdk 3 kuukautta sitten
  OscarGil03 1d6c3d91b8 Propina en Corte de caja 3 kuukautta sitten
  OscarGil03 509e6b87e7 Instalador 3 kuukautta sitten
  OscarGil03 8f381b1e1e Actualización configuración 3 kuukautta sitten
  OscarGil03 92ded34352 Pedidos ahora llevan corte caja id y se pueden pasar de un corte de caja a otro 3 kuukautta sitten
  OscarGil03 eda469f3f5 Cambio version 4 kuukautta sitten
  OscarGil03 0e18511ca2 Modulo corte de caja, pedidos con mesa y token totp seguridad 4 kuukautta sitten
  OscarGil03 b0e13e5055 Script generacion setup 4 kuukautta sitten
  OscarGil03 35d6312c17 Eliminacion de pedidos y mostrar mesa en grid 5 kuukautta sitten
  OscarGil03 9e2916fd6d Validacion mesas e impresion de ticket 5 kuukautta sitten
  OscarGil03 e937f2d6b8 Pedido Mesas 5 kuukautta sitten
  OscarGil03 319ceeed89 Actualizacion mesas 5 kuukautta sitten
  OscarGil03 166db8d37a Actualizacion version con corte de caja y ajuste en la creacion de pedido 5 kuukautta sitten
  OscarGil03 ac5bef4da5 Sincronizacion forzosa con imagenes 6 kuukautta sitten
  OscarGil03 777cedeceb Boton para mostrar contraseña 6 kuukautta sitten
  OscarGil03 e4e8ac923f cambio versión 6 kuukautta sitten
  OscarGil03 9bea99c012 Se guarda idUsuario en pedido y se manda a sincronización 6 kuukautta sitten
  OscarGil03 f059d41e6f Validación de clave en login 6 kuukautta sitten
  OscarGil03 e9fde029c1 Forzar sincronización y sincronizacion de clave usuario 6 kuukautta sitten
  OscarGil03 a79399eb4d Campo minimo para validar un minimo obligatorio al generar un pedido 6 kuukautta sitten
  OscarGil03 4e9cf6c077 Actualizacion de pantalla al sincronizar productos y categorias 6 kuukautta sitten
  OscarGil03 bf6b1deab3 Sobreescribe la la sincronizacion de toppings para evitar duplicados 6 kuukautta sitten
  OscarGil03 7318f130d9 Lista de toppings descolapsada por default y muestra el maximo por categoria 6 kuukautta sitten
  OscarGil03 5d8fea1497 Cambio de version 6 kuukautta sitten
  OscarGil03 a0e47e578f Clave sucursal cambia dependiendo del seleccionado en modulo de sucursales 6 kuukautta sitten
  OscarGil03 ffa2a4cf95 Prefijo en la versión dependiendo a donde apunte la API 6 kuukautta sitten
  OscarGil03 47472236c7 Permiso de administracion, cancelar pedido y ver reportes 6 kuukautta sitten
  OscarGil03 be2fb5533f Sincronizacion de toppings seleccionables y sincronizacion de toppings del pedido seleccionados 6 kuukautta sitten
  OscarGil03 a21320fb30 Sincronizacion de toppings e imagenes 6 kuukautta sitten
  OscarGil03 5df5fa09c2 Se empezó a implementar las validaciones con permisos 6 kuukautta sitten
  OscarGil03 db2b9090e7 Actualizacion de permisos, usuarios y usuarios permisos cuando la fecha de modificado sea mas reciente 6 kuukautta sitten
  OscarGil03 fd910044da Utilización SessionStorage para mantener sesión iniciada 6 kuukautta sitten
  OscarGil03 d78be1be14 Login Local con correo y selector de sucursal 6 kuukautta sitten
  OscarGil03 009baec027 Sincronizacion de permisos, usuarios y usuarios permisos 6 kuukautta sitten
  OscarGil03 a221a44d4f Selector de sucursales 6 kuukautta sitten
  OscarGil03 89eba6770c Selector de sucursales 6 kuukautta sitten
  OscarGil03 6c117ee208 claveSucursal en parametros de productos y categorias y sincronizacion de sucursales 6 kuukautta sitten
  OscarGil03 afb9bf17cf Iconos App 6 kuukautta sitten
  OscarGil03 20aca5b4ce Cambio nombre 6 kuukautta sitten
  OscarGil03 2ea88fb8e7 Sincronizacion productos y ajustes variables 6 kuukautta sitten
  OscarGil03 b62a3ab36c Ajustes variables, pedidos, productos y categorias 7 kuukautta sitten
  OscarGil03 549cf23782 Sincronizacion de pedidos, productos y categorías 7 kuukautta sitten
  OscarGil03 663978bdeb Descuentos, tipos de pago y variables 8 kuukautta sitten
  OscarGil03 ca5ce8da9c ticket pedido 9 kuukautta sitten
  OscarGil03 7f6d87310c Version nueva 9 kuukautta sitten
  OscarGil03 2eca21dfd2 local bd y pedidos 1 vuosi sitten
  OscarGil03 06d2d3edd2 Se arregló limite de obtencion de topings 1 vuosi sitten
  OscarGil03 5fd9286b68 Se arregló el limite en la obtencion de topings 1 vuosi sitten
  OscarGil03 23d40ed69d Buscador productos en pedido form 1 vuosi sitten
  OscarGil03 bf87d5e4e6 Forms de topings y categoria topings actualizado 1 vuosi sitten
  OscarGil03 750f798fb5 Categoría de topings y topings en pedido form 1 vuosi sitten
  OscarGil03 1c10fe75bd Topings y categoria de topings 1 vuosi sitten
  OscarGil03 a65237adcf Productos y categoría de productos 1 vuosi sitten
  OscarGil03 db179bdc59 Categoria Productos 1 vuosi sitten
  OscarGil03 d57b1093d4 primer commit 1 vuosi sitten
  OscarGil03 aa729f12a1 first commit 1 vuosi sitten

BIN
assets/igLogo.png


BIN
assets/phoneImage.png


BIN
assets/web.png


+ 4 - 1
lib/views/pedido/pedido_form.dart

@@ -949,6 +949,7 @@ class _PedidoFormState extends State<PedidoForm> {
       tipoPago: _obtenerTipoPago(),
       cantEfectivo: cantEfectivo,
       cantTarjeta: cantTarjeta,
+      idMesa: 28,
       cantTransferencia: cantTransferencia,
       uuid: Uuid().v4(),
     );
@@ -989,6 +990,8 @@ class _PedidoFormState extends State<PedidoForm> {
     bool result = await Provider.of<PedidoViewModel>(context, listen: false)
         .guardarPedidoLocal(pedido: nuevoPedido);
 
+    await _guardarPropina(nuevoPedido.id!);
+
     if (!mounted) return;
 
     if (result) {
@@ -1549,7 +1552,7 @@ class _PedidoFormState extends State<PedidoForm> {
                       fixedSize: const Size(250, 50),
                     ),
                     child: Text(
-                      'Finalizar Pedido Sin Mesa',
+                      'Finalizar Pedido Para Llevar',
                       style: TextStyle(color: AppTheme.quaternary),
                     ),
                   ),

+ 56 - 4
lib/views/pedido/pedido_ticket.dart

@@ -10,17 +10,32 @@ import 'package:flutter/services.dart' show rootBundle;
 
 import '../../viewmodels/viewmodels.dart';
 
+const int _gamepadCode = 0xf11b;
+
 Future<void> imprimirTicketsJuntos(BuildContext context, Pedido pedido) async {
   bool ticketCocinaActivo =
       await Provider.of<VariableViewModel>(context, listen: false)
           .isVariableActive('ticket_cocina');
+
   final pdf = pw.Document();
   final image = pw.MemoryImage(
     (await rootBundle.load('assets/logo.png')).buffer.asUint8List(),
   );
 
+  final igImage = pw.MemoryImage(
+    (await rootBundle.load('assets/igLogo.png')).buffer.asUint8List(),
+  );
+
+  final phoneImage = pw.MemoryImage(
+    (await rootBundle.load('assets/phoneImage.png')).buffer.asUint8List(),
+  );
+
+  final webImage = pw.MemoryImage(
+    (await rootBundle.load('assets/web.png')).buffer.asUint8List(),
+  );
+
   pdf.addPage(
-    generarPaginaPrimerTicket(pedido, image),
+    generarPaginaPrimerTicket(pedido, image, igImage, phoneImage, webImage),
   );
 
   if (ticketCocinaActivo) {
@@ -32,7 +47,12 @@ Future<void> imprimirTicketsJuntos(BuildContext context, Pedido pedido) async {
   await printPdf(Uint8List.fromList(await pdf.save()));
 }
 
-pw.Page generarPaginaPrimerTicket(Pedido pedido, pw.MemoryImage image) {
+pw.Page generarPaginaPrimerTicket(
+    Pedido pedido,
+    pw.MemoryImage image,
+    pw.MemoryImage igImage,
+    pw.MemoryImage phoneImage,
+    pw.MemoryImage webImage) {
   final numberFormat = NumberFormat('#,##0.00', 'es_MX');
 
   double totalSinDescuento = 0;
@@ -122,10 +142,33 @@ pw.Page generarPaginaPrimerTicket(Pedido pedido, pw.MemoryImage image) {
                             style: pw.TextStyle(
                                 fontSize: 12, fontWeight: pw.FontWeight.bold))),
                     pw.SizedBox(height: 10),
-                    pw.Text('Fecha: ${pedido.peticion}',
+                    pw.Row(children: []),
+                    pw.Text('Fecha: ${_formatDateTime(pedido.peticion)}',
                         style: const pw.TextStyle(fontSize: 9)),
                     pw.Text('Hermosillo',
                         style: const pw.TextStyle(fontSize: 9)),
+                    pw.SizedBox(height: 5),
+                    pw.Row(children: [
+                      pw.Image(igImage, width: 8, height: 8),
+                      pw.SizedBox(width: 20),
+                      pw.Text('turquessacoffee',
+                          style: pw.TextStyle(fontSize: 9)),
+                    ]),
+                    pw.Row(children: [
+                      pw.Image(phoneImage, width: 8, height: 8),
+                      pw.SizedBox(width: 25),
+                      pw.Text('662-466-6626',
+                          textAlign: pw.TextAlign.center,
+                          style: pw.TextStyle(fontSize: 9)),
+                    ]),
+                    pw.Row(
+                        mainAxisAlignment: pw.MainAxisAlignment.spaceBetween,
+                        children: [
+                          pw.Image(webImage, width: 8, height: 8),
+                          pw.SizedBox(width: 5),
+                          pw.Text('https://turquessacoffee.com/',
+                              style: pw.TextStyle(fontSize: 9))
+                        ]),
                   ])),
               pw.SizedBox(height: 10),
               pw.Text('Pedido: ${pedido.folio}',
@@ -203,7 +246,7 @@ pw.Page generarPaginaSegundoTicket(Pedido pedido) {
         List<pw.Widget> content = [
           pw.Padding(
               padding: const pw.EdgeInsets.only(right: 15),
-              child: pw.Text('Fecha: ${pedido.peticion}',
+              child: pw.Text('Fecha: ${_formatDateTime(pedido.peticion)}',
                   style: pw.TextStyle(
                       fontSize: 9, fontWeight: pw.FontWeight.bold))),
           pw.SizedBox(height: 5),
@@ -292,3 +335,12 @@ Future<void> printPdf(Uint8List pdfBytes) async {
     onLayout: (PdfPageFormat format) => pdfBytes,
   );
 }
+
+String _formatDateTime(String? dateTimeString) {
+  if (dateTimeString == null) return "Sin fecha";
+
+  DateTime parsedDate = DateTime.parse(dateTimeString);
+
+  var formatter = DateFormat('dd-MM-yyyy HH:mm:ss');
+  return formatter.format(parsedDate.toLocal());
+}

+ 3 - 0
pubspec.yaml

@@ -107,7 +107,10 @@ flutter:
   # To add assets to your application, add an assets section, like this:
   assets:
     - assets/logo.png
+    - assets/igLogo.png
     - assets/logo-BN.png
+    - assets/phoneImage.png
+    - assets/web.png
 
   # An image asset can refer to one or more resolution-specific "variants", see
   # https://flutter.dev/assets-and-images/#resolution-aware