gitextract_j3w6bb6w/ ├── .github/ │ └── workflows/ │ └── ci.yml ├── .gitignore ├── AGENTS.MD ├── CLAUDE.MD ├── FEATURES.md ├── INSTALLATION.md ├── LICENSE ├── MANIFEST.in ├── README.md ├── SETUP.md ├── TERMS.md ├── URYMosaic/ │ ├── .gitignore │ ├── .vscode/ │ │ └── extensions.json │ ├── AGENTS.MD │ ├── CLAUDE.MD │ ├── README.md │ ├── index.html │ ├── package.json │ ├── postcss.config.js │ ├── proxyOptions.js │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Header.vue │ │ │ └── kot.vue │ │ ├── index.css │ │ ├── main.js │ │ ├── router/ │ │ │ ├── auth.js │ │ │ └── index.js │ │ ├── style.css │ │ └── views/ │ │ ├── Home.vue │ │ └── Login.vue │ ├── tailwind.config.js │ └── vite.config.js ├── package.json ├── pos/ │ ├── .gitignore │ ├── AGENTS.MD │ ├── CLAUDE.MD │ ├── README.md │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── postcss.config.js │ ├── privateKey.js │ ├── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── AggregatorSelect.tsx │ │ │ ├── AuthGuard.tsx │ │ │ ├── CommentDialog.tsx │ │ │ ├── CustomerSelect.tsx │ │ │ ├── Footer.tsx │ │ │ ├── Header.tsx │ │ │ ├── InitialLoader.tsx │ │ │ ├── LayoutView.tsx │ │ │ ├── MenuCard.tsx │ │ │ ├── MenuList.tsx │ │ │ ├── OrderPanel.tsx │ │ │ ├── OrderStatusSidebar.tsx │ │ │ ├── OrderTypeSelect.tsx │ │ │ ├── POSOpeningDialog.tsx │ │ │ ├── POSOpeningProvider.tsx │ │ │ ├── PaymentDialog.tsx │ │ │ ├── ProductDialog.tsx │ │ │ ├── ScreenSizeDialog.tsx │ │ │ ├── ScreenSizeProvider.tsx │ │ │ ├── SearchBar.tsx │ │ │ ├── Sidebar.tsx │ │ │ ├── Spotlight.tsx │ │ │ ├── TableSelectionDialog.tsx │ │ │ ├── TableShapeIcon.tsx │ │ │ └── ui/ │ │ │ ├── README.md │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── dialog.tsx │ │ │ ├── example.tsx │ │ │ ├── index.ts │ │ │ ├── input.tsx │ │ │ ├── loader.tsx │ │ │ ├── select.tsx │ │ │ ├── spinner.tsx │ │ │ ├── textarea.tsx │ │ │ ├── toast.css │ │ │ └── toast.tsx │ │ ├── data/ │ │ │ ├── doctypes.ts │ │ │ ├── menu-data.ts │ │ │ └── order-types.ts │ │ ├── i18n/ │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── loader.ts │ │ │ ├── locales/ │ │ │ │ ├── ar.json │ │ │ │ ├── en.json │ │ │ │ └── fr.json │ │ │ └── resolve-language.ts │ │ ├── index.css │ │ ├── lib/ │ │ │ ├── aggregator-api.ts │ │ │ ├── auth-api.ts │ │ │ ├── customer-api.ts │ │ │ ├── frappe-sdk.ts │ │ │ ├── invoice-api.ts │ │ │ ├── menu-api.ts │ │ │ ├── menu-course-api.ts │ │ │ ├── order-api.ts │ │ │ ├── payment-api.ts │ │ │ ├── pos-opening-api.ts │ │ │ ├── pos-profile-api.ts │ │ │ ├── print-qz.ts │ │ │ ├── print.ts │ │ │ ├── role-utils.ts │ │ │ ├── storage.ts │ │ │ ├── table-api.ts │ │ │ └── utils.ts │ │ ├── main.tsx │ │ ├── pages/ │ │ │ ├── Orders.tsx │ │ │ ├── POS.tsx │ │ │ └── Table.tsx │ │ ├── store/ │ │ │ ├── pos-store.ts │ │ │ ├── root-store.ts │ │ │ └── slices/ │ │ │ ├── auth-slice.ts │ │ │ ├── config-slice.ts │ │ │ └── orders-slice.ts │ │ └── vite-env.d.ts │ ├── tailwind.config.js │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── pyproject.toml ├── requirements.txt ├── setup.py ├── ury/ │ ├── __init__.py │ ├── config/ │ │ ├── __init__.py │ │ ├── desktop.py │ │ └── docs.py │ ├── fixtures/ │ │ ├── client_script.json │ │ ├── custom_field.json │ │ ├── custom_html_block.json │ │ ├── property_setter.json │ │ └── role.json │ ├── hooks.py │ ├── install.py │ ├── modules.txt │ ├── patches/ │ │ └── v2_0/ │ │ └── default_permissions.py │ ├── patches.txt │ ├── permission.py │ ├── public/ │ │ ├── .gitkeep │ │ ├── images │ │ └── js/ │ │ ├── jsrsasign-all-min.js │ │ ├── pos_extend.js │ │ ├── pos_print.js │ │ ├── quick_entry.js │ │ ├── qz-tray.js │ │ ├── restrict_qty_edit_pos.js │ │ ├── sign-message.js │ │ └── ury_pos_kot.js │ ├── setup.py │ ├── templates/ │ │ ├── __init__.py │ │ └── pages/ │ │ └── __init__.py │ ├── uninstall.py │ ├── ury/ │ │ ├── __init__.py │ │ ├── api/ │ │ │ ├── button_permission.py │ │ │ ├── pos_extend.py │ │ │ ├── ury_kot_display.py │ │ │ ├── ury_kot_generate.py │ │ │ ├── ury_kot_notification.py │ │ │ ├── ury_kot_order_number.py │ │ │ ├── ury_kot_reprint.py │ │ │ ├── ury_kot_validation.py │ │ │ ├── ury_menu_course_validation.py │ │ │ └── ury_print.py │ │ ├── custom/ │ │ │ └── item.json │ │ ├── doctype/ │ │ │ ├── __init__.py │ │ │ ├── aggregator_settings/ │ │ │ │ ├── __init__.py │ │ │ │ ├── aggregator_settings.json │ │ │ │ └── aggregator_settings.py │ │ │ ├── item_add_on/ │ │ │ │ ├── __init__.py │ │ │ │ ├── item_add_on.json │ │ │ │ └── item_add_on.py │ │ │ ├── menu_for_room/ │ │ │ │ ├── __init__.py │ │ │ │ ├── menu_for_room.js │ │ │ │ ├── menu_for_room.json │ │ │ │ ├── menu_for_room.py │ │ │ │ └── test_menu_for_room.py │ │ │ ├── multiple_rooms/ │ │ │ │ ├── __init__.py │ │ │ │ ├── multiple_rooms.json │ │ │ │ └── multiple_rooms.py │ │ │ ├── order_type_menu/ │ │ │ │ ├── __init__.py │ │ │ │ ├── order_type_menu.json │ │ │ │ └── order_type_menu.py │ │ │ ├── pos_item_variants/ │ │ │ │ ├── __init__.py │ │ │ │ ├── pos_item_variants.json │ │ │ │ └── pos_item_variants.py │ │ │ ├── role_permitted/ │ │ │ │ ├── __init__.py │ │ │ │ ├── role_permitted.json │ │ │ │ └── role_permitted.py │ │ │ ├── sub_pos_closing/ │ │ │ │ ├── __init__.py │ │ │ │ ├── sub_pos_closing.js │ │ │ │ ├── sub_pos_closing.json │ │ │ │ ├── sub_pos_closing.py │ │ │ │ └── test_sub_pos_closing.py │ │ │ ├── sub_pos_closing_payment/ │ │ │ │ ├── __init__.py │ │ │ │ ├── sub_pos_closing_payment.json │ │ │ │ └── sub_pos_closing_payment.py │ │ │ ├── sub_pos_invoices/ │ │ │ │ ├── __init__.py │ │ │ │ ├── sub_pos_invoices.json │ │ │ │ └── sub_pos_invoices.py │ │ │ ├── ury_cost_of_goods/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_cost_of_goods.json │ │ │ │ └── ury_cost_of_goods.py │ │ │ ├── ury_daily_p_and_l/ │ │ │ │ ├── __init__.py │ │ │ │ ├── profit_loss_details.html │ │ │ │ ├── test_ury_daily_p_and_l.py │ │ │ │ ├── ury_daily_p_and_l.js │ │ │ │ ├── ury_daily_p_and_l.json │ │ │ │ └── ury_daily_p_and_l.py │ │ │ ├── ury_fixed_expenses/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_fixed_expenses.json │ │ │ │ └── ury_fixed_expenses.py │ │ │ ├── ury_kot/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_kot.py │ │ │ │ ├── ury_kot.js │ │ │ │ ├── ury_kot.json │ │ │ │ └── ury_kot.py │ │ │ ├── ury_kot_error_log/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_kot_error_log.py │ │ │ │ ├── ury_kot_error_log.js │ │ │ │ ├── ury_kot_error_log.json │ │ │ │ └── ury_kot_error_log.py │ │ │ ├── ury_kot_items/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_kot_items.json │ │ │ │ └── ury_kot_items.py │ │ │ ├── ury_materials/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_materials.json │ │ │ │ └── ury_materials.py │ │ │ ├── ury_menu/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_menu.py │ │ │ │ ├── ury_menu.js │ │ │ │ ├── ury_menu.json │ │ │ │ └── ury_menu.py │ │ │ ├── ury_menu_course/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_menu_course.py │ │ │ │ ├── ury_menu_course.js │ │ │ │ ├── ury_menu_course.json │ │ │ │ └── ury_menu_course.py │ │ │ ├── ury_menu_item/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_menu_item.json │ │ │ │ └── ury_menu_item.py │ │ │ ├── ury_notification_recipient/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_notification_recipient.py │ │ │ │ ├── ury_notification_recipient.js │ │ │ │ ├── ury_notification_recipient.json │ │ │ │ └── ury_notification_recipient.py │ │ │ ├── ury_order/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_order.py │ │ │ │ ├── ury_order.js │ │ │ │ ├── ury_order.json │ │ │ │ └── ury_order.py │ │ │ ├── ury_order_item/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_order_item.py │ │ │ │ ├── ury_order_item.js │ │ │ │ ├── ury_order_item.json │ │ │ │ └── ury_order_item.py │ │ │ ├── ury_p_and_l_breakup/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_p_and_l_breakup.json │ │ │ │ └── ury_p_and_l_breakup.py │ │ │ ├── ury_p_and_l_materials/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_p_and_l_materials.json │ │ │ │ └── ury_p_and_l_materials.py │ │ │ ├── ury_printer_settings/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_printer_settings.json │ │ │ │ └── ury_printer_settings.py │ │ │ ├── ury_production_item_groups/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_production_item_groups.json │ │ │ │ └── ury_production_item_groups.py │ │ │ ├── ury_production_unit/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_production_unit.py │ │ │ │ ├── ury_production_unit.js │ │ │ │ ├── ury_production_unit.json │ │ │ │ └── ury_production_unit.py │ │ │ ├── ury_report_settings/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_report_settings.py │ │ │ │ ├── ury_report_settings.js │ │ │ │ ├── ury_report_settings.json │ │ │ │ └── ury_report_settings.py │ │ │ ├── ury_restaurant/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_restaurant.py │ │ │ │ ├── ury_restaurant.js │ │ │ │ ├── ury_restaurant.json │ │ │ │ └── ury_restaurant.py │ │ │ ├── ury_room/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_room.py │ │ │ │ ├── ury_room.js │ │ │ │ ├── ury_room.json │ │ │ │ └── ury_room.py │ │ │ ├── ury_table/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_ury_table.py │ │ │ │ ├── ury_table.js │ │ │ │ ├── ury_table.json │ │ │ │ └── ury_table.py │ │ │ ├── ury_user/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ury_user.json │ │ │ │ └── ury_user.py │ │ │ └── ury_variable_expenses/ │ │ │ ├── __init__.py │ │ │ ├── ury_variable_expenses.json │ │ │ └── ury_variable_expenses.py │ │ ├── hooks/ │ │ │ ├── ury_item.py │ │ │ ├── ury_pos_closing_entry.py │ │ │ ├── ury_pos_invoice.py │ │ │ ├── ury_pos_opening_entry.py │ │ │ ├── ury_pos_profile.py │ │ │ └── ury_sales_invoice.py │ │ ├── page/ │ │ │ ├── __init__.py │ │ │ └── websocket_print/ │ │ │ ├── __init__.py │ │ │ ├── websocket_print.js │ │ │ └── websocket_print.json │ │ ├── report/ │ │ │ ├── __init__.py │ │ │ ├── average_bill_value/ │ │ │ │ ├── __init__.py │ │ │ │ └── average_bill_value.json │ │ │ ├── cancelled_invoices/ │ │ │ │ ├── __init__.py │ │ │ │ └── cancelled_invoices.json │ │ │ ├── customer_data/ │ │ │ │ ├── __init__.py │ │ │ │ └── customer_data.json │ │ │ ├── daywise_customer_details/ │ │ │ │ ├── __init__.py │ │ │ │ └── daywise_customer_details.json │ │ │ ├── daywise_invoices/ │ │ │ │ ├── __init__.py │ │ │ │ └── daywise_invoices.json │ │ │ ├── daywise_sales/ │ │ │ │ ├── __init__.py │ │ │ │ └── daywise_sales.json │ │ │ ├── employee_item_wise_sales/ │ │ │ │ ├── __init__.py │ │ │ │ └── employee_item_wise_sales.json │ │ │ ├── employee_sales/ │ │ │ │ ├── __init__.py │ │ │ │ └── employee_sales.json │ │ │ ├── item_wise_sales/ │ │ │ │ ├── __init__.py │ │ │ │ └── item_wise_sales.json │ │ │ ├── month_wise_sales/ │ │ │ │ ├── __init__.py │ │ │ │ └── month_wise_sales.json │ │ │ ├── repeated_customers/ │ │ │ │ ├── __init__.py │ │ │ │ └── repeated_customers.json │ │ │ ├── service_wise_sales/ │ │ │ │ ├── __init__.py │ │ │ │ └── service_wise_sales.json │ │ │ ├── time_wise_sales/ │ │ │ │ ├── __init__.py │ │ │ │ └── time_wise_sales.json │ │ │ └── today's_sales/ │ │ │ ├── __init__.py │ │ │ └── today's_sales.json │ │ └── workspace/ │ │ └── ury/ │ │ └── ury.json │ ├── ury_pos/ │ │ └── api.py │ └── www/ │ ├── __init__.py │ └── pos.py └── urypos/ ├── .gitignore ├── .vscode/ │ └── extensions.json ├── README.md ├── index.html ├── package.json ├── postcss.config.js ├── privateKey.js ├── proxyOptions.js ├── src/ │ ├── App.vue │ ├── components/ │ │ ├── Cart.vue │ │ ├── Customer.vue │ │ ├── Header.vue │ │ ├── Login.vue │ │ ├── Menu.vue │ │ ├── NotificationModal.vue │ │ ├── Search.vue │ │ ├── Table.vue │ │ ├── bottomTabs.vue │ │ ├── orderInfo.vue │ │ ├── posClosing.vue │ │ ├── posOpening.vue │ │ ├── recentOrder.vue │ │ └── takeAwayTable.vue │ ├── index.css │ ├── main.js │ ├── router/ │ │ ├── auth.js │ │ └── index.js │ ├── stores/ │ │ ├── Alert.js │ │ ├── Auth.js │ │ ├── Customer.js │ │ ├── Menu.js │ │ ├── Notification.js │ │ ├── NotificationModal.js │ │ ├── Table.js │ │ ├── bottomTabs.js │ │ ├── frappeSdk.js │ │ ├── invoiceData.js │ │ ├── posClosing.js │ │ ├── posOpening.js │ │ ├── recentOrder.js │ │ └── utils/ │ │ └── PrintWithQz.js │ ├── style.css │ └── views/ │ ├── Home.vue │ └── Login.vue ├── tailwind.config.js └── vite.config.js