diff --git a/assets/uploads/info_images/info_697a4aa1aa85f.png b/assets/uploads/info_images/info_697a4aa1aa85f.png deleted file mode 100644 index 627696e..0000000 Binary files a/assets/uploads/info_images/info_697a4aa1aa85f.png and /dev/null differ diff --git a/assets/uploads/info_images/info_697a4d2007ac5.png b/assets/uploads/info_images/info_697a4d2007ac5.png deleted file mode 100644 index 627696e..0000000 Binary files a/assets/uploads/info_images/info_697a4d2007ac5.png and /dev/null differ diff --git a/assets/uploads/info_images/info_698c993bd0a24.jpg b/assets/uploads/info_images/info_698c993bd0a24.jpg deleted file mode 100644 index 0c5b369..0000000 Binary files a/assets/uploads/info_images/info_698c993bd0a24.jpg and /dev/null differ diff --git a/assets/uploads/info_images/info_698c9a0db550a.webp b/assets/uploads/info_images/info_698c9a0db550a.webp deleted file mode 100644 index 7fe9eaa..0000000 Binary files a/assets/uploads/info_images/info_698c9a0db550a.webp and /dev/null differ diff --git a/assets/uploads/info_images/info_6994f24145a26.webp b/assets/uploads/info_images/info_6994f24145a26.webp new file mode 100644 index 0000000..7439f11 Binary files /dev/null and b/assets/uploads/info_images/info_6994f24145a26.webp differ diff --git a/assets/uploads/info_images/info_6994f262de02d.webp b/assets/uploads/info_images/info_6994f262de02d.webp new file mode 100644 index 0000000..7439f11 Binary files /dev/null and b/assets/uploads/info_images/info_6994f262de02d.webp differ diff --git a/assets/uploads/info_images/info_6994f5febd65a.jpg b/assets/uploads/info_images/info_6994f5febd65a.jpg new file mode 100644 index 0000000..a83f50a Binary files /dev/null and b/assets/uploads/info_images/info_6994f5febd65a.jpg differ diff --git a/assets/uploads/info_images/info_6994f60049d46.jpg b/assets/uploads/info_images/info_6994f60049d46.jpg new file mode 100644 index 0000000..a83f50a Binary files /dev/null and b/assets/uploads/info_images/info_6994f60049d46.jpg differ diff --git a/assets/uploads/vouchers/69947fe19eea9-Screenshot_3.png b/assets/uploads/vouchers/69947fe19eea9-Screenshot_3.png new file mode 100644 index 0000000..23cee77 Binary files /dev/null and b/assets/uploads/vouchers/69947fe19eea9-Screenshot_3.png differ diff --git a/assets/uploads/vouchers/69949a52890b7-WhatsApp Image 2026-02-17 at 11.41.15 AM.jpeg b/assets/uploads/vouchers/69949a52890b7-WhatsApp Image 2026-02-17 at 11.41.15 AM.jpeg new file mode 100644 index 0000000..a4d0dab Binary files /dev/null and b/assets/uploads/vouchers/69949a52890b7-WhatsApp Image 2026-02-17 at 11.41.15 AM.jpeg differ diff --git a/assets/uploads/vouchers/6994a5a854eba-Screenshot_20.png b/assets/uploads/vouchers/6994a5a854eba-Screenshot_20.png new file mode 100644 index 0000000..c3aecc5 Binary files /dev/null and b/assets/uploads/vouchers/6994a5a854eba-Screenshot_20.png differ diff --git a/assets/uploads/vouchers/6994aae1bcd53-WhatsApp Image 2026-02-17 at 12.51.48 PM.jpeg b/assets/uploads/vouchers/6994aae1bcd53-WhatsApp Image 2026-02-17 at 12.51.48 PM.jpeg new file mode 100644 index 0000000..c53530f Binary files /dev/null and b/assets/uploads/vouchers/6994aae1bcd53-WhatsApp Image 2026-02-17 at 12.51.48 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994ab3ed0d56-WhatsApp Image 2026-02-17 at 12.53.45 PM.jpeg b/assets/uploads/vouchers/6994ab3ed0d56-WhatsApp Image 2026-02-17 at 12.53.45 PM.jpeg new file mode 100644 index 0000000..be23fb1 Binary files /dev/null and b/assets/uploads/vouchers/6994ab3ed0d56-WhatsApp Image 2026-02-17 at 12.53.45 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994ab85b34d4-WhatsApp Image 2026-02-17 at 12.54.48 PM.jpeg b/assets/uploads/vouchers/6994ab85b34d4-WhatsApp Image 2026-02-17 at 12.54.48 PM.jpeg new file mode 100644 index 0000000..01e99b0 Binary files /dev/null and b/assets/uploads/vouchers/6994ab85b34d4-WhatsApp Image 2026-02-17 at 12.54.48 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994abe1559e7-WhatsApp Image 2026-02-17 at 12.56.29 PM.jpeg b/assets/uploads/vouchers/6994abe1559e7-WhatsApp Image 2026-02-17 at 12.56.29 PM.jpeg new file mode 100644 index 0000000..f7bbc18 Binary files /dev/null and b/assets/uploads/vouchers/6994abe1559e7-WhatsApp Image 2026-02-17 at 12.56.29 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994ac50c074a-WhatsApp Image 2026-02-17 at 12.58.13 PM.jpeg b/assets/uploads/vouchers/6994ac50c074a-WhatsApp Image 2026-02-17 at 12.58.13 PM.jpeg new file mode 100644 index 0000000..78795a5 Binary files /dev/null and b/assets/uploads/vouchers/6994ac50c074a-WhatsApp Image 2026-02-17 at 12.58.13 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994acb25e253-WhatsApp Image 2026-02-17 at 1.00.04 PM.jpeg b/assets/uploads/vouchers/6994acb25e253-WhatsApp Image 2026-02-17 at 1.00.04 PM.jpeg new file mode 100644 index 0000000..4ea36a0 Binary files /dev/null and b/assets/uploads/vouchers/6994acb25e253-WhatsApp Image 2026-02-17 at 1.00.04 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994ad15afd3b-WhatsApp Image 2026-02-17 at 1.01.36 PM.jpeg b/assets/uploads/vouchers/6994ad15afd3b-WhatsApp Image 2026-02-17 at 1.01.36 PM.jpeg new file mode 100644 index 0000000..3aabf3b Binary files /dev/null and b/assets/uploads/vouchers/6994ad15afd3b-WhatsApp Image 2026-02-17 at 1.01.36 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994ad73c01f9-WhatsApp Image 2026-02-17 at 1.03.15 PM.jpeg b/assets/uploads/vouchers/6994ad73c01f9-WhatsApp Image 2026-02-17 at 1.03.15 PM.jpeg new file mode 100644 index 0000000..301afdb Binary files /dev/null and b/assets/uploads/vouchers/6994ad73c01f9-WhatsApp Image 2026-02-17 at 1.03.15 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994adbf14533-WhatsApp Image 2026-02-17 at 1.04.24 PM.jpeg b/assets/uploads/vouchers/6994adbf14533-WhatsApp Image 2026-02-17 at 1.04.24 PM.jpeg new file mode 100644 index 0000000..5a3fa97 Binary files /dev/null and b/assets/uploads/vouchers/6994adbf14533-WhatsApp Image 2026-02-17 at 1.04.24 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994d48f2523a-Screenshot_4.png b/assets/uploads/vouchers/6994d48f2523a-Screenshot_4.png new file mode 100644 index 0000000..3b6122a Binary files /dev/null and b/assets/uploads/vouchers/6994d48f2523a-Screenshot_4.png differ diff --git a/assets/uploads/vouchers/6994d5e4bfb15-Screenshot_5.png b/assets/uploads/vouchers/6994d5e4bfb15-Screenshot_5.png new file mode 100644 index 0000000..b5c76de Binary files /dev/null and b/assets/uploads/vouchers/6994d5e4bfb15-Screenshot_5.png differ diff --git a/assets/uploads/vouchers/6994d69f07d9c-Screenshot_21.png b/assets/uploads/vouchers/6994d69f07d9c-Screenshot_21.png new file mode 100644 index 0000000..0c4edfc Binary files /dev/null and b/assets/uploads/vouchers/6994d69f07d9c-Screenshot_21.png differ diff --git a/assets/uploads/vouchers/6994e35fc8165-Screenshot_22.png b/assets/uploads/vouchers/6994e35fc8165-Screenshot_22.png new file mode 100644 index 0000000..f981625 Binary files /dev/null and b/assets/uploads/vouchers/6994e35fc8165-Screenshot_22.png differ diff --git a/assets/uploads/vouchers/6994f42f913da-WhatsApp Image 2026-02-17 at 6.00.14 PM.jpeg b/assets/uploads/vouchers/6994f42f913da-WhatsApp Image 2026-02-17 at 6.00.14 PM.jpeg new file mode 100644 index 0000000..30ba478 Binary files /dev/null and b/assets/uploads/vouchers/6994f42f913da-WhatsApp Image 2026-02-17 at 6.00.14 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994f844c3707-WhatsApp Image 2026-02-17 at 6.19.27 PM.jpeg b/assets/uploads/vouchers/6994f844c3707-WhatsApp Image 2026-02-17 at 6.19.27 PM.jpeg new file mode 100644 index 0000000..518522e Binary files /dev/null and b/assets/uploads/vouchers/6994f844c3707-WhatsApp Image 2026-02-17 at 6.19.27 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994f8c28097f-WhatsApp Image 2026-02-17 at 6.17.53 PM.jpeg b/assets/uploads/vouchers/6994f8c28097f-WhatsApp Image 2026-02-17 at 6.17.53 PM.jpeg new file mode 100644 index 0000000..6d21ab9 Binary files /dev/null and b/assets/uploads/vouchers/6994f8c28097f-WhatsApp Image 2026-02-17 at 6.17.53 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994f948a9543-WhatsApp Image 2026-02-17 at 6.08.22 PM.jpeg b/assets/uploads/vouchers/6994f948a9543-WhatsApp Image 2026-02-17 at 6.08.22 PM.jpeg new file mode 100644 index 0000000..e045259 Binary files /dev/null and b/assets/uploads/vouchers/6994f948a9543-WhatsApp Image 2026-02-17 at 6.08.22 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994f9f74eb4b-WhatsApp Image 2026-02-17 at 6.00.56 PM.jpeg b/assets/uploads/vouchers/6994f9f74eb4b-WhatsApp Image 2026-02-17 at 6.00.56 PM.jpeg new file mode 100644 index 0000000..71bcb2e Binary files /dev/null and b/assets/uploads/vouchers/6994f9f74eb4b-WhatsApp Image 2026-02-17 at 6.00.56 PM.jpeg differ diff --git a/assets/uploads/vouchers/6994fa8dda03a-WhatsApp Image 2026-02-17 at 5.58.47 PM (1).jpeg b/assets/uploads/vouchers/6994fa8dda03a-WhatsApp Image 2026-02-17 at 5.58.47 PM (1).jpeg new file mode 100644 index 0000000..f4d5d38 Binary files /dev/null and b/assets/uploads/vouchers/6994fa8dda03a-WhatsApp Image 2026-02-17 at 5.58.47 PM (1).jpeg differ diff --git a/assets/uploads/vouchers/6995caacc1924-Screenshot_6.png b/assets/uploads/vouchers/6995caacc1924-Screenshot_6.png new file mode 100644 index 0000000..36b0d24 Binary files /dev/null and b/assets/uploads/vouchers/6995caacc1924-Screenshot_6.png differ diff --git a/assets/uploads/vouchers/6995cbea074b8-Screenshot_7.png b/assets/uploads/vouchers/6995cbea074b8-Screenshot_7.png new file mode 100644 index 0000000..cecb282 Binary files /dev/null and b/assets/uploads/vouchers/6995cbea074b8-Screenshot_7.png differ diff --git a/assets/uploads/vouchers/6995cd3bdfdd0-Screenshot_8.png b/assets/uploads/vouchers/6995cd3bdfdd0-Screenshot_8.png new file mode 100644 index 0000000..a5066f7 Binary files /dev/null and b/assets/uploads/vouchers/6995cd3bdfdd0-Screenshot_8.png differ diff --git a/assets/uploads/vouchers/6995cd8e1881c-Screenshot_9.png b/assets/uploads/vouchers/6995cd8e1881c-Screenshot_9.png new file mode 100644 index 0000000..c01b2d1 Binary files /dev/null and b/assets/uploads/vouchers/6995cd8e1881c-Screenshot_9.png differ diff --git a/assets/uploads/vouchers/6995cde9ea24c-Screenshot_10.png b/assets/uploads/vouchers/6995cde9ea24c-Screenshot_10.png new file mode 100644 index 0000000..d8d71db Binary files /dev/null and b/assets/uploads/vouchers/6995cde9ea24c-Screenshot_10.png differ diff --git a/assets/uploads/vouchers/6995cf00eec3d-143.png b/assets/uploads/vouchers/6995cf00eec3d-143.png new file mode 100644 index 0000000..b9deb66 Binary files /dev/null and b/assets/uploads/vouchers/6995cf00eec3d-143.png differ diff --git a/assets/uploads/vouchers/6995cf7f520c2-Screenshot_11.png b/assets/uploads/vouchers/6995cf7f520c2-Screenshot_11.png new file mode 100644 index 0000000..e0213d7 Binary files /dev/null and b/assets/uploads/vouchers/6995cf7f520c2-Screenshot_11.png differ diff --git a/assets/uploads/vouchers/6995d5a4ab467-WhatsApp Image 2026-02-18 at 9.57.36 AM.jpeg b/assets/uploads/vouchers/6995d5a4ab467-WhatsApp Image 2026-02-18 at 9.57.36 AM.jpeg new file mode 100644 index 0000000..49bc929 Binary files /dev/null and b/assets/uploads/vouchers/6995d5a4ab467-WhatsApp Image 2026-02-18 at 9.57.36 AM.jpeg differ diff --git a/assets/uploads/vouchers/6995f2acb9323-Screenshot_23.png b/assets/uploads/vouchers/6995f2acb9323-Screenshot_23.png new file mode 100644 index 0000000..15c94a4 Binary files /dev/null and b/assets/uploads/vouchers/6995f2acb9323-Screenshot_23.png differ diff --git a/assets/uploads/vouchers/69960e7e808ea-549.png b/assets/uploads/vouchers/69960e7e808ea-549.png new file mode 100644 index 0000000..61b4db8 Binary files /dev/null and b/assets/uploads/vouchers/69960e7e808ea-549.png differ diff --git a/assets/uploads/vouchers/69960ec40a02e-116.png b/assets/uploads/vouchers/69960ec40a02e-116.png new file mode 100644 index 0000000..3178821 Binary files /dev/null and b/assets/uploads/vouchers/69960ec40a02e-116.png differ diff --git a/assets/uploads/vouchers/69960f399bfef-092.png b/assets/uploads/vouchers/69960f399bfef-092.png new file mode 100644 index 0000000..61f427a Binary files /dev/null and b/assets/uploads/vouchers/69960f399bfef-092.png differ diff --git a/assets/uploads/vouchers/69960fe0f2883-831.png b/assets/uploads/vouchers/69960fe0f2883-831.png new file mode 100644 index 0000000..34968f9 Binary files /dev/null and b/assets/uploads/vouchers/69960fe0f2883-831.png differ diff --git a/assets/uploads/vouchers/6996109a3fe00-896.png b/assets/uploads/vouchers/6996109a3fe00-896.png new file mode 100644 index 0000000..ac63051 Binary files /dev/null and b/assets/uploads/vouchers/6996109a3fe00-896.png differ diff --git a/assets/uploads/vouchers/699611341be1f-186.png b/assets/uploads/vouchers/699611341be1f-186.png new file mode 100644 index 0000000..b0e51d6 Binary files /dev/null and b/assets/uploads/vouchers/699611341be1f-186.png differ diff --git a/assets/uploads/vouchers/69961281c3db6-880.png b/assets/uploads/vouchers/69961281c3db6-880.png new file mode 100644 index 0000000..0053482 Binary files /dev/null and b/assets/uploads/vouchers/69961281c3db6-880.png differ diff --git a/assets/uploads/vouchers/699613470bc26-069.png b/assets/uploads/vouchers/699613470bc26-069.png new file mode 100644 index 0000000..314a0c8 Binary files /dev/null and b/assets/uploads/vouchers/699613470bc26-069.png differ diff --git a/assets/uploads/vouchers/699613b72c03a-092.png b/assets/uploads/vouchers/699613b72c03a-092.png new file mode 100644 index 0000000..61f427a Binary files /dev/null and b/assets/uploads/vouchers/699613b72c03a-092.png differ diff --git a/assets/uploads/vouchers/6996145e35231-Screenshot_24.png b/assets/uploads/vouchers/6996145e35231-Screenshot_24.png new file mode 100644 index 0000000..d4e1bae Binary files /dev/null and b/assets/uploads/vouchers/6996145e35231-Screenshot_24.png differ diff --git a/assets/uploads/vouchers/699614b04fb08-934.png b/assets/uploads/vouchers/699614b04fb08-934.png new file mode 100644 index 0000000..1cd797d Binary files /dev/null and b/assets/uploads/vouchers/699614b04fb08-934.png differ diff --git a/assets/uploads/vouchers/69961547ed9ab-224.png b/assets/uploads/vouchers/69961547ed9ab-224.png new file mode 100644 index 0000000..66b925d Binary files /dev/null and b/assets/uploads/vouchers/69961547ed9ab-224.png differ diff --git a/assets/uploads/vouchers/699615a9c72a9-488.png b/assets/uploads/vouchers/699615a9c72a9-488.png new file mode 100644 index 0000000..ad244ec Binary files /dev/null and b/assets/uploads/vouchers/699615a9c72a9-488.png differ diff --git a/assets/uploads/vouchers/699615f5ca66e-375.png b/assets/uploads/vouchers/699615f5ca66e-375.png new file mode 100644 index 0000000..20b0391 Binary files /dev/null and b/assets/uploads/vouchers/699615f5ca66e-375.png differ diff --git a/assets/uploads/vouchers/6996165c57f74-147.png b/assets/uploads/vouchers/6996165c57f74-147.png new file mode 100644 index 0000000..dbbfd71 Binary files /dev/null and b/assets/uploads/vouchers/6996165c57f74-147.png differ diff --git a/assets/uploads/vouchers/6996246768490-Screenshot_25.png b/assets/uploads/vouchers/6996246768490-Screenshot_25.png new file mode 100644 index 0000000..8abaf73 Binary files /dev/null and b/assets/uploads/vouchers/6996246768490-Screenshot_25.png differ diff --git a/assets/uploads/vouchers/699628d9a644a-382.png b/assets/uploads/vouchers/699628d9a644a-382.png new file mode 100644 index 0000000..3aabdec Binary files /dev/null and b/assets/uploads/vouchers/699628d9a644a-382.png differ diff --git a/assets/uploads/vouchers/6996293cdc745-609.png b/assets/uploads/vouchers/6996293cdc745-609.png new file mode 100644 index 0000000..cb6c9d0 Binary files /dev/null and b/assets/uploads/vouchers/6996293cdc745-609.png differ diff --git a/assets/uploads/vouchers/699629acb28dc-602.png b/assets/uploads/vouchers/699629acb28dc-602.png new file mode 100644 index 0000000..9b7302a Binary files /dev/null and b/assets/uploads/vouchers/699629acb28dc-602.png differ diff --git a/assets/uploads/vouchers/69962a0b4cf31-718.png b/assets/uploads/vouchers/69962a0b4cf31-718.png new file mode 100644 index 0000000..a334526 Binary files /dev/null and b/assets/uploads/vouchers/69962a0b4cf31-718.png differ diff --git a/assets/uploads/vouchers/69962a83c66f6-620.png b/assets/uploads/vouchers/69962a83c66f6-620.png new file mode 100644 index 0000000..db98161 Binary files /dev/null and b/assets/uploads/vouchers/69962a83c66f6-620.png differ diff --git a/assets/uploads/vouchers/69962afd34a2e-742.png b/assets/uploads/vouchers/69962afd34a2e-742.png new file mode 100644 index 0000000..23bee91 Binary files /dev/null and b/assets/uploads/vouchers/69962afd34a2e-742.png differ diff --git a/assets/uploads/vouchers/69962dffe2e13-472.png b/assets/uploads/vouchers/69962dffe2e13-472.png new file mode 100644 index 0000000..0dc6fe8 Binary files /dev/null and b/assets/uploads/vouchers/69962dffe2e13-472.png differ diff --git a/assets/uploads/vouchers/69963097a3c3a-Screenshot_26.png b/assets/uploads/vouchers/69963097a3c3a-Screenshot_26.png new file mode 100644 index 0000000..f01ead5 Binary files /dev/null and b/assets/uploads/vouchers/69963097a3c3a-Screenshot_26.png differ diff --git a/assets/uploads/vouchers/6996316a92b59-WhatsApp Image 2026-02-18 at 4.38.11 PM.jpeg b/assets/uploads/vouchers/6996316a92b59-WhatsApp Image 2026-02-18 at 4.38.11 PM.jpeg new file mode 100644 index 0000000..3e12a6c Binary files /dev/null and b/assets/uploads/vouchers/6996316a92b59-WhatsApp Image 2026-02-18 at 4.38.11 PM.jpeg differ diff --git a/assets/uploads/vouchers/699631b99d203-WhatsApp Image 2026-02-18 at 4.39.53 PM.jpeg b/assets/uploads/vouchers/699631b99d203-WhatsApp Image 2026-02-18 at 4.39.53 PM.jpeg new file mode 100644 index 0000000..96a40ab Binary files /dev/null and b/assets/uploads/vouchers/699631b99d203-WhatsApp Image 2026-02-18 at 4.39.53 PM.jpeg differ diff --git a/assets/uploads/vouchers/699632051ea3b-WhatsApp Image 2026-02-18 at 4.41.13 PM.jpeg b/assets/uploads/vouchers/699632051ea3b-WhatsApp Image 2026-02-18 at 4.41.13 PM.jpeg new file mode 100644 index 0000000..6911f4f Binary files /dev/null and b/assets/uploads/vouchers/699632051ea3b-WhatsApp Image 2026-02-18 at 4.41.13 PM.jpeg differ diff --git a/assets/uploads/vouchers/69963288a71d7-WhatsApp Image 2026-02-18 at 4.43.18 PM.jpeg b/assets/uploads/vouchers/69963288a71d7-WhatsApp Image 2026-02-18 at 4.43.18 PM.jpeg new file mode 100644 index 0000000..bdd7c79 Binary files /dev/null and b/assets/uploads/vouchers/69963288a71d7-WhatsApp Image 2026-02-18 at 4.43.18 PM.jpeg differ diff --git a/assets/uploads/vouchers/699632e9aebed-WhatsApp Image 2026-02-18 at 4.44.43 PM.jpeg b/assets/uploads/vouchers/699632e9aebed-WhatsApp Image 2026-02-18 at 4.44.43 PM.jpeg new file mode 100644 index 0000000..84b8386 Binary files /dev/null and b/assets/uploads/vouchers/699632e9aebed-WhatsApp Image 2026-02-18 at 4.44.43 PM.jpeg differ diff --git a/assets/uploads/vouchers/699633c1506ee-WhatsApp Image 2026-02-18 at 4.48.14 PM.jpeg b/assets/uploads/vouchers/699633c1506ee-WhatsApp Image 2026-02-18 at 4.48.14 PM.jpeg new file mode 100644 index 0000000..e76635e Binary files /dev/null and b/assets/uploads/vouchers/699633c1506ee-WhatsApp Image 2026-02-18 at 4.48.14 PM.jpeg differ diff --git a/assets/uploads/vouchers/699634a517d89-WhatsApp Image 2026-02-18 at 4.52.23 PM.jpeg b/assets/uploads/vouchers/699634a517d89-WhatsApp Image 2026-02-18 at 4.52.23 PM.jpeg new file mode 100644 index 0000000..79e7913 Binary files /dev/null and b/assets/uploads/vouchers/699634a517d89-WhatsApp Image 2026-02-18 at 4.52.23 PM.jpeg differ diff --git a/assets/uploads/vouchers/6996357d97b91-WhatsApp Image 2026-02-18 at 4.55.50 PM.jpeg b/assets/uploads/vouchers/6996357d97b91-WhatsApp Image 2026-02-18 at 4.55.50 PM.jpeg new file mode 100644 index 0000000..1e9be7d Binary files /dev/null and b/assets/uploads/vouchers/6996357d97b91-WhatsApp Image 2026-02-18 at 4.55.50 PM.jpeg differ diff --git a/assets/uploads/vouchers/69963674314b2-548.png b/assets/uploads/vouchers/69963674314b2-548.png new file mode 100644 index 0000000..0eb75b4 Binary files /dev/null and b/assets/uploads/vouchers/69963674314b2-548.png differ diff --git a/assets/uploads/vouchers/699637b537cbe-565.png b/assets/uploads/vouchers/699637b537cbe-565.png new file mode 100644 index 0000000..7371061 Binary files /dev/null and b/assets/uploads/vouchers/699637b537cbe-565.png differ diff --git a/assets/uploads/vouchers/6996388140ebe-706.png b/assets/uploads/vouchers/6996388140ebe-706.png new file mode 100644 index 0000000..e1abc31 Binary files /dev/null and b/assets/uploads/vouchers/6996388140ebe-706.png differ diff --git a/assets/uploads/vouchers/6996396aee102-550.png b/assets/uploads/vouchers/6996396aee102-550.png new file mode 100644 index 0000000..8f393fc Binary files /dev/null and b/assets/uploads/vouchers/6996396aee102-550.png differ diff --git a/assets/uploads/vouchers/69963b4ec5083-055.png b/assets/uploads/vouchers/69963b4ec5083-055.png new file mode 100644 index 0000000..6e438e5 Binary files /dev/null and b/assets/uploads/vouchers/69963b4ec5083-055.png differ diff --git a/assets/uploads/vouchers/69963c358e25e-102.png b/assets/uploads/vouchers/69963c358e25e-102.png new file mode 100644 index 0000000..d3d344b Binary files /dev/null and b/assets/uploads/vouchers/69963c358e25e-102.png differ diff --git a/assets/uploads/vouchers/69963caaee2e3-538.png b/assets/uploads/vouchers/69963caaee2e3-538.png new file mode 100644 index 0000000..8b397b1 Binary files /dev/null and b/assets/uploads/vouchers/69963caaee2e3-538.png differ diff --git a/assets/uploads/vouchers/69963d001ef4e-824.png b/assets/uploads/vouchers/69963d001ef4e-824.png new file mode 100644 index 0000000..eda60b1 Binary files /dev/null and b/assets/uploads/vouchers/69963d001ef4e-824.png differ diff --git a/assets/uploads/vouchers/69963f69ec8bf-209.png b/assets/uploads/vouchers/69963f69ec8bf-209.png new file mode 100644 index 0000000..7d2566a Binary files /dev/null and b/assets/uploads/vouchers/69963f69ec8bf-209.png differ diff --git a/assets/uploads/vouchers/69963fba7be19-054.png b/assets/uploads/vouchers/69963fba7be19-054.png new file mode 100644 index 0000000..079b1a6 Binary files /dev/null and b/assets/uploads/vouchers/69963fba7be19-054.png differ diff --git a/assets/uploads/vouchers/699640171da64-268.png b/assets/uploads/vouchers/699640171da64-268.png new file mode 100644 index 0000000..8c3a168 Binary files /dev/null and b/assets/uploads/vouchers/699640171da64-268.png differ diff --git a/assets/uploads/vouchers/6996409966b77-WhatsApp Image 2026-02-18 at 5.40.27 PM.jpeg b/assets/uploads/vouchers/6996409966b77-WhatsApp Image 2026-02-18 at 5.40.27 PM.jpeg new file mode 100644 index 0000000..ab8e7b5 Binary files /dev/null and b/assets/uploads/vouchers/6996409966b77-WhatsApp Image 2026-02-18 at 5.40.27 PM.jpeg differ diff --git a/assets/uploads/vouchers/699640e857d9d-458.png b/assets/uploads/vouchers/699640e857d9d-458.png new file mode 100644 index 0000000..039bb71 Binary files /dev/null and b/assets/uploads/vouchers/699640e857d9d-458.png differ diff --git a/assets/uploads/vouchers/6996414017e5b-611.png b/assets/uploads/vouchers/6996414017e5b-611.png new file mode 100644 index 0000000..44e2c7f Binary files /dev/null and b/assets/uploads/vouchers/6996414017e5b-611.png differ diff --git a/assets/uploads/vouchers/699641b46ba7e-WhatsApp Image 2026-02-18 at 5.46.01 PM.jpeg b/assets/uploads/vouchers/699641b46ba7e-WhatsApp Image 2026-02-18 at 5.46.01 PM.jpeg new file mode 100644 index 0000000..78f05b4 Binary files /dev/null and b/assets/uploads/vouchers/699641b46ba7e-WhatsApp Image 2026-02-18 at 5.46.01 PM.jpeg differ diff --git a/assets/uploads/vouchers/699641bc0801a-777.png b/assets/uploads/vouchers/699641bc0801a-777.png new file mode 100644 index 0000000..32b201d Binary files /dev/null and b/assets/uploads/vouchers/699641bc0801a-777.png differ diff --git a/assets/uploads/vouchers/699642773b603-812.png b/assets/uploads/vouchers/699642773b603-812.png new file mode 100644 index 0000000..0042f11 Binary files /dev/null and b/assets/uploads/vouchers/699642773b603-812.png differ diff --git a/assets/uploads/vouchers/699642d9559ef-626.png b/assets/uploads/vouchers/699642d9559ef-626.png new file mode 100644 index 0000000..26c6a13 Binary files /dev/null and b/assets/uploads/vouchers/699642d9559ef-626.png differ diff --git a/assets/uploads/vouchers/699642de49559-WhatsApp Image 2026-02-18 at 5.51.07 PM.jpeg b/assets/uploads/vouchers/699642de49559-WhatsApp Image 2026-02-18 at 5.51.07 PM.jpeg new file mode 100644 index 0000000..9b0d252 Binary files /dev/null and b/assets/uploads/vouchers/699642de49559-WhatsApp Image 2026-02-18 at 5.51.07 PM.jpeg differ diff --git a/assets/uploads/vouchers/699643e6eeebd-360.png b/assets/uploads/vouchers/699643e6eeebd-360.png new file mode 100644 index 0000000..325cc7f Binary files /dev/null and b/assets/uploads/vouchers/699643e6eeebd-360.png differ diff --git a/assets/uploads/vouchers/6996443ebed19-644.png b/assets/uploads/vouchers/6996443ebed19-644.png new file mode 100644 index 0000000..9a45abf Binary files /dev/null and b/assets/uploads/vouchers/6996443ebed19-644.png differ diff --git a/assets/uploads/vouchers/699644625e35a-WhatsApp Image 2026-02-18 at 5.56.57 PM.jpeg b/assets/uploads/vouchers/699644625e35a-WhatsApp Image 2026-02-18 at 5.56.57 PM.jpeg new file mode 100644 index 0000000..9050de6 Binary files /dev/null and b/assets/uploads/vouchers/699644625e35a-WhatsApp Image 2026-02-18 at 5.56.57 PM.jpeg differ diff --git a/assets/uploads/vouchers/69964584b8077-WhatsApp Image 2026-02-18 at 6.02.40 PM.jpeg b/assets/uploads/vouchers/69964584b8077-WhatsApp Image 2026-02-18 at 6.02.40 PM.jpeg new file mode 100644 index 0000000..f1c9188 Binary files /dev/null and b/assets/uploads/vouchers/69964584b8077-WhatsApp Image 2026-02-18 at 6.02.40 PM.jpeg differ diff --git a/assets/uploads/vouchers/699645ede8368-Screenshot_27.png b/assets/uploads/vouchers/699645ede8368-Screenshot_27.png new file mode 100644 index 0000000..6aa6247 Binary files /dev/null and b/assets/uploads/vouchers/699645ede8368-Screenshot_27.png differ diff --git a/assets/uploads/vouchers/6996479130e89-WhatsApp Image 2026-02-18 at 6.11.15 PM.jpeg b/assets/uploads/vouchers/6996479130e89-WhatsApp Image 2026-02-18 at 6.11.15 PM.jpeg new file mode 100644 index 0000000..c692f61 Binary files /dev/null and b/assets/uploads/vouchers/6996479130e89-WhatsApp Image 2026-02-18 at 6.11.15 PM.jpeg differ diff --git a/assets/uploads/vouchers/69971feca6454-Screenshot_12.png b/assets/uploads/vouchers/69971feca6454-Screenshot_12.png new file mode 100644 index 0000000..4619182 Binary files /dev/null and b/assets/uploads/vouchers/69971feca6454-Screenshot_12.png differ diff --git a/assets/uploads/vouchers/6997208c73369-Screenshot_13.png b/assets/uploads/vouchers/6997208c73369-Screenshot_13.png new file mode 100644 index 0000000..b2515c8 Binary files /dev/null and b/assets/uploads/vouchers/6997208c73369-Screenshot_13.png differ diff --git a/assets/uploads/vouchers/69973e4694d6d-808.png b/assets/uploads/vouchers/69973e4694d6d-808.png new file mode 100644 index 0000000..0bb36db Binary files /dev/null and b/assets/uploads/vouchers/69973e4694d6d-808.png differ diff --git a/generar_etiquetas.php b/generar_etiquetas.php index 94be78a..9caac77 100644 --- a/generar_etiquetas.php +++ b/generar_etiquetas.php @@ -26,7 +26,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $db->beginTransaction(); // 1. Lock the product row and get current counter and code base - $stmt = $db->prepare("SELECT codigo_base, contador_etiquetas FROM products WHERE id = ? FOR UPDATE"); + $stmt = $db->prepare("SELECT codigo_base, sku, contador_etiquetas FROM products WHERE id = ? FOR UPDATE"); $stmt->execute([$producto_id]); $product_data = $stmt->fetch(PDO::FETCH_ASSOC); @@ -37,6 +37,20 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $codigo_base = $product_data['codigo_base']; $contador_actual = (int)$product_data['contador_etiquetas']; + // If codigo_base is missing, try to use SKU + if (empty($codigo_base)) { + $codigo_base = $product_data['sku']; + + // If SKU is also missing, abort + if (empty($codigo_base)) { + throw new Exception("El producto no tiene un SKU o Código Base definido. Por favor, edite el producto y añada un SKU."); + } + + // Persist the SKU as the codigo_base for future use + $update_base_stmt = $db->prepare("UPDATE products SET codigo_base = ? WHERE id = ?"); + $update_base_stmt->execute([$codigo_base, $producto_id]); + } + // Prepare statement for insertion into unidades_inventario $insert_stmt = $db->prepare("INSERT INTO unidades_inventario (codigo_unico, producto_id) VALUES (?, ?)"); diff --git a/get_barcodes_by_product_and_sede.php b/get_barcodes_by_product_and_sede.php index 21cbf85..23a650a 100644 --- a/get_barcodes_by_product_and_sede.php +++ b/get_barcodes_by_product_and_sede.php @@ -4,9 +4,8 @@ require_once 'db/config.php'; header('Content-Type: application/json'); $productId = isset($_GET['product_id']) ? (int)$_GET['product_id'] : 0; -$sedeId = isset($_GET['sede_id']) ? (int)$_GET['sede_id'] : 0; -if ($productId <= 0 || $sedeId <= 0) { +if ($productId <= 0) { echo json_encode([]); exit; } @@ -16,15 +15,18 @@ try { $stmt = $db->prepare( "SELECT codigo_unico, estado FROM unidades_inventario - WHERE producto_id = :product_id AND sede_id = :sede_id" + WHERE producto_id = :product_id AND estado = 'En Almacén'" ); $stmt->bindParam(':product_id', $productId, PDO::PARAM_INT); - $stmt->bindParam(':sede_id', $sedeId, PDO::PARAM_INT); $stmt->execute(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); - echo json_encode($results); + if (empty($results)) { + echo json_encode(['message' => 'No se encontraron unidades con estado En Almacén.']); + } else { + echo json_encode($results); + } } catch (PDOException $e) { http_response_code(500); diff --git a/panel_inventario.php b/panel_inventario.php index 568c12e..09c1465 100644 --- a/panel_inventario.php +++ b/panel_inventario.php @@ -21,7 +21,7 @@ try { // 1. Datos para las tarjetas de resumen $total_productos = $pdo->query("SELECT COUNT(*) FROM products")->fetchColumn(); $total_sedes = $pdo->query("SELECT COUNT(*) FROM sedes")->fetchColumn(); - $total_stock = $pdo->query("SELECT COUNT(*) FROM unidades_inventario WHERE estado = 'En Almacén'")->fetchColumn(); + $total_stock = $pdo->query("SELECT SUM(quantity) FROM stock_sedes")->fetchColumn(); // 2. Datos para la tabla de inventario $sedes_stmt = $pdo->query("SELECT id, nombre FROM sedes ORDER BY nombre"); @@ -30,7 +30,7 @@ try { $products_stmt = $pdo->query("SELECT id, nombre, sku FROM products ORDER BY nombre"); $products = $products_stmt->fetchAll(PDO::FETCH_ASSOC); - $stock_stmt = $pdo->query("SELECT producto_id, sede_id, COUNT(*) as quantity FROM unidades_inventario WHERE estado = 'En Almacén' GROUP BY producto_id, sede_id"); + $stock_stmt = $pdo->query("SELECT product_id AS producto_id, sede_id, quantity FROM stock_sedes"); $stock_data = $stock_stmt->fetchAll(PDO::FETCH_ASSOC); $inventario = []; diff --git a/pedidos.php b/pedidos.php index b02f741..20c9e35 100644 --- a/pedidos.php +++ b/pedidos.php @@ -1,248 +1,294 @@ quote($estado); + switch (strtoupper(trim($status))) { + case 'ROTULADO': + $bgColor = '#ffc107'; // yellow + $style = 'color: black;'; + break; + case 'EN TRANSITO': + $bgColor = '#90EE90'; // light green + $style = 'color: black;'; + break; + case 'EN DESTINO': + $bgColor = '#800080'; // purple + break; + case 'COMPLETADO': + case 'COMPLETADO ✅': + $bgColor = '#198754'; // dark green + break; + case 'GESTION': + $bgColor = '#6c757d'; // secondary grey + break; + } + return "background-color: {$bgColor} !important; {$style}"; } -// Filter by date -$fecha = isset($_GET['fecha']) ? $_GET['fecha'] : ''; -if ($fecha) { - $sql .= " AND p.fecha_pedido = " . $db->quote($fecha); +$pdo = db(); + +$user_id = $_SESSION['user_id']; +$user_role = $_SESSION['user_role'] ?? 'Asesor'; + +// Fetch years for the filter +$years_query = "SELECT DISTINCT YEAR(created_at) as year FROM pedidos"; +if ($user_role === 'Asesor') { + $years_query .= " WHERE asesor_id = ?"; + $years_stmt = $pdo->prepare($years_query); + $years_stmt->execute([$user_id]); +} else { + $years_stmt = $pdo->query($years_query); +} +$years = $years_stmt->fetchAll(PDO::FETCH_COLUMN); + + +// Filter logic +$selected_month = $_GET['mes'] ?? ''; +$selected_year = $_GET['año'] ?? ''; +$search_query = $_GET['q'] ?? ''; + +$sql = "SELECT p.*, u.nombre_asesor as asesor_nombre FROM pedidos p LEFT JOIN users u ON p.asesor_id = u.id WHERE p.estado = 'ROTULADO 📦'"; +$params = []; + +if ($user_role === 'Asesor') { + $sql .= " AND p.asesor_id = ?"; + $params[] = $user_id; } -// Filter by search term -$search = isset($_GET['search']) ? $_GET['search'] : ''; -if ($search) { - $searchTerm = '%' . $search . '%'; - $sql .= " AND (p.nombre_cliente LIKE " . $db->quote($searchTerm) . " OR p.celular_cliente LIKE " . $db->quote($searchTerm) . " OR p.guia LIKE " . $db->quote($searchTerm) . ")"; +if (!empty($search_query)) { + $sql .= " AND (p.nombre_completo LIKE ? OR p.dni_cliente LIKE ? OR p.celular LIKE ?)"; + $params[] = "%$search_query%"; + $params[] = "%$search_query%"; + $params[] = "%$search_query%"; } -// Filter by asesor for non-admin roles -if ($role !== 'admin') { - $sql .= " AND p.asesor_id = " . $db->quote($asesor_id); +if (!empty($selected_month)) { + $sql .= " AND MONTH(p.created_at) = ?"; + $params[] = $selected_month; +} +if (!empty($selected_year)) { + $sql .= " AND YEAR(p.created_at) = ?"; + $params[] = $selected_year; } -$sql .= " ORDER BY p.id DESC"; +$sql .= " ORDER BY p.created_at DESC"; +$stmt = $pdo->prepare($sql); +$stmt->execute($params); +$pedidos = $stmt->fetchAll(); -$result = $db->query($sql); +$months = [ + 1 => 'Enero', 2 => 'Febrero', 3 => 'Marzo', 4 => 'Abril', 5 => 'Mayo', 6 => 'Junio', + 7 => 'Julio', 8 => 'Agosto', 9 => 'Septiembre', 10 => 'Octubre', 11 => 'Noviembre', 12 => 'Diciembre' +]; + +?> + -
-

Gestión de Pedidos

- -
-
- Filtros -
-
-
-
- - -
-
- - -
-
- - -
-
- -
-
-
-
- - -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - rowCount() > 0): ?> - fetch(PDO::FETCH_ASSOC)): ?> - - - - - - - - - - - - - - - - - - - - - - - -
IDFechaAsesorGuíaEstado ShalomClienteCelularDirecciónProductoTotalEstadoAcciones
- - Verificando... - - 8) { - // The URL is prepared, but the link will be enabled via JS - $mensaje_whatsapp = "¡Hola " . htmlspecialchars($row['nombre_cliente']) . "! Tu pedido ha llegado a la agencia de destino y está listo para ser recogido. ¡Gracias por tu compra!"; - $whatsapp_url = "https://wa.me/" . $celular_limpio . "?text=" . urlencode($mensaje_whatsapp); - } - ?> - - - - S/ - Editar -
No se encontraron pedidos.
-
+ + - - - + +
+
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDClienteDNICelularProductoSede de EnvíoMonto TotalMonto DebeNº De OrdenCodigo De OrdenCLAVEEstadoAsesorFecha CreaciónVoucher RestanteAcciones
+ + Ver + + N/A + + + Editar + + Eliminar + +
+ +

No hay pedidos que coincidan con el filtro.

+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/pedidos_en_transito.php b/pedidos_en_transito.php index 7b85331..3968d70 100644 --- a/pedidos_en_transito.php +++ b/pedidos_en_transito.php @@ -96,6 +96,30 @@ $pageTitle = "Pedidos en Tránsito"; include 'layout_header.php'; ?> + + + + Limpiar +
@@ -159,6 +184,7 @@ include 'layout_header.php'; Codigo De Orden CLAVE Estado + Estado Shalom Asesor Fecha Creación Voucher Restante @@ -167,27 +193,96 @@ include 'layout_header.php'; - + - + + $nombre_cliente, + '{PRODUCTO}' => $producto, + '{SEDE_ENVIO}' => $sede_envio, + '{MONTO_TOTAL}' => number_format($monto_total, 2), + '{ADELANTO}' => number_format($adelanto, 2), + '{SALDO_PENDIENTE}' => number_format($monto_debe, 2) + ]; + + $whatsappMessage = str_replace(array_keys($replacements), array_values($replacements), $template); + $whatsappMessage = urlencode($whatsappMessage); + + $celular = preg_replace('/[^0-9]/', '', $pedido['celular']); + if (strlen($celular) == 9) { + $celular = '51' . $celular; + } + + $whatsappUrl = "https://api.whatsapp.com/send?phone={$celular}&text={$whatsappMessage}"; + ?> +
+ + 💬 +
+ - + + Pendiente Ver - - N/A + N/A @@ -203,7 +298,6 @@ include 'layout_header.php';

No hay pedidos que coincidan con el filtro.

- @@ -213,12 +307,13 @@ include 'layout_header.php'; \ No newline at end of file + diff --git a/test_pedidos.php b/test_pedidos.php deleted file mode 100644 index f0b2231..0000000 --- a/test_pedidos.php +++ /dev/null @@ -1,472 +0,0 @@ -prepare($years_query); - $years_stmt->execute([$user_id]); -} else { - $years_stmt = $pdo->query($years_query); -} -$years = $years_stmt->fetchAll(PDO::FETCH_COLUMN); - - -// Filter logic -$selected_month = $_GET['mes'] ?? ''; -$selected_year = $_GET['año'] ?? ''; -$search_query = $_GET['q'] ?? ''; - -$sql = "SELECT p.*, u.nombre_asesor as asesor_nombre FROM pedidos p LEFT JOIN users u ON p.asesor_id = u.id WHERE p.estado = 'EN TRANSITO 🚛'"; -$params = []; - -if ($user_role === 'Asesor') { - $sql .= " AND p.asesor_id = ?"; - $params[] = $user_id; -} - -if (!empty($search_query)) { - $sql .= " AND (p.nombre_completo LIKE ? OR p.dni_cliente LIKE ? OR p.celular LIKE ?)"; - $params[] = "%$search_query%"; - $params[] = "%$search_query%"; - $params[] = "%$search_query%"; -} - -if (!empty($selected_month)) { - $sql .= " AND MONTH(p.created_at) = ?"; - $params[] = $selected_month; -} -if (!empty($selected_year)) { - $sql .= " AND YEAR(p.created_at) = ?"; - $params[] = $selected_year; -} - -$sql .= " ORDER BY p.created_at DESC"; -$stmt = $pdo->prepare($sql); -$stmt->execute($params); -$pedidos = $stmt->fetchAll(); - -$months = [ - 1 => 'Enero', 2 => 'Febrero', 3 => 'Marzo', 4 => 'Abril', 5 => 'Mayo', 6 => 'Junio', - 7 => 'Julio', 8 => 'Agosto', 9 => 'Septiembre', 10 => 'Octubre', 11 => 'Noviembre', 12 => 'Diciembre' -]; - -?> - - - - - - - - - - - -
-
-
-
- - -
-
- - -
-
- - -
-
- - Limpiar - -
-
-
-
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDClienteDNICelularProductoSede de EnvíoCantidadMonto TotalMonto DebeNº De OrdenCodigo De OrdenCLAVEEstadoEstado ShalomAsesorFecha CreaciónVoucher RestanteAcciones
- $nombre_cliente, - '{PRODUCTO}' => $producto, - '{SEDE_ENVIO}' => $sede_envio, - '{MONTO_TOTAL}' => number_format($monto_total, 2), - '{ADELANTO}' => number_format($adelanto, 2), - '{SALDO_PENDIENTE}' => number_format($monto_debe, 2) - ]; - - $whatsappMessage = str_replace(array_keys($replacements), array_values($replacements), $template); - $whatsappMessage = urlencode($whatsappMessage); - - $celular = preg_replace('/[^0-9]/', '', $pedido['celular']); - if (strlen($celular) == 9) { - $celular = '51' . $celular; - } - - $whatsappUrl = "https://api.whatsapp.com/send?phone={$celular}&text={$whatsappMessage}"; - ?> -
- - 💬 -
-
- - Pendiente - - Ver - N/A - - - Editar - - Eliminar - -
- -

No hay pedidos que coincidan con el filtro.

- -
-
-
- - - - - -