{"version":3,"sources":["../../src/printUtils/index.ts","../../src/printUtils/printTemplates.ts"],"sourcesContent":["import { PrintTemplate } from \"./printTemplates\";\n\ninterface PrintConfig {\n  isDelivery: boolean;\n  isTableSession: boolean;\n  hasWithdrawal: boolean;\n}\n\nfunction getPrintConfig(data: CommonData): PrintConfig {\n  return {\n    isDelivery: !!(\n      (\"is_delivery\" in data && data.is_delivery) ||\n      (data.print_object &&\n        \"is_delivery\" in data.print_object &&\n        data.print_object.is_delivery)\n    ),\n    isTableSession: data.print_type === \"table_session\",\n    hasWithdrawal:\n      \"with_withdrawal\" in data.print_object\n        ? !!data.print_object.with_withdrawal\n        : false,\n  };\n}\n\nexport function newPrintFunction(data: CommonData): string {\n  const config = getPrintConfig(data);\n\n  const header = config.isDelivery\n    ? PrintTemplate.buildDeliveryHeader(data)\n    : PrintTemplate.buildTableSessionHeader(data);\n\n  const orderItems = config.isDelivery\n    ? PrintTemplate.buildAllOrdersDelivery(data)\n    : PrintTemplate.buildAllOrders(data);\n  const totals = !config.isDelivery\n    ? PrintTemplate.buildTotals(data)\n    : PrintTemplate.buildTotals(data);\n  const payments = !config.isDelivery\n    ? PrintTemplate.buildPayments(data)\n    : PrintTemplate.buildPaymentsDelivery(data);\n\n  const headerHtml = PrintTemplate.renderElement(header);\n  const bodyHtml = `\n    ${PrintTemplate.renderElement(orderItems)}\n    ${PrintTemplate.renderElement(totals)}\n    ${PrintTemplate.renderElement(payments)}\n  `;\n\n  return `\n          <div id=\"header\">${headerHtml}</div>\n          <div id=\"body\">${bodyHtml}</div>\n  `;\n}\n","// Enhanced template system for better developer experience\nexport interface HtmlElement {\n  tag: string;\n  attributes?: Record<string, string>;\n  children?: (HtmlElement | string)[];\n  content?: string;\n}\n\nexport class PrintTemplate {\n  // Template helper functions with IntelliSense support\n  static div(\n    attributes: Record<string, string> = {},\n    children: (HtmlElement | string)[] = [],\n  ): HtmlElement {\n    return { tag: \"div\", attributes, children };\n  }\n\n  static span(\n    text: string,\n    className?: string,\n    attributes: Record<string, string> = {},\n  ): HtmlElement {\n    const attrs = className ? { class: className, ...attributes } : attributes;\n    return { tag: \"span\", attributes: attrs, content: text };\n  }\n\n  static flexContainer(\n    direction: \"row\" | \"column\" = \"row\",\n    gap: string = \"8px\",\n    alignItems: string = \"center\",\n    justifyContent: string = \"center\",\n    additionalStyles: string = \"\",\n    children: (HtmlElement | string)[] = [],\n  ): HtmlElement {\n    const style = `display: flex; flex-direction: ${direction}; gap: ${gap}; align-items: ${alignItems}; justify-content: ${justifyContent}; ${additionalStyles}`;\n    return PrintTemplate.div({ style }, children);\n  }\n\n  static renderElement(element: HtmlElement | string): string {\n    if (typeof element === \"string\") {\n      return element;\n    }\n\n    const { tag, attributes = {}, children = [], content = \"\" } = element;\n\n    const attrs = Object.entries(attributes)\n      .map(([key, value]) => `${key}=\"${value}\"`)\n      .join(\" \");\n\n    const attrsStr = attrs ? ` ${attrs}` : \"\";\n\n    if (children.length > 0) {\n      const childrenStr = children\n        .map((child) => PrintTemplate.renderElement(child))\n        .join(\"\");\n      return `<${tag}${attrsStr}>${childrenStr}</${tag}>`;\n    }\n\n    return `<${tag}${attrsStr}>${content}</${tag}>`;\n  }\n\n  // Template builders for different print types\n  static buildTableSessionHeader(data: CommonData): HtmlElement {\n    const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n    const formattedDate = new Date(\n      \"start_time\" in data.print_object && data.print_object.start_time\n        ? data.print_object.start_time\n        : \"\",\n    ).toLocaleString(\"pt-BR\", {\n      year: \"numeric\",\n      month: \"2-digit\",\n      day: \"2-digit\",\n      hour12: false,\n      timeZone: userTimezone,\n    });\n\n    const formattedHour = new Date(\n      \"start_time\" in data.print_object && data.print_object.start_time\n        ? data.print_object.start_time\n        : \"\",\n    ).toLocaleString(\"pt-BR\", {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n      hour12: false,\n      timeZone: userTimezone,\n    });\n\n    switch (data.print_type) {\n      case \"table_session\": {\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"8px\",\n          \"center\",\n          \"center\",\n          \"padding-bottom: 4px; border-bottom: 1px solid #000;\",\n          [\n            PrintTemplate.span(\n              `${data.restaurant_name ? `${data.restaurant_name}` : \"\"} `,\n              \"font--size-10 font--weight-500 font--ls-20\",\n            ),\n            PrintTemplate.flexContainer(\n              \"column\",\n              \"2px\",\n              \"center\",\n              \"center\",\n              \"\",\n              [\n                PrintTemplate.span(\n                  \"VIA DE FECHAMENTO\",\n                  \"font--size-12 font--weight-700 font--ls-24\",\n                ),\n                PrintTemplate.span(\n                  `${formattedDate} - ${formattedHour}`,\n                  \"font--size-10 font--weight-500 font--ls-20 padding-top:4px\",\n                ),\n              ],\n            ),\n            PrintTemplate.flexContainer(\n              \"row\",\n              \"0px\",\n              \"center\",\n              \"space-between\",\n              \"width: 100%;\",\n              [\n                PrintTemplate.span(\n                  `${data.print_object.table.table_type === \"table\" ? \"MESA\" : \"COMANDA\"} ${data.print_object.table.table_number}`,\n                  \"font--size-12 font--weight-700 font--ls-24\",\n                ),\n                PrintTemplate.span(\n                  `Pedido #${data.print_object.id}`,\n                  \"font--size-12 font--weight-700 font--ls-24\",\n                ),\n              ],\n            ),\n          ],\n        );\n      }\n      case \"order\": {\n        return PrintTemplate.div({}, [\n          PrintTemplate.flexContainer(\n            \"column\",\n            \"4px\",\n            \"center\",\n            \"center\",\n            \"padding-bottom: 4px; border-bottom: 1px solid #000;\",\n            [\n              PrintTemplate.span(\n                `${data.restaurant_name ? `${data.restaurant_name}` : \"\"}`,\n                \"font--size-10 font--weight-500 font--ls-20\",\n              ),\n              ...(data.order_type === \"CANCELAMENTO\"\n                ? [\n                    PrintTemplate.span(\n                      \"CANCELAMENTO\",\n                      \"font--size-12 font--weight-700 font--ls-24\",\n                    ),\n                  ]\n                : []),\n              PrintTemplate.flexContainer(\n                \"column\",\n                \"2px\",\n                \"center\",\n                \"center\",\n                \"\",\n                [\n                  PrintTemplate.span(\n                    `${formattedDate} - ${formattedHour}`,\n                    \"font--size-10 font--weight-500 font--ls-20\",\n                  ),\n                ],\n              ),\n              PrintTemplate.flexContainer(\n                \"row\",\n                \"0px\",\n                \"center\",\n                \"space-between\",\n                \"width: 100%;\",\n                [\n                  PrintTemplate.span(\n                    `${data.print_object.table.table_type === \"table\" ? \"MESA\" : \"COMANDA\"} ${data.print_object.table.table_number}`,\n                    \"font--size-12 font--weight-700 font--ls-24\",\n                  ),\n                  PrintTemplate.span(\n                    `#${data.print_object.basket_id}`,\n                    \"font--size-12 font--weight-700 font--ls-24\",\n                  ),\n                ],\n              ),\n            ],\n          ),\n          PrintTemplate.flexContainer(\n            \"column\",\n            \"4px\",\n            \"center\",\n            \"center\",\n            \"padding-bottom: 4px; border-bottom: 1px dashed #000; padding-top: 4px\",\n            [\n              PrintTemplate.flexContainer(\n                \"row\",\n                \"2px\",\n                \"flex-start\",\n                \"flex-start\",\n                \"\",\n                [\n                  ...(\"input_client\" in data && data.input_client\n                    ? [\n                        PrintTemplate.span(\n                          `Cliente: `,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${data.input_client}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ]\n                    : [\n                        PrintTemplate.span(\n                          `Garçom: ${data.input_waiter}`,\n                          \"font--size-11 font--weight-700 font--ls-22\",\n                        ),\n                      ]),\n                ],\n              ),\n            ],\n          ),\n        ]);\n      }\n      case \"individual_bill\": {\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"8px\",\n          \"center\",\n          \"center\",\n          \"padding-bottom: 4px; border-bottom: 1px solid #000;\",\n          [\n            PrintTemplate.span(\n              `${data.restaurant_name ? `${data.restaurant_name}` : \"\"} `,\n              \"font--size-10 font--weight-500 font--ls-20\",\n            ),\n            PrintTemplate.flexContainer(\n              \"column\",\n              \"2px\",\n              \"center\",\n              \"center\",\n              \"\",\n              [\n                PrintTemplate.span(\n                  \"COMANDA INDIVIDUAL\",\n                  \"font--size-12 font--weight-700 font--ls-24\",\n                ),\n                PrintTemplate.span(\n                  `${formattedDate} - ${formattedHour}`,\n                  \"font--size-10 font--weight-500 font--ls-20 padding-top:4px\",\n                ),\n              ],\n            ),\n            PrintTemplate.flexContainer(\n              \"row\",\n              \"0px\",\n              \"center\",\n              \"space-between\",\n              \"width: 100%;\",\n              [\n                PrintTemplate.span(\n                  `${data.print_object.session.table.table_type === \"table\" ? \"MESA\" : \"COMANDA\"} ${data.print_object.session.table.table_number}`,\n                  \"font--size-12 font--weight-700 font--ls-24\",\n                ),\n                PrintTemplate.span(\n                  `Pedido #${data.print_object.id}`,\n                  \"font--size-12 font--weight-700 font--ls-24\",\n                ),\n              ],\n            ),\n          ],\n        );\n      }\n    }\n\n    return PrintTemplate.div({});\n  }\n\n  static buildDeliveryHeader(data: CommonData): HtmlElement {\n    const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n    const formattedDate = new Date(\n      \"start_time\" in data.print_object && data.print_object.start_time\n        ? data.print_object.start_time\n        : \"\",\n    ).toLocaleString(\"pt-BR\", {\n      year: \"numeric\",\n      month: \"2-digit\",\n      day: \"2-digit\",\n      hour12: false,\n      timeZone: userTimezone,\n    });\n\n    const formattedHour = new Date(\n      \"start_time\" in data.print_object && data.print_object.start_time\n        ? data.print_object.start_time\n        : \"\",\n    ).toLocaleString(\"pt-BR\", {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n      hour12: false,\n      timeZone: userTimezone,\n    });\n\n    switch (data.print_type) {\n      case \"table_session\": {\n        const dateScheduled =\n          \"scheduled_to\" in data.print_object && data.print_object.scheduled_to\n            ? new Date(data.print_object.scheduled_to).toLocaleString(\"pt-BR\", {\n                year: \"numeric\",\n                month: \"2-digit\",\n                day: \"2-digit\",\n                hour12: false,\n                timeZone: userTimezone,\n              })\n            : null;\n\n        const hourScheduled =\n          \"scheduled_to\" in data.print_object && data.print_object.scheduled_to\n            ? new Date(data.print_object.scheduled_to).toLocaleString(\"pt-BR\", {\n                hour: \"2-digit\",\n                minute: \"2-digit\",\n                hour12: false,\n                timeZone: userTimezone,\n              })\n            : null;\n\n        const withdrawalText =\n          \"with_withdrawal\" in data.print_object &&\n          data.print_object.with_withdrawal\n            ? \" RETIRADA\"\n            : \"DELIVERY\";\n        const scheduled_to =\n          \"scheduled_to\" in data.print_object &&\n          data.print_object.scheduled_to &&\n          data.print_object.scheduled_to.length > 0\n            ? data.print_object.with_withdrawal\n              ? \"RETIRADA AGENDADA PARA\"\n              : \"DELIVERY AGENDADO PARA\"\n            : null;\n        const fechamento =\n          \"with_withdrawal\" in data.print_object &&\n          data.print_object.with_withdrawal\n            ? \"VIA DE FECHAMENTO - RETIRADA\"\n            : \"VIA DE FECHAMENTO - DELIVERY\";\n\n        const ifood = data.print_object.ifood_discount;\n        const neemo = data.print_object.bills[0].order_baskets[0].neemo_id;\n        const entregaIfood =\n          data.print_object.delivery_by &&\n          data.print_object.delivery_by !== null\n            ? data.print_object.delivery_by === \"MERCHANT\"\n              ? \"ENTREGA PRÓPRIA\"\n              : \"ENTREGA IFOOD\"\n            : null;\n\n        return PrintTemplate.div({}, [\n          // Main header section\n          PrintTemplate.flexContainer(\n            \"column\",\n            \"8px\",\n            \"center\",\n            \"center\",\n            \"padding-bottom: 4px; border-bottom: 1px solid #000;\",\n            [\n              PrintTemplate.span(\n                `${data.restaurant_name ? `${data.restaurant_name}` : \"\"} `,\n                \"font--size-10 font--weight-500 font--ls-20\",\n              ),\n\n              PrintTemplate.flexContainer(\n                \"column\",\n                \"0px\",\n                \"center\",\n                \"center\",\n                \"\",\n                [\n                  ...(\"status\" in data.print_object &&\n                  data.print_object.status === \"completed\"\n                    ? [\n                        PrintTemplate.span(\n                          `${fechamento}`,\n                          \"font--size-12 font--weight-700 font--ls-24\",\n                        ),\n                        PrintTemplate.span(\n                          `${formattedDate} - ${formattedHour}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ]\n                    : [\n                        ...(scheduled_to\n                          ? [\n                              PrintTemplate.span(\n                                `${scheduled_to}`,\n                                \"font--size-12 font--weight-700 font--ls-24\",\n                              ),\n                              PrintTemplate.span(\n                                `${dateScheduled} - ${hourScheduled}`,\n                                \"font--size-10 font--weight-500 font--ls-20\",\n                              ),\n                            ]\n                          : [\n                              ifood\n                                ? PrintTemplate.span(\n                                    `IFOOD`,\n                                    \"font--size-12 font--weight-700 font--ls-24\",\n                                  )\n                                : neemo\n                                  ? PrintTemplate.span(\n                                      `NEEMO`,\n                                      \"font--size-12 font--weight-700 font--ls-24\",\n                                    )\n                                  : \"\",\n                              PrintTemplate.span(\n                                `${withdrawalText}`,\n                                \"font--size-12 font--weight-700 font--ls-24\",\n                              ),\n                              PrintTemplate.span(\n                                `${formattedDate} - ${formattedHour}`,\n                                \"font--size-10 font--weight-500 font--ls-20\",\n                              ),\n                            ]),\n                      ]),\n                ],\n              ),\n              PrintTemplate.flexContainer(\n                \"row\",\n                \"0px\",\n                \"center\",\n                \"center\",\n                \"width: 100%;\",\n                [\n                  ifood\n                    ? PrintTemplate.flexContainer(\n                        \"row\",\n                        \"0px\",\n                        \"center\",\n                        \"space-between\",\n                        \"width: 100%;\",\n                        [\n                          PrintTemplate.span(\n                            `PEDIDO #${data.print_object.attendance_password}`,\n                            \"font--size-12 font--weight-700 font--ls-24\",\n                          ),\n                          PrintTemplate.span(\n                            `Ifood: ${String(data.order_number ? data.order_number : \"-\").replace(/^Nº\\s*/i, \"\")}`,\n                            \"font--size-12 font--weight-700 font--ls-24\",\n                          ),\n                        ],\n                      )\n                    : \"with_withdrawal\" in data.print_object &&\n                        data.print_object.with_withdrawal === true\n                      ? PrintTemplate.span(\n                          `PEDIDO #${data.print_object.attendance_password || \"\"}`,\n                          \"font--size-12 font--weight-700 font--ls-24\",\n                        )\n                      : PrintTemplate.flexContainer(\n                          \"row\",\n                          \"0px\",\n                          \"center\",\n                          \"center\",\n                          \"width: 100%;\",\n                          [\n                            PrintTemplate.span(\n                              \"attendance_password\" in data.print_object\n                                ? `PEDIDO #${data.print_object.attendance_password || \"\"}`\n                                : \"\",\n                              \"font--size-12 font--weight-700 font--ls-24\",\n                            ),\n                          ],\n                        ),\n                ],\n              ),\n            ],\n          ),\n          ...(data.print_object.ifood_discount\n            ? [\n                PrintTemplate.flexContainer(\n                  \"column\",\n                  \"4px\",\n                  \"center\",\n                  \"center\",\n                  \"width: 100%; padding-top: 4px;\",\n                  [\n                    ...(entregaIfood\n                      ? [\n                          PrintTemplate.span(\n                            `${entregaIfood}`,\n                            \"font--size-10 font--weight-700 font--ls-20\",\n                          ),\n                        ]\n                      : [\n                          PrintTemplate.span(\n                            ``,\n                            \"font--size-10 font--weight-700 font--ls-20\",\n                          ),\n                        ]),\n                  ],\n                ),\n                PrintTemplate.flexContainer(\n                  \"column\",\n                  \"2px\",\n                  \"flex-start\",\n                  \"flex-start\",\n                  \"padding-top: 4px; padding-bottom: 4px; border-bottom: 1px dashed #000;\",\n                  [\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Data e hora:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${formattedDate} - ${formattedHour}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Localizador:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${\"buyer\" in data.print_object.bills[0] && data.print_object.bills[0].buyer?.localizer}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                  ],\n                ),\n              ]\n            : []),\n\n          PrintTemplate.flexContainer(\n            \"column\",\n            \"2px\",\n            \"flex-start\",\n            \"flex-start\",\n            \"padding-top: 4px; padding-bottom: 4px; border-bottom: 1px dashed #000;\",\n            [\n              PrintTemplate.flexContainer(\n                \"row\",\n                \"2px\",\n                \"flex-start\",\n                \"flex-start\",\n                \"\",\n                [\n                  PrintTemplate.span(\n                    `Cliente: `,\n                    \"font--size-10 font--weight-700 font--ls-20\",\n                  ),\n                  PrintTemplate.span(\n                    \"bills\" in data.print_object &&\n                      data.print_object.bills[0]?.buyer?.name\n                      ? `${data.print_object.bills[0].buyer.name}`\n                      : \"-\",\n                    \"font--size-10 font--weight-500 font--ls-20\",\n                  ),\n                ],\n              ),\n              PrintTemplate.flexContainer(\n                \"row\",\n                \"2px\",\n                \"flex-start\",\n                \"flex-start\",\n                \"\",\n                [\n                  PrintTemplate.span(\n                    `Tel: `,\n                    \"font--size-10 font--weight-700 font--ls-20\",\n                  ),\n                  PrintTemplate.span(\n                    \"bills\" in data.print_object &&\n                      data.print_object.bills[0]?.buyer?.phone\n                      ? `${data.print_object.bills[0].buyer.phone}`\n                      : \"-\",\n                    \"font--size-10 font--weight-500 font--ls-20\",\n                  ),\n                ],\n              ),\n\n              ...(\"is_delivery\" in data.print_object &&\n              \"with_withdrawal\" in data.print_object &&\n              data.print_object.is_delivery &&\n              !data.print_object.with_withdrawal\n                ? [\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Endereço:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${data.print_object.buyer_address?.street || \"-\"}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Número:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${data.print_object.buyer_address?.number || \"-\"}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Comp:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${data.print_object.buyer_address?.complement || \"-\"}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Bairro:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${data.print_object.buyer_address?.neighborhood || \"-\"}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Ref:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${data.print_object.buyer_address?.reference || \"-\"}`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Cidade:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${data.print_object.buyer_address?.city || \"-\"} -`,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n\n                        PrintTemplate.span(\n                          `CEP:`,\n                          \"font--size-10 font--weight-700 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          `${data.print_object.buyer_address?.zip_code || \"-\"} `,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                    ...(data.print_object.details &&\n                    data.print_object.details?.length > 0\n                      ? [\n                          PrintTemplate.flexContainer(\n                            \"row\",\n                            \"4px\",\n                            \"flex-start\",\n                            \"flex-start\",\n                            \"width: 100%; padding-top: 2px; \",\n                            [\n                              PrintTemplate.span(\n                                `Info Adicional:`,\n                                \"font--size-10 font--weight-700 font--ls-20\",\n                              ),\n                              PrintTemplate.span(\n                                `${data.print_object.details} `,\n                                \"font--size-10 font--weight-500 font--ls-20\",\n                              ),\n                            ],\n                          ),\n                        ]\n                      : []),\n                    ...(data.print_object.motoboy\n                      ? [\n                          PrintTemplate.flexContainer(\n                            \"column\",\n                            \"4px\",\n                            \"center\",\n                            \"center\",\n                            \"width: 100%; padding-top: 4px; border-top: 1px dashed #000;\",\n                            [\n                              PrintTemplate.span(\n                                `ENTREGA PRÓPRIA:`,\n                                \"font--size-10 font--weight-700 font--ls-20\",\n                              ),\n                              PrintTemplate.span(\n                                `Motoboy ${data.print_object.motoboy?.name}`,\n                                \"font--size-10 font--weight-500 font--ls-20\",\n                              ),\n                            ],\n                          ),\n                        ]\n                      : []),\n                  ]\n                : []),\n            ],\n          ),\n        ]);\n      }\n      case \"order\": {\n        const scheduled_To =\n          \"scheduled_to\" in data &&\n          data.scheduled_to &&\n          data.scheduled_to.length > 0\n            ? \"with_withdrawal\" in data &&\n              data.with_withdrawal === \"Retirada Agendado\"\n              ? \"RETIRADA AGENDADA PARA\"\n              : \"DELIVERY AGENDADO PARA\"\n            : null;\n        const deliveryIfood =\n          \"is_delivery\" in data &&\n          \"with_withdrawal\" in data &&\n          data.is_delivery &&\n          data.with_withdrawal === \"iFood\";\n\n        const ifood =\n          data.with_withdrawal === \"iFood - Delivery\" ||\n          data.with_withdrawal === \"iFood - Retirada\";\n\n        const dateScheduled =\n          \"scheduled_to\" in data && data.scheduled_to\n            ? new Date(data.scheduled_to).toLocaleString(\"pt-BR\", {\n                year: \"numeric\",\n                month: \"2-digit\",\n                day: \"2-digit\",\n                hour12: false,\n                timeZone: userTimezone,\n              })\n            : null;\n\n        const hourScheduled =\n          \"scheduled_to\" in data && data.scheduled_to\n            ? new Date(data.scheduled_to).toLocaleString(\"pt-BR\", {\n                hour: \"2-digit\",\n                minute: \"2-digit\",\n                hour12: false,\n                timeZone: userTimezone,\n              })\n            : null;\n\n        return PrintTemplate.div({}, [\n          PrintTemplate.flexContainer(\n            \"column\",\n            \"8px\",\n            \"center\",\n            \"center\",\n            \"padding-bottom: 4px; border-bottom: 1px solid #000;\",\n            [\n              ...(scheduled_To\n                ? [\n                    ifood\n                      ? PrintTemplate.span(\n                          `IFOOD`,\n                          \"font--size-12 font--weight-700 font--ls-24\",\n                        )\n                      : \"\",\n                    PrintTemplate.span(\n                      `${scheduled_To}`,\n                      \"font--size-12 font--weight-700 font--ls-24\",\n                    ),\n                  ]\n                : deliveryIfood\n                  ? [\n                      PrintTemplate.span(\n                        `Delivery IFood`,\n                        \"font--size-12 font--weight-700 font--ls-24\",\n                      ),\n                    ]\n                  : \"with_withdrawal\" in data &&\n                      data.with_withdrawal === \"Retirada\"\n                    ? [\n                        PrintTemplate.span(\n                          `Retirada`,\n                          \"font--size-12 font--weight-700 font--ls-24\",\n                        ),\n                      ]\n                    : [\n                        PrintTemplate.span(\n                          `Delivery`,\n                          \"font--size-12 font--weight-700 font--ls-24\",\n                        ),\n                      ]),\n\n              scheduled_To\n                ? PrintTemplate.span(\n                    `${dateScheduled} - ${hourScheduled}`,\n                    \"font--size-10 font--weight-500 font--ls-20\",\n                  )\n                : PrintTemplate.span(\n                    `${formattedDate} - ${formattedHour}`,\n                    \"font--size-10 font--weight-500 font--ls-20\",\n                  ),\n\n              deliveryIfood || ifood\n                ? PrintTemplate.flexContainer(\n                    \"row\",\n                    \"0px\",\n                    \"center\",\n                    \"space-between\",\n                    \"width: 100%;\",\n                    [\n                      PrintTemplate.span(\n                        `PEDIDO #${data.print_object.basket_id}`,\n                        \"font--size-12 font--weight-700 font--ls-24\",\n                      ),\n                      PrintTemplate.span(\n                        `Ifood: ${String(data.print_object.order_number).replace(/^Nº\\s*/i, \"\")}`,\n                        \"font--size-12 font--weight-700 font--ls-24\",\n                      ),\n                    ],\n                  )\n                : PrintTemplate.flexContainer(\n                    \"row\",\n                    \"0px\",\n                    \"center\",\n                    \"space-between\",\n                    \"width: 100%;\",\n                    [\n                      PrintTemplate.span(\n                        `NOVO PEDIDO`,\n                        \"font--size-12 font--weight-700 font--ls-20\",\n                      ),\n                      PrintTemplate.span(\n                        `#${\"basket_id\" in data.print_object && data.print_object.basket_id}`,\n                        \"font--size-12 font--weight-700 font--ls-20\",\n                      ),\n                    ],\n                  ),\n            ],\n          ),\n          PrintTemplate.flexContainer(\n            \"column\",\n            \"4px\",\n            \"row\",\n            \"center\",\n            \"padding-bottom: 4px; border-bottom: 1px dashed #000; padding-top: 4px\",\n            [\n              ...(deliveryIfood || ifood\n                ? [\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Cliente: `,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          \"bill\" in data.print_object &&\n                            data.print_object.bill?.buyer?.name\n                            ? `${data.print_object.bill.buyer.name}`\n                            : \"-\",\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                  ]\n                : [\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          `Cliente: `,\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                        PrintTemplate.span(\n                          \"bill\" in data.print_object &&\n                            data.print_object.bill?.buyer?.name\n                            ? `${data.print_object.bill.buyer.name}`\n                            : \"-\",\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"2px\",\n                      \"flex-start\",\n                      \"flex-start\",\n                      \"\",\n                      [\n                        PrintTemplate.span(\n                          \"bill\" in data.print_object &&\n                            data.print_object.bill?.buyer?.phone\n                            ? `${data.print_object.bill.buyer.phone}`\n                            : \"-\",\n                          \"font--size-10 font--weight-500 font--ls-20\",\n                        ),\n                      ],\n                    ),\n                  ]),\n            ],\n          ),\n        ]);\n      }\n    }\n    return PrintTemplate.div({});\n  }\n\n  static buildOrderItem(data: Order, showPrice: boolean = true) {\n    const allComplements = data.complement_categories.flatMap((category) => {\n      return category.order_complements.map((comp) => {\n        return {\n          name: comp.complement.name,\n          amount: comp.amount,\n        };\n      });\n    });\n    return PrintTemplate.flexContainer(\n      \"column\",\n      \"0px\",\n      \"flex-start\",\n      \"space-around\",\n      \"width: 100%;\",\n      [\n        ...(showPrice\n          ? [\n              PrintTemplate.flexContainer(\n                \"row\",\n                \"0px\",\n                \"flex-start\",\n                \"space-between\",\n                \"width: 100%;\",\n                [\n                  PrintTemplate.div(\n                    { style: \"display: flex; align-items: center; gap: 8px\" },\n                    [\n                      PrintTemplate.span(\n                        `${data.amount}x`,\n                        \"font--size-10 font--weight-500 font--ls-20\",\n                        { style: \"width: 17px;\" },\n                      ),\n                      PrintTemplate.span(\n                        `${data.product.name}`,\n                        \"font--size-10 font--weight-500 font--ls-20\",\n                      ),\n                    ],\n                  ),\n                  PrintTemplate.span(\n                    `R$ ${data.total_price.replace(\".\", \",\")}`,\n                    \"font--size-10 nowrap font--weight-500\",\n                  ),\n                ],\n              ),\n              PrintTemplate.flexContainer(\n                \"column\",\n                \"0px\",\n                \"flex-start\",\n                \"flex-start\",\n                \"margin-left: 17px; width: calc(100% - 17px);\",\n                [\n                  ...(allComplements.length > 0\n                    ? [\n                        PrintTemplate.flexContainer(\n                          \"column\",\n                          \"0px\",\n                          \"flex-start\",\n                          \"flex-start\",\n                          \"\",\n                          [\n                            ...allComplements.map((complement) =>\n                              PrintTemplate.flexContainer(\n                                \"row\",\n                                \"2px\",\n                                \"center\",\n                                \"center\",\n                                \"\",\n                                [\n                                  PrintTemplate.span(\n                                    `-`,\n                                    \"font--size-9 font--weight-500 font--ls-18\",\n                                    { style: \"width: 6px;\" },\n                                  ),\n                                  PrintTemplate.span(\n                                    `${complement.amount}x`,\n                                    \"font--size-9 font--weight-500 font--ls-18\",\n                                  ),\n                                  PrintTemplate.span(\n                                    `${complement.name}`,\n                                    \"font--size-9 font--weight-500 font--ls-18\",\n                                    { style: \"margin-left: 4px;\" },\n                                  ),\n                                ],\n                              ),\n                            ),\n                          ],\n                        ),\n                      ]\n                    : []),\n                  ...(data.details\n                    ? [\n                        PrintTemplate.flexContainer(\n                          \"row\",\n                          \"0px\",\n                          \"flex-start\",\n                          \"space-between\",\n                          \"width: 100%; padding: 2px 4px; border-radius: 2px; background: #000; width: 100%;\",\n                          [\n                            PrintTemplate.span(\n                              `OBS: ${data.details}`,\n                              \"font--size-9 font--weight-600 font--ls-18\",\n                              {\n                                style:\n                                  \"color: #fff; width: 100%; word-wrap: break-word; overflow-wrap: break-word; white-space: normal;\",\n                              },\n                            ),\n                          ],\n                        ),\n                      ]\n                    : []),\n                ],\n              ),\n            ]\n          : [\n              PrintTemplate.flexContainer(\n                \"row\",\n                \"0px\",\n                \"flex-start\",\n                \"space-between\",\n                \"width: 100%;\",\n                [\n                  PrintTemplate.div(\n                    { style: \"display: flex; align-items: center; gap: 8px\" },\n                    [\n                      PrintTemplate.span(\n                        `${data.amount}x`,\n                        \"font--size-11 font--weight-500 font--ls-20\",\n                        { style: \"width: 17px;\" },\n                      ),\n                      PrintTemplate.span(\n                        `${data.product.name}`,\n                        \"font--size-11 font--weight-500 font--ls-20\",\n                      ),\n                    ],\n                  ),\n                ],\n              ),\n              PrintTemplate.flexContainer(\n                \"column\",\n                \"0px\",\n                \"flex-start\",\n                \"flex-start\",\n                \"margin-left: 17px; width: calc(100% - 17px);\",\n                [\n                  ...(allComplements.length > 0\n                    ? [\n                        PrintTemplate.flexContainer(\n                          \"column\",\n                          \"0px\",\n                          \"flex-start\",\n                          \"flex-start\",\n                          \"\",\n                          [\n                            ...allComplements.map((complement) =>\n                              PrintTemplate.flexContainer(\n                                \"row\",\n                                \"2px\",\n                                \"center\",\n                                \"center\",\n                                \"\",\n                                [\n                                  PrintTemplate.span(\n                                    `-`,\n                                    \"font--size-11 font--weight-500 font--ls-18\",\n                                    { style: \"width: 6px;\" },\n                                  ),\n                                  PrintTemplate.span(\n                                    `${complement.amount}x`,\n                                    \"font--size-11 font--weight-500 font--ls-18\",\n                                  ),\n                                  PrintTemplate.span(\n                                    `${complement.name}`,\n                                    \"font--size-11 font--weight-500 font--ls-18\",\n                                    { style: \"margin-left: 4px;\" },\n                                  ),\n                                ],\n                              ),\n                            ),\n                          ],\n                        ),\n                      ]\n                    : []),\n                  ...(data.details\n                    ? [\n                        PrintTemplate.flexContainer(\n                          \"row\",\n                          \"0px\",\n                          \"flex-start\",\n                          \"space-between\",\n                          \"width: 100%; padding: 2px 4px; border-radius: 2px; background: #000; width: 100%;\",\n                          [\n                            PrintTemplate.span(\n                              `OBS: ${data.details}`,\n                              \"font--size-12 font--weight-600 font--ls-18\",\n                              {\n                                style:\n                                  \"color: #fff; width: 100%; word-wrap: break-word; overflow-wrap: break-word; white-space: normal;\",\n                              },\n                            ),\n                          ],\n                        ),\n                      ]\n                    : []),\n                ],\n              ),\n            ]),\n      ],\n    );\n  }\n\n  static buildOrders(data: Bill, txService: number) {\n    const allOrders = data.order_baskets.flatMap((basket) => {\n      return basket.orders.map((order) => {\n        return PrintTemplate.buildOrderItem(order);\n      });\n    });\n\n    return PrintTemplate.flexContainer(\n      \"column\",\n      \"4px\",\n      \"center\",\n      \"center\",\n      \"width: 100%; padding-top: 4px; padding-bottom: 6px; border-bottom: 1px dashed #000;\",\n      [\n        ...(data.waiter\n          ? [\n              PrintTemplate.span(\n                \"Garçom\",\n                \"font--size-11 font--weight-700 font--ls-22\",\n              ),\n            ]\n          : [\n              PrintTemplate.span(\n                `Cliente: ${data.buyer?.name || \"Itens do pedido\"}`,\n                \"font--size-11 font--weight-700 font--ls-22\",\n              ),\n            ]),\n        PrintTemplate.flexContainer(\n          \"column\",\n          \"2px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"width: 100%;\",\n          [\n            PrintTemplate.flexContainer(\n              \"row\",\n              \"0px\",\n              \"flex-start\",\n              \"space-between\",\n              \"width: 100%;\",\n              [\n                PrintTemplate.div(\n                  { style: \"display: flex; align-items: center; gap: 8px\" },\n                  [\n                    PrintTemplate.span(\n                      \"QTD\",\n                      \"font--size-9 font--weight-700 font--ls-18\",\n                      { style: \"width: 17px;\" },\n                    ),\n                    PrintTemplate.span(\n                      \"ITENS\",\n                      \"font--size-9 font--weight-700 font--ls-18\",\n                    ),\n                  ],\n                ),\n                PrintTemplate.span(\n                  \"TOTAL\",\n                  \"font--size-9 font--weight-700 font--ls-18\",\n                  { style: \"text-align: right; width: 28px;\" },\n                ),\n              ],\n            ),\n            ...(allOrders.length > 0 ? allOrders : []),\n          ],\n        ),\n        PrintTemplate.flexContainer(\n          \"column\",\n          \"2px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"width: 100%;\",\n          [\n            PrintTemplate.flexContainer(\n              \"row\",\n              \"0px\",\n              \"center\",\n              \"space-between\",\n              \"width: 100%;\",\n              [\n                ...(txService\n                  ? [\n                      PrintTemplate.span(\n                        `Tx. de Serviço: (${txService ? txService : 0}% - opcional)`,\n                        \"font--size-9 font--weight-500 font--ls-18\",\n                      ),\n                      PrintTemplate.span(\n                        `R$ ${(Number(data.total_service_price) - Number(data.total_price)).toFixed(2).replace(\".\", \",\")}`,\n                        \"font--size-9 font--weight-500 font--ls-18\",\n                      ),\n                    ]\n                  : []),\n              ],\n            ),\n            PrintTemplate.span(\n              `TOTAL: R$ ${data.total_service_price.replace(\".\", \",\")}`,\n              \"font--size-10 nowrap font--weight-700 font--ls-20\",\n              { style: \"text-align: right; width: 100%;\" },\n            ),\n          ],\n        ),\n      ],\n    );\n  }\n\n  static buildOrdersIndividual(data: CommonData) {\n    const allOrders =\n      \"order_baskets\" in data.print_object &&\n      data.print_object.order_baskets.flatMap((basket) => {\n        return basket.orders.map((order) => {\n          return PrintTemplate.buildOrderItem(order);\n        });\n      });\n\n    const taxService = parseInt(data.service_tax, 10);\n    const serviceTaxPrice = data.service_tax;\n\n    return PrintTemplate.flexContainer(\n      \"column\",\n      \"4px\",\n      \"center\",\n      \"center\",\n      \"width: 100%; padding-top: 4px; padding-bottom: 6px; border-bottom: 1px dashed #000;\",\n      [\n        ...(\"waiter\" in data.print_object && data.print_object.waiter\n          ? [\n              PrintTemplate.span(\n                \"Garçom\",\n                \"font--size-11 font--weight-700 font--ls-22\",\n              ),\n            ]\n          : [\n              PrintTemplate.span(\n                `Cliente: ${(\"buyer\" in data.print_object && data.print_object.buyer?.name) || \"Itens do pedido\"}`,\n                \"font--size-11 font--weight-700 font--ls-22\",\n              ),\n            ]),\n        PrintTemplate.flexContainer(\n          \"column\",\n          \"2px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"width: 100%;\",\n          [\n            PrintTemplate.flexContainer(\n              \"row\",\n              \"0px\",\n              \"flex-start\",\n              \"space-between\",\n              \"width: 100%;\",\n              [\n                PrintTemplate.div(\n                  { style: \"display: flex; align-items: center; gap: 8px\" },\n                  [\n                    PrintTemplate.span(\n                      \"QTD\",\n                      \"font--size-9 font--weight-700 font--ls-18\",\n                      { style: \"width: 17px;\" },\n                    ),\n                    PrintTemplate.span(\n                      \"ITENS\",\n                      \"font--size-9 font--weight-700 font--ls-18\",\n                    ),\n                  ],\n                ),\n                PrintTemplate.span(\n                  \"TOTAL\",\n                  \"font--size-9 font--weight-700 font--ls-18\",\n                  { style: \"text-align: right; width: 28px;\" },\n                ),\n              ],\n            ),\n            ...(allOrders && allOrders.length > 0 ? allOrders : []),\n          ],\n        ),\n        PrintTemplate.flexContainer(\n          \"column\",\n          \"2px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"width: 100%;\",\n          [\n            PrintTemplate.flexContainer(\n              \"row\",\n              \"0px\",\n              \"center\",\n              \"space-between\",\n              \"width: 100%;\",\n              [\n                ...(serviceTaxPrice &&\n                \"service_tax\" in data.print_object &&\n                data.print_object.service_tax\n                  ? [\n                      PrintTemplate.span(\n                        `Tx. de Serviço: (${taxService ? taxService : 0}% - opcional)`,\n                        \"font--size-9 font--weight-500 font--ls-18\",\n                      ),\n                      PrintTemplate.span(\n                        `R$ ${(Number(data.print_object.session.total_service_price) - Number(data.print_object.session.total_price)).toFixed(2).replace(\".\", \",\")}`,\n                        \"font--size-9 font--weight-500 font--ls-18\",\n                      ),\n                    ]\n                  : []),\n              ],\n            ),\n            PrintTemplate.span(\n              `TOTAL: R$ ${data.print_object.total_service_price.replace(\".\", \",\")}`,\n              \"font--size-10 font--weight-700 font--ls-20\",\n              { style: \"text-align: right; width: 100%;\" },\n            ),\n          ],\n        ),\n      ],\n    );\n  }\n\n  static buildOrdersDelivery(data: Bill) {\n    const allOrders = data.order_baskets.flatMap((basket) => {\n      return basket.orders.map((order) => {\n        return PrintTemplate.buildOrderItem(order);\n      });\n    });\n    const valueTotal = data.order_baskets\n      .flatMap((basket) => basket.orders)\n      .reduce((soma, order) => soma + parseFloat(order.total_service_price), 0); //o total em delivery fazemos um reduce pois em pedidos de ifood o total_service_price n vem com o valor correto.. vem com alguns cupons aplicados\n\n    return PrintTemplate.flexContainer(\n      \"column\",\n      \"4px\",\n      \"center\",\n      \"center\",\n      \"width: 100%; padding-top: 4px; padding-bottom: 6px; border-bottom: 1px dashed #000;\",\n      [\n        PrintTemplate.span(\n          \"Itens do pedido\",\n          \"font--size-11 font--weight-700 font--ls-22\",\n        ),\n        PrintTemplate.flexContainer(\n          \"column\",\n          \"2px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"width: 100%;\",\n          [\n            PrintTemplate.flexContainer(\n              \"row\",\n              \"0px\",\n              \"flex-start\",\n              \"space-between\",\n              \"width: 100%;\",\n              [\n                PrintTemplate.div(\n                  { style: \"display: flex; align-items: center; gap: 8px\" },\n                  [\n                    PrintTemplate.span(\n                      \"QTD\",\n                      \"font--size-9 font--weight-700 font--ls-18\",\n                      { style: \"width: 17px;\" },\n                    ),\n                    PrintTemplate.span(\n                      \"ITENS\",\n                      \"font--size-9 font--weight-700 font--ls-18\",\n                    ),\n                  ],\n                ),\n                PrintTemplate.span(\n                  \"TOTAL\",\n                  \"font--size-9 font--weight-700 font--ls-18\",\n                  { style: \"text-align: right; width: 28px;\" },\n                ),\n              ],\n            ),\n            ...(allOrders.length > 0 ? allOrders.flat() : []),\n          ],\n        ),\n\n        PrintTemplate.span(\n          `TOTAL: R$ ${Number(valueTotal).toFixed(2).replace(\".\", \",\")}`,\n          \"font--size-10 nowrap font--weight-700 font--ls-20\",\n          { style: \"text-align: right; width: 100%;\" },\n        ),\n      ],\n    );\n  }\n\n  static buildOrdersProduction(data: CommonData) {\n    // a diferença do buildOrdersDelivery e buildOrders é que nesse é para via de produção delivery e pdv tirando o total tx.de Serviço e ele recebe commonData\n    const allOrders =\n      \"orders\" in data.print_object\n        ? data.print_object.orders.flatMap((basket) => {\n            return PrintTemplate.buildOrderItem(basket, false);\n          })\n        : [];\n    return PrintTemplate.flexContainer(\n      \"column\",\n      \"4px\",\n      \"center\",\n      \"center\",\n      \"width: 100%; padding-top: 4px; padding-bottom: 6px; border-bottom: 1px dashed #000;\",\n      [\n        PrintTemplate.span(\n          \"Itens do pedido\",\n          \"font--size-11 font--weight-700 font--ls-22\",\n        ),\n        PrintTemplate.flexContainer(\n          \"column\",\n          \"2px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"width: 100%;\",\n          [\n            PrintTemplate.flexContainer(\n              \"row\",\n              \"0px\",\n              \"flex-start\",\n              \"space-between\",\n              \"width: 100%;\",\n              [\n                PrintTemplate.div(\n                  { style: \"display: flex; align-items: center; gap: 8px\" },\n                  [\n                    PrintTemplate.span(\n                      \"QTD\",\n                      \"font--size-9 font--weight-700 font--ls-18\",\n                      { style: \"width: 17px;\" },\n                    ),\n                    PrintTemplate.span(\n                      \"ITENS\",\n                      \"font--size-9 font--weight-700 font--ls-18\",\n                    ),\n                  ],\n                ),\n              ],\n            ),\n            ...(allOrders.length > 0 ? allOrders.flat() : []),\n          ],\n        ),\n      ],\n    );\n  }\n\n  static buildAllOrders(data: CommonData): HtmlElement {\n    const taxService = parseInt(data.service_tax, 10);\n    switch (data.print_type) {\n      case \"table_session\": {\n        const waiterBills =\n          \"bills\" in data.print_object\n            ? data.print_object.bills.filter(\n                (bill) => bill.waiter && bill.waiter !== null,\n              )\n            : [];\n        const groupedWaiterBills =\n          waiterBills.length > 0\n            ? [\n                {\n                  ...waiterBills[0],\n                  order_baskets: waiterBills.flatMap(\n                    (bill) => bill.order_baskets,\n                  ),\n                  total_price: waiterBills\n                    .reduce((sum, bill) => sum + Number(bill.total_price), 0)\n                    .toFixed(2),\n                  total_service_price: waiterBills\n                    .reduce(\n                      (sum, bill) => sum + Number(bill.total_service_price),\n                      0,\n                    )\n                    .toFixed(2),\n                },\n              ]\n            : [];\n        const filterBuyerBills =\n          \"bills\" in data.print_object\n            ? data.print_object.bills.filter(\n                (bill) => !bill.waiter || bill.waiter === null,\n              )\n            : [];\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"0px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"style: width: 100%;\",\n          [\n            ...groupedWaiterBills.map((bill) =>\n              PrintTemplate.buildOrders(bill, taxService),\n            ),\n            ...filterBuyerBills.map((bill) =>\n              PrintTemplate.buildOrders(bill, taxService),\n            ),\n          ],\n        );\n      }\n\n      case \"order\": {\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"0px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"style: width: 100%;\",\n          [\n            ...(\"bill\" in data.print_object\n              ? [PrintTemplate.buildOrdersProduction(data)]\n              : []),\n          ],\n        );\n      }\n      case \"individual_bill\": {\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"0px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"style: width: 100%;\",\n          [PrintTemplate.buildOrdersIndividual(data)],\n        );\n      }\n    }\n    return PrintTemplate.div({});\n  }\n\n  static buildAllOrdersDelivery(data: CommonData): HtmlElement {\n    switch (data.print_type) {\n      case \"table_session\": {\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"0px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"style: width: 100%;\",\n          [\n            ...(\"bills\" in data.print_object\n              ? data.print_object.bills.map((bill) =>\n                  PrintTemplate.buildOrdersDelivery(bill),\n                )\n              : []),\n          ],\n        );\n      }\n      case \"order\": {\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"0px\",\n          \"flex-start\",\n          \"flex-start\",\n          \"style: width: 100%;\",\n          [\n            ...(\"bill\" in data.print_object\n              ? [PrintTemplate.buildOrdersProduction(data)]\n              : []),\n          ],\n        );\n      }\n    }\n    return PrintTemplate.div({});\n  }\n\n  // static buildOrderItems(data: TableSessionPrintPayload): HtmlElement {\n  //   // Extract order items from bills -> order_baskets -> orders\n  //   const orderItems = data.print_object.bills.flatMap(bill =>\n  //     bill.order_baskets?.flatMap(basket => basket.orders || []) || []\n  //   )\n\n  //   return this.div({ style: 'padding: 8px 0;' }, [\n  //     this.span('Itens do Pedido:', 'font--size-11 font--weight-600'),\n  //     ...orderItems.map(item =>\n  //       this.flexContainer('row', '0px', 'center', 'space-between', 'margin-top: 4px;', [\n  //         this.span(`${item.amount}x ${item.product?.name || 'Produto'}`, 'font--size-10'),\n  //         this.span(`R$ ${item.total_price}`, 'font--size-10 font--weight-600')\n  //       ])\n  //     )\n  //   ])\n  // }\n\n  static buildTotals(data: CommonData): HtmlElement {\n    const taxService = parseInt(data.service_tax, 10);\n    const serviceTaxPrice = data.service_tax;\n\n    switch (data.print_type) {\n      case \"table_session\": {\n        return (\"status\" in data.print_object &&\n          data.print_object.status === \"completed\") ||\n          (\"is_delivery\" in data.print_object &&\n            data.print_type === \"table_session\" &&\n            data.print_object.is_delivery === false)\n          ? PrintTemplate.flexContainer(\n              \"column\",\n              \"4px\",\n              \"center\",\n              \"center\",\n              \"margin-top: 4px; padding-bottom: 4px; border-bottom: 1px dashed #000;\",\n              [\n                PrintTemplate.span(\n                  \"Consumo Total\",\n                  \"font--size-11 font--weight-700 font--ls-22\",\n                  { style: \"width: 100%; text-align: center;\" },\n                ),\n                PrintTemplate.flexContainer(\n                  \"column\",\n                  \"2px\",\n                  \"center\",\n                  \"center\",\n                  \"width: 100%;\",\n                  [\n                    PrintTemplate.flexContainer(\n                      \"row\",\n                      \"0px\",\n                      \"flex-start\",\n                      \"space-between\",\n                      \"width: 100%;\",\n                      [\n                        PrintTemplate.span(\n                          \"Valor dos Itens\",\n                          \"font--size-9 font--weight-500 font--ls-18\",\n                        ),\n                        ...(data.print_object.old_total_price &&\n                        data.print_object.old_total_price.length > 0\n                          ? [\n                              PrintTemplate.span(\n                                `R$ ${data.print_object.old_total_price.replace(\".\", \",\")}`,\n                                \"font--size-9 nowrap font--weight-500 font--ls-18\",\n                              ),\n                            ]\n                          : [\n                              PrintTemplate.span(\n                                `R$ ${data.print_object.total_price.replace(\".\", \",\")}`,\n                                \"font--size-9 nowrap font--weight-500 font--ls-18\",\n                              ),\n                            ]),\n                      ],\n                    ),\n\n                    ...(data.print_object.discount_total &&\n                    data.print_object.discount_total?.length > 0\n                      ? [\n                          PrintTemplate.flexContainer(\n                            \"row\",\n                            \"0px\",\n                            \"flex-start\",\n                            \"space-between\",\n                            \"width: 100%;\",\n                            [\n                              PrintTemplate.span(\n                                `Cupom/Desconto`,\n                                \"font--size-9 font--weight-500 font--ls-18\",\n                              ),\n                              PrintTemplate.span(\n                                `R$ -${data.print_object.discount_total.replace(\".\", \",\")}`,\n                                \"font--size-9 font--weight-500 font--ls-18\",\n                              ),\n                            ],\n                          ),\n                        ]\n                      : []),\n                    ...(data.print_object.is_delivery\n                      ? [\n                          ...(data.print_object.with_withdrawal === false\n                            ? [\n                                PrintTemplate.flexContainer(\n                                  \"row\",\n                                  \"0px\",\n                                  \"flex-start\",\n                                  \"space-between\",\n                                  \"width: 100%;\",\n                                  [\n                                    PrintTemplate.span(\n                                      \"Taxa de Entrega\",\n                                      \"font--size-9 font--weight-500 font--ls-18\",\n                                    ),\n                                    PrintTemplate.span(\n                                      `R$ ${data.print_object.delivery_tax_price}`,\n                                      \"font--size-9 font--weight-500 font--ls-18\",\n                                    ),\n                                  ],\n                                ),\n                              ]\n                            : []),\n                          PrintTemplate.flexContainer(\n                            \"row\",\n                            \"0px\",\n                            \"flex-start\",\n                            \"space-between\",\n                            \"width: 100%;\",\n                            [\n                              PrintTemplate.span(\n                                \"TOTAL A PAGAR\",\n                                \"font--size-10 font--weight-700 font--ls-20\",\n                              ),\n                              PrintTemplate.span(\n                                `R$ ${String(data.print_object.total_delivery_price)?.replace(\".\", \",\")}`,\n                                \"font--size-10 nowrap font--weight-700 font--ls-20\",\n                                { style: \"text-align: right;\" },\n                              ),\n                            ],\n                          ),\n                        ]\n                      : [\n                          PrintTemplate.flexContainer(\n                            \"row\",\n                            \"0px\",\n                            \"flex-start\",\n                            \"space-between\",\n                            \"width: 100%;\",\n                            [\n                              ...(serviceTaxPrice &&\n                              Array.isArray(data.print_object.bills) &&\n                              data.print_object.bills.some(\n                                (bill) => bill.service_tax,\n                              )\n                                ? [\n                                    PrintTemplate.span(\n                                      `Tx. de Serviço: (${taxService ? taxService : 0}% - opcional)`,\n                                      \"font--size-9 font--weight-500 font--ls-18\",\n                                    ),\n                                    PrintTemplate.span(\n                                      `R$ ${(Number(data.print_object.total_service_price) - Number(data.print_object.total_price)).toFixed(2).replace(\".\", \",\")}`,\n                                      \"font--size-9 font--weight-500 font--ls-18\",\n                                    ),\n                                  ]\n                                : []),\n                            ],\n                          ),\n                          PrintTemplate.flexContainer(\n                            \"row\",\n                            \"0px\",\n                            \"flex-start\",\n                            \"space-between\",\n                            \"width: 100%;\",\n                            [\n                              PrintTemplate.span(\n                                \"TOTAL A PAGAR\",\n                                \"font--size-10 font--weight-700 font--ls-20\",\n                              ),\n                              PrintTemplate.span(\n                                `R$ ${data.print_object.total_service_price.replace(\".\", \",\")}`,\n                                \"font--size-10 nowrap font--weight-700 font--ls-20\",\n                                { style: \"text-align: right;\" },\n                              ),\n                            ],\n                          ),\n                        ]),\n                  ],\n                ),\n              ],\n            )\n          : PrintTemplate.div({}, []);\n      }\n      case \"order\": {\n        return PrintTemplate.div({});\n      }\n      case \"individual_bill\": {\n        return PrintTemplate.div({});\n      }\n    }\n    return PrintTemplate.div({});\n  }\n\n  static buildPayments(data: CommonData): HtmlElement {\n    switch (data.print_type) {\n      case \"table_session\": {\n        const totalPaid =\n          \"payments\" in data.print_object\n            ? data.print_object.payments.reduce(\n                (sum, payment) => sum + Number(payment.payment_value),\n                0,\n              )\n            : 0;\n        const remainingValue =\n          Number(data.print_object.total_service_price) - Number(totalPaid);\n        const delivery =\n          Number(\n            \"total_delivery_price\" in data.print_object &&\n              data.print_object.total_delivery_price,\n          ) - Number(totalPaid);\n\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"4px\",\n          \"center\",\n          \"center\",\n          \"margin-top: 4px; padding-bottom: 4px; border-bottom: 1px solid #000;\",\n          [\n            PrintTemplate.span(\n              \"Formas de Pagamento\",\n              \"font--size-11 font--weight-700 font--ls-22\",\n              { style: \"width: 100%; text-align: center;\" },\n            ),\n            PrintTemplate.flexContainer(\n              \"column\",\n              \"2px\",\n              \"center\",\n              \"center\",\n              \"width: 100%; padding-bottom: 2px; border-bottom: 1px dashed #000;\",\n              [\n                PrintTemplate.flexContainer(\n                  \"row\",\n                  \"0px\",\n                  \"flex-start\",\n                  \"space-between\",\n                  \"width: 100%;\",\n                  [\n                    PrintTemplate.span(\n                      \"VALOR PAGO\",\n                      \"font--size-10 font--weight-700 font--ls-20\",\n                    ),\n                    PrintTemplate.span(\n                      `R$ ${totalPaid.toFixed(2).replace(\".\", \",\")}`,\n                      \"font--size-10 font--weight-700 font--ls-20\",\n                    ),\n                  ],\n                ),\n                ...(\"payments\" in data.print_object &&\n                data.print_object.payments.length > 0\n                  ? data.print_object.payments.map((payment) =>\n                      PrintTemplate.flexContainer(\n                        \"row\",\n                        \"0px\",\n                        \"flex-start\",\n                        \"space-between\",\n                        \"width: 100%;\",\n                        [\n                          PrintTemplate.span(\n                            `${payment.payment_method.name}`,\n                            \"font--size-9 font--weight-500 font--ls-18\",\n                          ),\n                          PrintTemplate.span(\n                            `R$ ${payment.payment_value.replace(\".\", \",\")}`,\n                            \"font--size-9 font--weight-500 font--ls-18\",\n                          ),\n                        ],\n                      ),\n                    )\n                  : []),\n              ],\n            ),\n            ...(remainingValue\n              ? [\n                  PrintTemplate.flexContainer(\n                    \"row\",\n                    \"0px\",\n                    \"flex-start\",\n                    \"space-between\",\n                    \"width: 100%;\",\n                    [\n                      ...(\"is_delivery\" in data.print_object &&\n                      data.print_object.is_delivery\n                        ? [\n                            PrintTemplate.span(\n                              `${delivery < 0 ? \"TROCO\" : \"VALOR RESTANTE\"}`,\n                              \"font--size-10 font--weight-700 font--ls-20\",\n                            ),\n                            PrintTemplate.span(\n                              `R$ ${delivery < 0 ? (-1 * delivery).toFixed(2).replace(\".\", \",\") : delivery.toFixed(2).replace(\".\", \",\")}`,\n                              \"font--size-10 font--weight-700 font--ls-20\",\n                            ),\n                          ]\n                        : [\n                            PrintTemplate.span(\n                              `${remainingValue < 0 ? \"TROCO\" : \"VALOR RESTANTE\"}`,\n                              \"font--size-10 font--weight-700 font--ls-20\",\n                            ),\n                            PrintTemplate.span(\n                              `R$ ${remainingValue < 0 ? (-1 * remainingValue).toFixed(2).replace(\".\", \",\") : remainingValue.toFixed(2).replace(\".\", \",\")}`,\n                              \"font--size-10 font--weight-700 font--ls-20\",\n                            ),\n                          ]),\n                    ],\n                  ),\n                ]\n              : []),\n          ],\n        );\n      }\n\n      case \"order\": {\n        return PrintTemplate.div({});\n      }\n    }\n\n    return PrintTemplate.div({});\n  }\n\n  static buildPaymentsDelivery(data: CommonData): HtmlElement {\n    const valueDelivery =\n      \"total_paid\" in data.print_object &&\n      \"total_delivery_price\" in data.print_object &&\n      Number(data.print_object.total_paid) -\n        Number(data.print_object.total_delivery_price) ===\n        0;\n    const cupomIfood =\n      \"ifood_discount\" in data.print_object && data.print_object.ifood_discount\n        ? parseFloat(data.print_object.ifood_discount)\n        : 0;\n    const taxServiceIfood =\n      \"additional_fees\" in data.print_object &&\n      data.print_object.additional_fees\n        ? parseFloat(data.print_object.additional_fees)\n        : 0;\n    const valueTotal =\n      \"bills\" in data.print_object &&\n      data.print_object.bills\n        .flatMap((bill) => bill.order_baskets)\n        .flatMap((basket) => basket.orders)\n        .reduce(\n          (soma, order) => soma + parseFloat(order.total_service_price),\n          0,\n        );\n    const totalPaidIfood =\n      \"ifood_discount\" in data.print_object &&\n      !Number.isNaN(Number(data.print_object.ifood_discount)) &&\n      !Number.isNaN(Number(data.print_object.total_paid))\n        ? Math.abs(\n            Number(data.print_object.ifood_discount) -\n              Number(data.print_object.total_paid),\n          ).toFixed(2)\n        : \"0.00\";\n\n    switch (data.print_type) {\n      case \"table_session\": {\n        return PrintTemplate.flexContainer(\n          \"column\",\n          \"4px\",\n          \"center\",\n          \"center\",\n          \"margin-top: 4px; padding-bottom: 4px;\",\n          [\n            ...(\"status\" in data.print_object &&\n            data.print_object.status === \"completed\"\n              ? [\n                  PrintTemplate.flexContainer(\n                    \"row\",\n                    \"2px\",\n                    \"flex-start\",\n                    \"space-between\",\n                    \"width: 100%; display: block;\",\n                    [PrintTemplate.buildPayments(data)],\n                  ),\n                ]\n              : [\n                  ...(data.print_object.with_withdrawal &&\n                  data.print_object.payment_method?.name === \"Dinheiro\"\n                    ? [\n                        PrintTemplate.span(\n                          \"Pagamento na Entrega\",\n                          \"font--size-11 font--weight-700 font--ls-22\",\n                          { style: \"width: 100%; text-align: center;\" },\n                        ),\n                      ]\n                    : [\n                        ...(valueDelivery\n                          ? []\n                          : [\n                              PrintTemplate.span(\n                                \"Pagamento na Entrega\",\n                                \"font--size-11 font--weight-700 font--ls-22\",\n                                { style: \"width: 100%; text-align: center;\" },\n                              ),\n                            ]),\n                      ]),\n\n                  PrintTemplate.flexContainer(\n                    \"column\",\n                    \"2px\",\n                    \"center\",\n                    \"center\",\n                    \"width: 100%; padding-bottom: 2px; border-bottom: 1px dashed #000;\",\n                    [\n                      PrintTemplate.flexContainer(\n                        \"row\",\n                        \"2px\",\n                        \"flex-start\",\n                        \"none\",\n                        \"width: 100%;\",\n                        [\n                          PrintTemplate.span(\n                            \"Forma de pgto:\",\n                            \"font--size-10 font--weight-700 font--ls-20\",\n                          ),\n                          ...(\"payment_method\" in data.print_object &&\n                          data.print_object.payment_method\n                            ? [\n                                PrintTemplate.span(\n                                  `${data.print_object.payment_method.name}`,\n                                  \"font--size-9 font--weight-500 font--ls-18\",\n                                ),\n                              ]\n                            : [\n                                PrintTemplate.span(\n                                  `Pagamento não informado`,\n                                  \"font--size-9 font--weight-500 font--ls-18\",\n                                ),\n                              ]),\n                        ],\n                      ),\n                      PrintTemplate.flexContainer(\n                        \"row\",\n                        \"0px\",\n                        \"flex-start\",\n                        \"space-between\",\n                        \"width: 100%;\",\n                        [\n                          PrintTemplate.span(\n                            \"VALOR TOTAL DO PEDIDO\",\n                            \"font--size-10 font--weight-500 font--ls-20\",\n                          ),\n                          PrintTemplate.span(\n                            `R$ ${Number(valueTotal).toFixed(2).replace(\".\", \",\")}`,\n                            \"font--size-10 nowrap font--weight-700 font--ls-20\",\n                          ),\n                        ],\n                      ),\n                      ...(data.print_object.discount_total &&\n                      data.print_object.discount_total?.length > 0\n                        ? [\n                            PrintTemplate.flexContainer(\n                              \"row\",\n                              \"0px\",\n                              \"flex-start\",\n                              \"space-between\",\n                              \"width: 100%;\",\n                              [\n                                PrintTemplate.span(\n                                  `Cupom/Desconto`,\n                                  \"font--size-10 font--weight-500 font--ls-18\",\n                                ),\n                                PrintTemplate.span(\n                                  `R$ -${data.print_object.discount_total.replace(\".\", \",\")}`,\n                                  \"font--size-9 font--weight-500 font--ls-18\",\n                                ),\n                              ],\n                            ),\n                          ]\n                        : []),\n\n                      // ...(cupomIfood ? [\n                      //   this.flexContainer('row', '0px', 'flex-start', 'space-between', 'width: 100%;', [\n                      //     this.span(`Cupom Ifood`, 'font--size-10 font--weight-500 font--ls-18'),\n                      //     this.span(`R$ -${data.print_object.ifood_discount?.replace('.', ',') || '0,00'}`, 'font--size-9 font--weight-500 font--ls-18')\n                      //   ])\n                      // ] :\n                      //   []\n                      // ),\n                      ...(taxServiceIfood\n                        ? [\n                            PrintTemplate.flexContainer(\n                              \"row\",\n                              \"0px\",\n                              \"flex-start\",\n                              \"space-between\",\n                              \"width: 100%;\",\n                              [\n                                PrintTemplate.span(\n                                  `Taxa de Serviço iFood`,\n                                  \"font--size-10 font--weight-500 font--ls-18\",\n                                ),\n                                PrintTemplate.span(\n                                  `R$ +${data.print_object.additional_fees?.replace(\".\", \",\") || \"0,00\"}`,\n                                  \"font--size-9 font--weight-500 font--ls-18\",\n                                ),\n                              ],\n                            ),\n                          ]\n                        : []),\n                      ...(\"is_delivery\" in data.print_object &&\n                      \"with_withdrawal\" in data.print_object &&\n                      data.print_object.is_delivery &&\n                      !data.print_object.with_withdrawal\n                        ? [\n                            PrintTemplate.flexContainer(\n                              \"row\",\n                              \"0px\",\n                              \"flex-start\",\n                              \"space-between\",\n                              \"width: 100%;\",\n                              [\n                                PrintTemplate.span(\n                                  \"Taxa de Entrega\",\n                                  \"font--size-10 font--weight-500 font--ls-20\",\n                                ),\n                                PrintTemplate.span(\n                                  `R$ ${data.print_object.delivery_tax_price?.replace(\".\", \",\")}`,\n                                  \"font--size-10 font--weight-700 font--ls-20\",\n                                ),\n                              ],\n                            ),\n                          ]\n                        : []),\n\n                      ...(valueDelivery &&\n                      data.print_object.payment_method?.name !== \"Dinheiro\"\n                        ? [\n                            PrintTemplate.flexContainer(\n                              \"column\",\n                              \"0px\",\n                              \"center\",\n                              \"space-between\",\n                              \"width: 100%; padding-top: 2px; border-top: 1px dashed #000;\",\n                              [\n                                PrintTemplate.flexContainer(\n                                  \"row\",\n                                  \"0px\",\n                                  \"center\",\n                                  \"space-between\",\n                                  \"width: 100%; padding-bottom: 4px;\",\n                                  [\n                                    PrintTemplate.span(\n                                      \"VALOR PAGO\",\n                                      \"font--size-10 font--weight-700 font--ls-20\",\n                                    ),\n                                    cupomIfood\n                                      ? PrintTemplate.span(\n                                          `R$ ${totalPaidIfood}`,\n                                          \"font--size-10 font--weight-700 font--ls-20\",\n                                        )\n                                      : PrintTemplate.span(\n                                          `R$ ${data.print_object.total_paid.toFixed(2).replace(\".\", \",\")}`,\n                                          \"font--size-10 font--weight-700 font--ls-20\",\n                                        ),\n                                  ],\n                                ),\n                                PrintTemplate.span(\n                                  \"NÃO COBRAR DO CLIENTE\",\n                                  \"font--size-10 font--weight-700 font--ls-20\",\n                                ),\n                              ],\n                            ),\n                          ]\n                        : [\n                            PrintTemplate.flexContainer(\n                              \"row\",\n                              \"0px\",\n                              \"flex-start\",\n                              \"space-between\",\n                              \"width: 100%; border-top: 1px dashed #000; padding-top: 2px\",\n                              [\n                                PrintTemplate.span(\n                                  \"COBRAR DO CLIENTE\",\n                                  \"font--size-10 font--weight-700 font--ls-20\",\n                                ),\n                                ...(data.print_object.ifood_discount\n                                  ? [\n                                      PrintTemplate.span(\n                                        `R$ ${(Number(data.print_object.total_delivery_price) - Number(data.print_object.total_paid)).toFixed(2).replace(\".\", \",\")}`,\n                                        \"font--size-10 font--weight-700 font--ls-20\",\n                                      ),\n                                    ]\n                                  : [\n                                      PrintTemplate.span(\n                                        `R$ ${String(data.print_object.total_delivery_price)?.replace(\".\", \",\")}`,\n                                        \"font--size-10 font--weight-700 font--ls-20\",\n                                      ),\n                                    ]),\n                              ],\n                            ),\n                          ]),\n\n                      ...(\"payment_method\" in data.print_object &&\n                      data.print_object.payment_method?.name === \"Dinheiro\"\n                        ? [\n                            PrintTemplate.flexContainer(\n                              \"row\",\n                              \"0px\",\n                              \"flex-start\",\n                              \"space-between\",\n                              \"width: 100%; padding-top: 2px; border-top: 1px dashed #000;\",\n                              [\n                                PrintTemplate.span(\n                                  \"RECEBER\",\n                                  \"font--size-10 font--weight-700 font--ls-20\",\n                                ),\n                                PrintTemplate.span(\n                                  `R$ ${data.print_object.user_change.replace(\".\", \",\") || \"0,00\"}`,\n                                  \"font--size-10 font--weight-700 font--ls-20\",\n                                ),\n                              ],\n                            ),\n                            PrintTemplate.flexContainer(\n                              \"row\",\n                              \"0px\",\n                              \"flex-start\",\n                              \"space-between\",\n                              \"width: 100%;\",\n                              [\n                                PrintTemplate.span(\n                                  \"TROCO\",\n                                  \"font--size-10 font--weight-700 font--ls-20\",\n                                ),\n                                PrintTemplate.span(\n                                  `R$ ${(Number(data.print_object.user_change) - Number(data.print_object.total_service_price)).toFixed(2).replace(\".\", \",\")}`,\n                                  \"font--size-10 font--weight-700 font--ls-20\",\n                                ),\n                              ],\n                            ),\n                          ]\n                        : []),\n                    ],\n                  ),\n                ]),\n          ],\n        );\n      }\n      case \"order\": {\n        return PrintTemplate.div({});\n      }\n    }\n    return PrintTemplate.div({});\n  }\n}\n"],"mappings":"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","names":[]}