����JFIF�����%%��� }!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������� w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|��O�������h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,��������ο�O�P��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������k�w���~���v��������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j�?�5o�%��?��� g����U@�����&O3�����a�;�^=�wH���D��/��*� �fX�I���,������k?g_���?�5o�%��?��� g����U@�F�����������*������?�o�}��Τ~g��ʀ�#V��Y������~ο�T�j��K/� ������������z��������#;�~���A�;��� w�F�����������*���տ��_�@�o��5����EU������������u�誠��W��[�����������O��?jW���@��տ���@�o��5����EM������������v�訠�#V��Y�������������V��Zv��~����vw�~���c�Q@���,��~���kgo���?�5o�%��/��� o����Q@��o�%�>�ߤ���߳����S������?��o�%�~�ߠ�d�߳����S����g�P��j��K?� _������������[� g�D����[�;�TP7���������'Ѿ���=��;/�P��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���a������۔���B{���ea�`T�+ �n%Ц �����j��K?� _������������[� g�D����[�;�TP���,��~���kgo����?���%�/�~�����#����x��c�~�q�v�t`ȫ��_'h���������'�]�;{s� Pp=N= 5���%�����ڜs�����=���J��A@�����Kp�b��}��X�����4g v+:�Բ�+60�ʩ,� @�����������I �uO�����ToUv��bgUl�cP�T?�#V��Y������������j��K?� _����������!��X��]���������TK�|4��`� ��#��P\y��aa >NgL��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���o�F�����$��ہ�� ��vݞr6��S�q''*02���[� g�D����[�;�TP���,��~���kgo���?�5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE������������v�訠��������~1�o���}G�L�������5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE5����%�˷���r�v����y�\~���)(?0���=[� i����>��gc��N=����5o�%��/��� o����Q@�F�����������*(��W��Z�l����m#���X�wn_�j`0C6윅����5o�%��/��� o����Q@��տ��y9���gbO�G�5@�n�>���#V��Y������~ο�T��V��Y����9�gc��s�T.�?Z_��[� e�D����Y�:��UP���,������k?g_����_�=_� n�~~�rI������w�,"~ԓ�!72���)( u��#V��Y������~ο�T�j��K/� ��������������K
�����Kr_���}�De>~��Z=��pjX�n[p(�"� �a,Ub�/�×�<����;��<�����K>��o���[�:����V���,��$��ϧ�*�����5O����տ��_�@�o��5����EU5��o�%����?�ꜜm�_�;>Gbs�S�����@��տ��_�@�o��5����EU ��տ��}�~�����v?�������-��o�l��~�ȥ�v����r��B1���@��տ���A�?����ggP��c�S�`@%�*����տ��_�@�o��5����EU������������u�誠7���� O���!c�|0��ёv��4�+�X�Vx�RX3��8����K>��o���[�:���u#�x��#V��Y������~ο�T�j��K/� ������������[� e�D����Y�:��UP���,������k?g_���O��[� g�D����[�:��T��=_� k����~��k����c�;����.8����c��z��Ͽ�/��zc�o����F?Z_��[� e�D����Y�:��UP���,������k?g_���C���,�v����v�o���H������(�z���w�/�����v ��T.G��Ϡ���տ��_�@�o��5����EU������������u�誠��W��[��'����%��o���:�Cڕ�R̀���j���������?�o���[�;������g0q�?��o�%�>o�_��>�gf����~4�������������u�誠�z���7�/��o���������_��[� e�D����Y�:��UP���,������k?g_���C���,�|�����o��;�Ԟ��9�l�z��ؠ3|��O�X�~���;~�q����Z�F�����������*���տ��_�@�o��5����EU!��տ��}�~����-��G��I�T�������������u�誠�#V��Y������~ο�T�j��K/� ����������#�=_� n|���KbB�gtdM��"�ڒA#n�63�6�m�P�����,���/���gS�u����#�9��5o�%��?��� g����U@��o�%�o�_�����u��'�������?��o��� ���3��?go���|m�ڇ���-S�O��x��>���^�����7����x�]_�>�qke>���m��4��7P�Yހ��
0byt3m1n1
0byt3m1n1
Path:
/
hermes
/
bosweb
/
web
/
sb_web
/
web
/
sb_web
/
b2651
/
pinturasvictoria.com
/
vistas
/
[
Home
]
File: rmonitor.php
<?php session_start(); $empresax = $_SESSION['empresa']; $tokeng = $_SESSION['token']; $username = $_SESSION['username']; $ruta = $_SESSION['ruta']; $nivel = $_SESSION['nivel']; $almacen = $_SESSION['almacen']; $_SESSION['almacen'] = $almacen; $almacenx = $_SESSION['almacenx']; $_SESSION['username'] = $username; $_SESSION['ruta'] = $ruta; $_SESSION['nivel'] = $nivel; if ($username == "") { header('Location: /index.php '); } $conn = new mysqli($_SESSION['host'], $_SESSION['usuario'], $_SESSION['pass'], $_SESSION['base']); $sql = "SELECT mesa FROM ventas WHERE cobra = 0 GROUP BY mesa"; // Ejecutar la consulta $result = $conn->query($sql); // Inicializar un array para almacenar las mesas presentes en los resultados $mesas_presentes = []; // Verificar si se encontraron resultados if ($result->num_rows > 0) { // Iterar sobre los resultados y almacenar las mesas presentes while ($row = $result->fetch_assoc()) { // Almacenar el número de mesa en el array $mesas_presentes[] = $row["mesa"]; } } // Cerrar la conexión $conn->close(); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Monitor</title> <?php include_once('head.php'); ?> <style type="text/css"> body { font-family: 'Montserrat'; font-size: 13px; } .ui-widget { font-family: 'Montserrat'; font-size: 13px; color: #000000; max-height: 500px; } #input { height: 50px; font-size: 11px; } table { border-collapse: collapse; width: 100%; border: 1px solid #ccc; font-family: Arial, sans-serif; } th, td { border: 1px solid #ccc; padding: 10px; text-align: center; } th { background-color: #f2f2f2; } tr:nth-child(even) { background-color: #f2f2f2; } .cap-height p { max-height: 3em; overflow: hidden; } tbody tr:nth-child(odd) { background: #eee; } .centro { padding: 0.5rem; background: #6D6A6A; color: white; text-align: center; font-size: 12px; } #cuadro { background: none; padding: 25px; margin: 5px auto; } #titulo { background-color: #000; animation: color-change 1s ease; color: white; } .mesa { position: relative; width: 80px; height: 80px; background-image: url('../images/mesa.png'); background-size: contain; background-repeat: no-repeat; margin: 5px; cursor: pointer; border-radius: 10px; } .num-mesa { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 30px; color: white; font-weight: bold; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); } .ocupada { background-color: #ff7777; } .mesa.presente { background-color: #83f188; } #mesas-container { background-color: #e6e6e6; padding: 20px; display: flex; margin: auto; border: 1px solid #000; border-radius: 10px; flex-wrap: wrap; justify-content: center; } .tabpanel { display: flex; justify-content: space-between; margin: 20px 0; } .tab { flex: 1; text-align: center; padding: 10px; cursor: pointer; background-color: #f1f1f1; border-radius: 5px; margin-right: 5px; } .tab.active { background-color: #ccc; font-weight: bold; } #area1, #area2 { display: none; } #area1.active, #area2.active { display: flex; } </style> </head> <body> <div style="margin-right: 10px;"> <div id="titulo"> <center> <h1 style="color: white;">Monitor de Mesas</h1> </center> </div> <div class="tabpanel"> <div id="tab1" class="tab active" onclick="showArea('area1')">Área 1</div> <div id="tab2" class="tab" onclick="showArea('area2')">Área 2</div> </div> <div id="area1" class="mesas-container active"> <?php $total_mesas = 20; for ($i = 1; $i <= $total_mesas; $i++) { $clase_mesa = in_array($i, $mesas_presentes) ? 'presente' : ''; echo '<div class="mesa ' . $clase_mesa . '" id="mesa_' . $i . '" onclick="cambiarEstado(' . $i . ')"><div class="num-mesa">' . $i . '</div></div>'; } ?> </div> <div id="area2" class="mesas-container"> <?php $total_mesas = 20; for ($i = 21; $i <= $total_mesas + 20; $i++) { $clase_mesa = in_array($i, $mesas_presentes) ? 'presente' : ''; echo '<div class="mesa ' . $clase_mesa . '" id="mesa_' . $i . '" onclick="cambiarEstado(' . $i . ')"><div class="num-mesa">' . $i . '</div></div>'; } ?> </div> <br> <div class="row" style="background-color: #dbfbdd; padding: 10px;"> <div class="col-md-1 "> </div> <div class="col-md-2 col-12"> <input type="checkbox" name="llevar" id="llevar"> <label for="llevar" style="font-size: 14px;">PARA LLEVAR</label> </div> <div class="col-md-2 col-12 " style="background-color: #b7f5b4; padding: 6px; border-radius: 10px;"> <input type="checkbox" name="domi" id="domi"> <label for="domi" style="font-size: 14px;">A DOMICILIO</label> </div> <div class="col-md-2 col-12"> <input type="checkbox" name="barra" id="barra"> <label for="barra" style="font-size: 14px;">BARRA</label> </div> </div> <br> <div class="row"> <div class="col-md-10 col-12"> <div id="tablaVentas"></div> <h2 id="totalfa"></h2> </div> <div class="col-md-2 col-12"> <a href="rmonitor.php" class="btn btn-primary btn-sm form-control" style="margin: 5px; margin-right: 16px; border-radius: 20px; border: 1px solid #666; ">Actualizar</a> <a onclick="imprimirComanda()" class="btn btn-info btn-sm form-control" style="margin: 5px; margin-right: 16px; border-radius: 20px; border: 1px solid #666;"><i class="fas fa-print"></i> Cuenta</a> <a onclick="marcarMesaComoCobrada()" class="btn btn-secondary btn-sm form-control" style="margin: 5px; margin-right: 16px; border-radius: 20px; border: 1px solid #666;">Cobrar Mesa</a> </div> </div> </body> <br><br><br><br> <?php include_once('footer.php'); ?> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/" crossorigin="anonymous"> </script> <script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script> <script> $(document).ready(function() { // Mostrar la primera área y tab por defecto showArea('area1'); }); </script> <script> function showArea(areaId) { document.getElementById('area1').classList.remove('active'); document.getElementById('area2').classList.remove('active'); document.getElementById('tab1').classList.remove('active'); document.getElementById('tab2').classList.remove('active'); document.getElementById(areaId).classList.add('active'); document.getElementById('tab' + (areaId === 'area1' ? '1' : '2')).classList.add('active'); } </script> <script> var numeroMesaSeleccionada; var totalmesa; var domi = document.getElementById('domi'); var llevar = document.getElementById('llevar'); domi.addEventListener('change', function() { if (domi.checked) { llevar.checked = false; } }); llevar.addEventListener('change', function() { if (llevar.checked) { domi.checked = false; } }); function cambiarEstado(numeroMesa) { var mesa = document.getElementById('mesa_' + numeroMesa); numeroMesaSeleccionada = numeroMesa; // Guardar el número de mesa seleccionada // Realizar la solicitud Fetch fetch('js_buscamesa.php', { method: 'POST', body: JSON.stringify({ mesa: numeroMesa }), headers: { 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => { // Manejar la respuesta de la solicitud Fetch // console.log(data); // Crear la tabla HTML para mostrar los datos de ventas var totalf = 0; var tablaHTML = '<table>'; tablaHTML += '<tr><th>Cantidad</th><th>Productos</th><th>Observaciones</th><th>Total</th><th>Comanda</th><th>Cliente</th><th>Acciones</th></tr>'; // Agregamos una nueva cabecera para las acciones data.forEach(function(venta) { tablaHTML += '<tr>'; tablaHTML += '<td>' + venta.cantidad + '</td>'; tablaHTML += '<td style="text-align: left;">' + venta.nombre + '</td>'; tablaHTML += '<td style="text-align: left;">' + venta.serie + '</td>'; tablaHTML += '<td>' + (venta.total * venta.cantidad).toFixed(2) + '</td>'; tablaHTML += '<td>' + venta.idfactura + '</td>'; // Columna adicional para mostrar el número de venta.id tablaHTML += '<td>' + venta.cliente + '</td>'; tablaHTML += '<td>'; // Comenzamos la celda de acciones tablaHTML += '<a class="imprimir-btn" title="Imprimir comanda para cocina" href="#" onclick="imprimirFactura(' + venta.idfactura + ')"><i class="fas fa-print" style="font-size: 24px; margin-right: 3px;"></i></a>'; tablaHTML += '<a class="imprimir-btn2" title="Imprimir cuenta por separado" href="#" onclick="imprimirFactura3(' + venta.idfactura + ')"><i class="fas fa-print" style="font-size: 24px; margin-right: 3px;"></i></a>'; tablaHTML += '<a class="imprimir-btn" title="Imprimir cuenta por Cliente" href="#" onclick="imprimirFactura4(' + venta.idfactura + ', \'' + venta.cliente + '\')"><i class="fas fa-print" style="font-size: 24px; margin-right: 3px;"></i></a>'; tablaHTML += '<a class="imprimir-btn2" title="Imprimir comanda completa para cocina" href="#" onclick="imprimirFactura2(' + venta.idfactura + ')"><i class="fas fa-print" style="font-size: 24px; margin-right: 3px;"></i></a>'; tablaHTML += '<a class="eliminar-btn" title="Eliminar Producto" href="#" onclick="eliminarFactura(' + venta.idventa + ', \'' + venta.nombre + '\')"><i class="fas fa-trash" style="font-size: 24px; margin-right: 3px;"></i></a>'; tablaHTML += '</tr>'; totalf += venta.total * venta.cantidad; }); tablaHTML += '</table>'; // Mostrar la tabla en un elemento HTML (por ejemplo, un div) document.getElementById('tablaVentas').innerHTML = tablaHTML; document.getElementById('totalfa').innerHTML = 'Total: Q.' + totalf.toFixed(2); totalmesa = totalf; }) .catch(error => { console.error('Error:', error); }); } function imprimirComanda(numeroFactura) { // boton imprimir var empresa = "<?php echo $empresax; ?>"; var opciones = { orientation: 'p', unit: 'mm', format: [240, 2500] }; var doc = new jsPDF(opciones); var totalx = 0; var table = document.getElementById('tablaVentas'); var rows = table.querySelectorAll('tr'); var numeroFactura = rows[1].cells[4].innerText.trim(); // Obtener el número de factura de la fila actual // Título doc.setFontSize(12); let y = 10; doc.text(35, y, empresa, 'center'); y += 10; doc.setFontSize(16); doc.text(35, y, "CUENTA", 'center'); y += 8; doc.setFontSize(12); if (domi.checked) { doc.text(35, y, "PARA LLEVAR", 'center'); } else if (llevar.checked) { doc.text(35, y, "A DOMICILIO", 'center'); } else if (barra.checked) { doc.text(35, y, "BARRA"+ numeroMesaSeleccionada, 'center'); } else { doc.text(35, y, "Mesa: " + numeroMesaSeleccionada, 'center'); } y += 5; doc.setFontSize(14); doc.text(35, y, numeroFactura, 'center'); y += 9; doc.setFontSize(8); doc.text(35, y, "Fecha: " + new Date().toLocaleDateString() + " - Hora: " + new Date().toLocaleTimeString(), 'center'); y += 5; doc.setFontSize(12); doc.rect(5, y, 65, 8, 'FD'); doc.setTextColor(255, 255, 255); y += 5; doc.setFontSize(12); doc.text(35, y, 'PRODUCTOS', 'center'); doc.setTextColor(0, 0, 0); y += 10; var totalx = 0; var table = document.getElementById('tablaVentas'); var cells = table.querySelectorAll('tr td:not(:nth-last-child(-n+2))'); doc.setFontSize(11); var rows = table.querySelectorAll('tr'); for (var i = 0; i < cells.length; i += 4) { // Saltar de 4 en 4 para obtener las celdas de cada fila var producto = cells[i + 1].innerText.trim(); // La primera celda es el producto var cantidad = parseFloat(cells[i].innerText); // La segunda celda es la cantidad var subtotal = parseFloat(cells[i + 3].innerText); // La tercera celda es el subtotal // Añadir los datos de la fila a la comanda doc.text(5, y, `${producto}`, 'left'); y += 5; doc.text(5, y, `${cantidad}`, 'left'); doc.text(70, y, `Q.${subtotal.toFixed(2)}`, 'right'); totalx += subtotal; // Sumar el subtotal al total y += 5; } totalmesa = totalx; // Calcular el total (puedes obtenerlo desde tu tabla o cualquier otro lugar donde lo tengas) y += 10; doc.setFontSize(14); doc.text(35, y, `Total: Q.${totalx.toFixed(2)}`, 'center'); // Otras configuraciones y detalles de la comanda // Guardar o imprimir el documento doc.autoPrint(); const pdfBlob = doc.output('blob'); const pdfUrl = URL.createObjectURL(pdfBlob); var ventanaImpresion = window.open(pdfUrl, "Comanda", "width=1000,height=650", '_blank'); setTimeout(function() { ventanaImpresion.print(); ventanaImpresion.close(); }, 25000); ventanaImpresion.addEventListener('load', function() { URL.revokeObjectURL(pdfUrl); }); } // ----------------- FACTURA SOLO PARA COCINA --------------------- function imprimirFactura(numeroFactura) { // primer icono var opciones = { orientation: 'p', unit: 'mm', format: [240, 2500] }; var doc = new jsPDF(opciones); doc.setFontSize(12); let y = 10; doc.setFontSize(16); doc.text(35, y, "COMANDA", 'center'); y += 8; doc.setFontSize(12); if (domi.checked) { doc.text(35, y, "A DOMICILIO", 'center'); } else if (llevar.checked) { doc.text(35, y, "PARA LLEVAR", 'center'); } else if (barra.checked) { doc.text(35, y, "BARRA"+ numeroMesaSeleccionada, 'center'); } else { doc.text(35, y, "Mesa: " + numeroMesaSeleccionada, 'center'); } y += 5; doc.setFontSize(14); if (typeof numeroFactura !== 'undefined') { doc.text(35, y, "No. " + numeroFactura.toString(), 'center'); } else { doc.text(35, y, "No.", 'center'); // O algún mensaje predeterminado si el número de factura no está definido } y += 9; doc.setFontSize(8); doc.text(35, y, "Fecha: " + new Date().toLocaleDateString() + " - Hora: " + new Date().toLocaleTimeString(), 'center'); y += 5; doc.setFontSize(12); doc.rect(5, y, 65, 8, 'FD'); doc.setTextColor(255, 255, 255); y += 5; doc.setFontSize(12); doc.text(35, y, 'PRODUCTOS', 'center'); doc.setTextColor(0, 0, 0); y += 10; var totalx = 0; var table = document.getElementById('tablaVentas'); var rows = table.querySelectorAll('tr'); // Iterar sobre las filas de la tabla for (var i = 0; i < rows.length; i++) { var factura = rows[i].cells[4].innerText.trim(); // Obtener el número de factura de la fila actual if (factura == numeroFactura) { // Verificar si coincide con el número de factura de interés var cells = rows[i].querySelectorAll('td'); // Obtener todas las celdas de la fila actual // Asegurarnos de que la fila tenga al menos 6 celdas (que incluyen los detalles de los productos) if (cells.length >= 6) { var producto = cells[1].innerText.trim(); // La segunda celda es el nombre del producto var cantidad = parseFloat(cells[0].innerText); // La primera celda es la cantidad var serie = cells[2].innerText.trim(); // La tercera celda es la serie var subtotal = parseFloat(cells[3].innerText); // La cuarta celda es el subtotal // Añadir los datos de la fila a la comanda doc.text(5, y, `${cantidad}`, 'left'); doc.text(10, y, `${producto}`, 'left'); y += 5; if (serie != "" && serie != "null") { doc.text(5, y, `(${serie})`, 'left'); y += 5; } totalx += subtotal; // Sumar el subtotal al total y += 2; } } } // Calcular el total (puedes obtenerlo desde tu tabla o cualquier otro lugar donde lo tengas) // Otras configuraciones y detalles de la comanda // Guardar o imprimir el documento doc.autoPrint(); const pdfBlob = doc.output('blob'); const pdfUrl = URL.createObjectURL(pdfBlob); var ventanaImpresion = window.open(pdfUrl, "Comanda", "width=1000,height=650", '_blank'); setTimeout(function() { ventanaImpresion.print(); ventanaImpresion.close(); }, 25000); ventanaImpresion.addEventListener('load', function() { URL.revokeObjectURL(pdfUrl); }); } // ------------------- FIN DE FACTURA COCINA ------------------------ // ----------------- FACTURA PARA CUENTAS SEPARADAS --------------------- function imprimirFactura3(numeroFactura) { var opciones = { orientation: 'p', unit: 'mm', format: [240, 2500] }; var doc = new jsPDF(opciones); doc.setFontSize(12); let y = 10; doc.setFontSize(16); doc.text(35, y, "CUENTA", 'center'); y += 8; doc.setFontSize(12); if (domi.checked) { doc.text(35, y, "A DOMICILIO", 'center'); } else if (llevar.checked) { doc.text(35, y, "PARA LLEVAR", 'center'); } else if (barra.checked) { doc.text(35, y, "BARRA"+ numeroMesaSeleccionada, 'center'); } else { doc.text(35, y, "Mesa: " + numeroMesaSeleccionada, 'center'); } y += 5; doc.setFontSize(14); if (typeof numeroFactura !== 'undefined') { doc.text(35, y, "No. " + numeroFactura.toString(), 'center'); } else { doc.text(35, y, "No.", 'center'); // O algún mensaje predeterminado si el número de factura no está definido } y += 9; doc.setFontSize(8); doc.text(35, y, "Fecha: " + new Date().toLocaleDateString() + " - Hora: " + new Date().toLocaleTimeString(), 'center'); y += 5; doc.setFontSize(12); doc.rect(5, y, 65, 8, 'FD'); doc.setTextColor(255, 255, 255); y += 5; doc.setFontSize(12); doc.text(35, y, 'PRODUCTOS', 'center'); doc.setTextColor(0, 0, 0); y += 10; var totalx = 0; var table = document.getElementById('tablaVentas'); var cells = table.querySelectorAll('tr td:not(:nth-last-child(-n+2))'); doc.setFontSize(11); var rows = table.querySelectorAll('tr'); for (var i = 0; i < rows.length; i++) { var factura = rows[i].cells[4].innerText.trim(); // Obtener el número de factura de la fila actual if (factura == numeroFactura) { // Verificar si coincide con el número de factura de interés var cells = rows[i].querySelectorAll('td'); // Obtener todas las celdas de la fila actual // Asegurarnos de que la fila tenga al menos 6 celdas (que incluyen los detalles de los productos) if (cells.length >= 6) { var producto = cells[1].innerText.trim(); // La primera celda es el producto var cantidad = parseFloat(cells[0].innerText); // La segunda celda es la cantidad var subtotal = parseFloat(cells[3].innerText); // La tercera celda es el subtotal // Añadir los datos de la fila a la comanda doc.text(5, y, `${producto}`, 'left'); y += 5; doc.text(5, y, `${cantidad}`, 'left'); doc.text(70, y, `Q.${subtotal.toFixed(2)}`, 'right'); totalx += subtotal; // Sumar el subtotal al total y += 5; } } } totalmesa = totalx; // Calcular el total (puedes obtenerlo desde tu tabla o cualquier otro lugar donde lo tengas) y += 10; doc.setFontSize(14); doc.text(35, y, `Total: Q.${totalx.toFixed(2)}`, 'center'); // Otras configuraciones y detalles de la comanda // Otras configuraciones y detalles de la comanda // Guardar o imprimir el documento doc.autoPrint(); const pdfBlob = doc.output('blob'); const pdfUrl = URL.createObjectURL(pdfBlob); var ventanaImpresion = window.open(pdfUrl, "Comanda", "width=1000,height=650", '_blank'); setTimeout(function() { ventanaImpresion.print(); ventanaImpresion.close(); }, 25000); ventanaImpresion.addEventListener('load', function() { URL.revokeObjectURL(pdfUrl); }); } // ------------------- FIN DE CUENTA SEPARADA ------------------------ // ----------------- FACTURA PARA CUENTAS SEPARADAS --------------------- function imprimirFactura4(numeroFactura, cliente) { var opciones = { orientation: 'p', unit: 'mm', format: [240, 2500] }; var doc = new jsPDF(opciones); doc.setFontSize(12); let y = 10; doc.setFontSize(16); doc.text(35, y, "CUENTA", 'center'); y += 8; doc.setFontSize(12); if (domi.checked) { doc.text(35, y, "A DOMICILIO", 'center'); } else if (llevar.checked) { doc.text(35, y, "PARA LLEVAR", 'center'); } else if (barra.checked) { doc.text(35, y, "BARRA"+ numeroMesaSeleccionada, 'center'); } else { doc.text(35, y, "Mesa: " + numeroMesaSeleccionada, 'center'); } y += 5; doc.setFontSize(14); if (typeof numeroFactura !== 'undefined') { doc.text(35, y, "No. " + numeroFactura.toString(), 'center'); } else { doc.text(35, y, "No.", 'center'); // O algún mensaje predeterminado si el número de factura no está definido } y += 9; doc.setFontSize(8); doc.text(35, y, "Fecha: " + new Date().toLocaleDateString() + " - Hora: " + new Date().toLocaleTimeString(), 'center'); y += 5; doc.setFontSize(12); doc.rect(5, y, 65, 8, 'FD'); doc.setTextColor(255, 255, 255); y += 5; doc.setFontSize(12); doc.text(35, y, 'PRODUCTOS', 'center'); doc.setTextColor(0, 0, 0); y += 10; var totalx = 0; var table = document.getElementById('tablaVentas'); var cells = table.querySelectorAll('tr td:not(:nth-last-child(-n+2))'); doc.setFontSize(11); var rows = table.querySelectorAll('tr'); for (var i = 0; i < rows.length; i++) { var factura = rows[i].cells[4].innerText.trim(); // Obtener el número de factura de la fila actual var clientef = rows[i].cells[5].innerText.trim(); if (cliente == clientef) { // Verificar si coincide con el número de factura de interés var cells = rows[i].querySelectorAll('td'); // Obtener todas las celdas de la fila actual // Asegurarnos de que la fila tenga al menos 6 celdas (que incluyen los detalles de los productos) if (cells.length >= 6) { var producto = cells[1].innerText.trim(); // La primera celda es el producto var cantidad = parseFloat(cells[0].innerText); // La segunda celda es la cantidad var subtotal = parseFloat(cells[3].innerText); // La tercera celda es el subtotal // Añadir los datos de la fila a la comanda doc.text(5, y, `${producto}`, 'left'); y += 5; doc.text(5, y, `${cantidad}`, 'left'); doc.text(70, y, `Q.${subtotal.toFixed(2)}`, 'right'); totalx += subtotal; // Sumar el subtotal al total y += 5; } } } totalmesa = totalx; // Calcular el total (puedes obtenerlo desde tu tabla o cualquier otro lugar donde lo tengas) y += 10; doc.setFontSize(14); doc.text(35, y, `Total: Q.${totalx.toFixed(2)}`, 'center'); // Otras configuraciones y detalles de la comanda // Otras configuraciones y detalles de la comanda // Guardar o imprimir el documento doc.autoPrint(); const pdfBlob = doc.output('blob'); const pdfUrl = URL.createObjectURL(pdfBlob); var ventanaImpresion = window.open(pdfUrl, "Comanda", "width=1000,height=650", '_blank'); setTimeout(function() { ventanaImpresion.print(); ventanaImpresion.close(); }, 25000); ventanaImpresion.addEventListener('load', function() { URL.revokeObjectURL(pdfUrl); }); } // ------------------- FIN DE CUENTA SEPARADA ------------------------ // ----------------- FACTURA COMPLETA PARA COCINA --------------------- function imprimirFactura2() { var opciones = { orientation: 'p', unit: 'mm', format: [240, 2500] }; var totalx = 0; var table = document.getElementById('tablaVentas'); var rows = table.querySelectorAll('tr'); var numeroFactura = rows[1].cells[4].innerText.trim(); // Obtener el número de factura de la fila actual var doc = new jsPDF(opciones); doc.setFontSize(12); let y = 10; doc.setFontSize(14); doc.text(35, y, "COMANDA COMPLETA", 'center'); y += 8; doc.setFontSize(12); if (domi.checked) { doc.text(35, y, "A DOMICILIO", 'center'); } else if (llevar.checked) { doc.text(35, y, "PARA LLEVAR", 'center'); } else if (barra.checked) { doc.text(35, y, "BARRA"+ numeroMesaSeleccionada, 'center'); } else { doc.text(35, y, "Mesa: " + numeroMesaSeleccionada, 'center'); } y += 5; doc.setFontSize(14); doc.text(35, y, "No." + numeroFactura, 'center'); y += 9; doc.setFontSize(8); doc.text(35, y, "Fecha: " + new Date().toLocaleDateString() + " - Hora: " + new Date().toLocaleTimeString(), 'center'); y += 5; doc.setFontSize(12); doc.rect(5, y, 65, 8, 'FD'); doc.setTextColor(255, 255, 255); y += 5; doc.setFontSize(12); doc.text(35, y, 'PRODUCTOS', 'center'); doc.setTextColor(0, 0, 0); y += 10; // Iterar sobre las filas de la tabla for (var i = 0; i < rows.length; i++) { var cells = rows[i].querySelectorAll('td'); // Obtener todas las celdas de la fila actual // Asegurarnos de que la fila tenga al menos 6 celdas (que incluyen los detalles de los productos) if (cells.length >= 6) { var producto = cells[1].innerText.trim(); // La segunda celda es el nombre del producto var cantidad = parseFloat(cells[0].innerText); // La primera celda es la cantidad var serie = cells[2].innerText.trim(); // La tercera celda es la serie var subtotal = parseFloat(cells[3].innerText); // La cuarta celda es el subtotal // Añadir los datos de la fila a la comanda doc.text(5, y, `${cantidad}`, 'left'); doc.text(10, y, `${producto}`, 'left'); y += 5; if (serie != "" && serie != "null") { doc.text(5, y, `(${serie})`, 'left'); y += 5; } totalx += subtotal; // Sumar el subtotal al total y += 2; } } doc.autoPrint(); const pdfBlob = doc.output('blob'); const pdfUrl = URL.createObjectURL(pdfBlob); var ventanaImpresion = window.open(pdfUrl, "Comanda", "width=1000,height=650", '_blank'); setTimeout(function() { ventanaImpresion.print(); ventanaImpresion.close(); }, 25000); ventanaImpresion.addEventListener('load', function() { URL.revokeObjectURL(pdfUrl); }); } // ------------------- FIN DE FACTURA COCINA ------------------------ // ------------------- ELIMINAR PRODUCTO ------------------------ // En tu JavaScript function eliminarFactura(idventa, nombreProducto) { // Mostrar una ventana de confirmación con SweetAlert Swal.fire({ title: '¿Estás seguro?', text: "¿Quieres eliminar el producto '" + nombreProducto + "'?", icon: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Sí, Eliminar', cancelButtonText: 'Cancelar' }).then((result) => { // Si el usuario confirma, realizar la eliminación if (result.isConfirmed) { // Realizar la solicitud Fetch console.log('Eliminar venta:', idventa); fetch('js_eliminar_venta.php?idventa=' + idventa, { method: 'POST', body: JSON.stringify({ idventa: idventa }), headers: { 'Content-Type': 'application/json' } }) .then(response => response.text()) .then(data => { // Manejar la respuesta de la solicitud Fetch console.log(data); window.location.reload(); // Puedes realizar alguna acción adicional aquí si lo necesitas }) .catch(error => { console.error('Error:', error); }); } }); } // async function marcarMesaComoCobrada() { const { value: cambio } = await Swal.fire({ title: 'Ingrese el efectivo recibido:', text: 'Total a pagar: Q.' + totalmesa.toFixed(2), icon: 'question', input: 'text', inputValue: totalmesa.toString(), showCancelButton: true, cancelButtonText: 'Cancelar', confirmButtonText: 'Aceptar', didOpen: () => { // Evento que se ejecuta cuando se abre la ventana modal const inputField = Swal.getInput(); // Obtener el campo de entrada if (inputField) { inputField.focus(); // Enfocar el campo de entrada inputField.select(); // Seleccionar todo el texto en el campo de entrada } } }); if (cambio) { const cambioFloat = parseFloat(cambio); if (!isNaN(cambioFloat)) { const cobro = cambioFloat - totalmesa; if (cobro >= 0) { // Realizar la solicitud Fetch const response = await fetch('js_actualizar_mesa.php', { method: 'POST', body: JSON.stringify({ mesa: numeroMesaSeleccionada }), headers: { 'Content-Type': 'application/json' } }); const data = await response.text(); Swal.fire({ title: "" + cobro.toFixed(2), text: "Su cambio", icon: "success", // Corregido a "success" showConfirmButton: true // Mostrar el botón de confirmación }).then((result) => { if (result.isConfirmed) { window.location.reload(); } }); } else { Swal.fire('El monto ingresado es insuficiente'); } } else { Swal.fire('Por favor ingrese un monto válido'); } } } </script> </html>
© 2017 -
ZeroByte.ID
.