diff --git a/osinaweb/addressbook/__pycache__/__init__.cpython-310.pyc b/osinaweb/addressbook/__pycache__/__init__.cpython-310.pyc index c083727e..b4545c1c 100644 Binary files a/osinaweb/addressbook/__pycache__/__init__.cpython-310.pyc and b/osinaweb/addressbook/__pycache__/__init__.cpython-310.pyc differ diff --git a/osinaweb/addressbook/__pycache__/admin.cpython-310.pyc b/osinaweb/addressbook/__pycache__/admin.cpython-310.pyc index af22c28a..38bc4dd1 100644 Binary files a/osinaweb/addressbook/__pycache__/admin.cpython-310.pyc and b/osinaweb/addressbook/__pycache__/admin.cpython-310.pyc differ diff --git a/osinaweb/addressbook/__pycache__/apps.cpython-310.pyc b/osinaweb/addressbook/__pycache__/apps.cpython-310.pyc index c8ba5f35..f3573ff6 100644 Binary files a/osinaweb/addressbook/__pycache__/apps.cpython-310.pyc and b/osinaweb/addressbook/__pycache__/apps.cpython-310.pyc differ diff --git a/osinaweb/addressbook/__pycache__/models.cpython-310.pyc b/osinaweb/addressbook/__pycache__/models.cpython-310.pyc index 1485a276..c8e24e81 100644 Binary files a/osinaweb/addressbook/__pycache__/models.cpython-310.pyc and b/osinaweb/addressbook/__pycache__/models.cpython-310.pyc differ diff --git a/osinaweb/addressbook/migrations/__pycache__/0001_initial.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0001_initial.cpython-310.pyc index 021aae44..5d89b85b 100644 Binary files a/osinaweb/addressbook/migrations/__pycache__/0001_initial.cpython-310.pyc and b/osinaweb/addressbook/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/osinaweb/addressbook/migrations/__pycache__/0002_country_addressbook.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0002_country_addressbook.cpython-310.pyc index c6878e12..07ad6815 100644 Binary files a/osinaweb/addressbook/migrations/__pycache__/0002_country_addressbook.cpython-310.pyc and b/osinaweb/addressbook/migrations/__pycache__/0002_country_addressbook.cpython-310.pyc differ diff --git a/osinaweb/addressbook/migrations/__pycache__/0003_contact.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0003_contact.cpython-310.pyc index d107a297..8f16fadb 100644 Binary files a/osinaweb/addressbook/migrations/__pycache__/0003_contact.cpython-310.pyc and b/osinaweb/addressbook/migrations/__pycache__/0003_contact.cpython-310.pyc differ diff --git a/osinaweb/addressbook/migrations/__pycache__/0004_socialmedia.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0004_socialmedia.cpython-310.pyc index 1dc4c589..161f0bb8 100644 Binary files a/osinaweb/addressbook/migrations/__pycache__/0004_socialmedia.cpython-310.pyc and b/osinaweb/addressbook/migrations/__pycache__/0004_socialmedia.cpython-310.pyc differ diff --git a/osinaweb/addressbook/migrations/__pycache__/0005_socialmedia_addressbook.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0005_socialmedia_addressbook.cpython-310.pyc index ddd275e3..b0430a48 100644 Binary files a/osinaweb/addressbook/migrations/__pycache__/0005_socialmedia_addressbook.cpython-310.pyc and b/osinaweb/addressbook/migrations/__pycache__/0005_socialmedia_addressbook.cpython-310.pyc differ diff --git a/osinaweb/addressbook/migrations/__pycache__/__init__.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/__init__.cpython-310.pyc index adbdb1b7..0f153d2b 100644 Binary files a/osinaweb/addressbook/migrations/__pycache__/__init__.cpython-310.pyc and b/osinaweb/addressbook/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/osinaweb/billing/__pycache__/__init__.cpython-310.pyc b/osinaweb/billing/__pycache__/__init__.cpython-310.pyc index c2f671af..5480e177 100644 Binary files a/osinaweb/billing/__pycache__/__init__.cpython-310.pyc and b/osinaweb/billing/__pycache__/__init__.cpython-310.pyc differ diff --git a/osinaweb/billing/__pycache__/admin.cpython-310.pyc b/osinaweb/billing/__pycache__/admin.cpython-310.pyc index c4ba3503..c301d1cb 100644 Binary files a/osinaweb/billing/__pycache__/admin.cpython-310.pyc and b/osinaweb/billing/__pycache__/admin.cpython-310.pyc differ diff --git a/osinaweb/billing/__pycache__/apps.cpython-310.pyc b/osinaweb/billing/__pycache__/apps.cpython-310.pyc index 789e461f..fb18eef5 100644 Binary files a/osinaweb/billing/__pycache__/apps.cpython-310.pyc and b/osinaweb/billing/__pycache__/apps.cpython-310.pyc differ diff --git a/osinaweb/billing/__pycache__/models.cpython-310.pyc b/osinaweb/billing/__pycache__/models.cpython-310.pyc index 095a8b64..35e332fb 100644 Binary files a/osinaweb/billing/__pycache__/models.cpython-310.pyc and b/osinaweb/billing/__pycache__/models.cpython-310.pyc differ diff --git a/osinaweb/billing/__pycache__/urls.cpython-310.pyc b/osinaweb/billing/__pycache__/urls.cpython-310.pyc index b7ce50d9..7def0bd0 100644 Binary files a/osinaweb/billing/__pycache__/urls.cpython-310.pyc and b/osinaweb/billing/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/billing/__pycache__/views.cpython-310.pyc b/osinaweb/billing/__pycache__/views.cpython-310.pyc index 30bd4143..41c19eaf 100644 Binary files a/osinaweb/billing/__pycache__/views.cpython-310.pyc and b/osinaweb/billing/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/billing/add/__pycache__/urls.cpython-310.pyc b/osinaweb/billing/add/__pycache__/urls.cpython-310.pyc index cbf7574c..67a26cc4 100644 Binary files a/osinaweb/billing/add/__pycache__/urls.cpython-310.pyc and b/osinaweb/billing/add/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/billing/add/__pycache__/views.cpython-310.pyc b/osinaweb/billing/add/__pycache__/views.cpython-310.pyc index fae73479..adcbc06d 100644 Binary files a/osinaweb/billing/add/__pycache__/views.cpython-310.pyc and b/osinaweb/billing/add/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0001_initial.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0001_initial.cpython-310.pyc index beb78edb..e6330bba 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0001_initial.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0002_service_active_service_cancelled_at_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0002_service_active_service_cancelled_at_and_more.cpython-310.pyc index ac9a65e8..e8bfb12d 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0002_service_active_service_cancelled_at_and_more.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0002_service_active_service_cancelled_at_and_more.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0003_payment_servicepayment.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0003_payment_servicepayment.cpython-310.pyc index 2bbc32c0..dded55bb 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0003_payment_servicepayment.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0003_payment_servicepayment.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0004_rename_payment_paymenttype.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0004_rename_payment_paymenttype.cpython-310.pyc index 3f73fc7d..9b484350 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0004_rename_payment_paymenttype.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0004_rename_payment_paymenttype.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0005_service_recurring_cycle.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0005_service_recurring_cycle.cpython-310.pyc index 9fea35d3..c038718e 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0005_service_recurring_cycle.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0005_service_recurring_cycle.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0006_alter_service_cancelled_at_alter_service_created_at_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0006_alter_service_cancelled_at_alter_service_created_at_and_more.cpython-310.pyc index 0ad353ac..abbb61d2 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0006_alter_service_cancelled_at_alter_service_created_at_and_more.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0006_alter_service_cancelled_at_alter_service_created_at_and_more.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0007_alter_service_recurring_cycle.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0007_alter_service_recurring_cycle.cpython-310.pyc index 79b0b027..b08c62c8 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0007_alter_service_recurring_cycle.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0007_alter_service_recurring_cycle.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0008_alter_service_type.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0008_alter_service_type.cpython-310.pyc index 1a49d2df..4df4ac98 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0008_alter_service_type.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0008_alter_service_type.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0009_remove_service_due_at_remove_servicepayment_service_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0009_remove_service_due_at_remove_servicepayment_service_and_more.cpython-310.pyc index a3b3eed2..b2d8ed42 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0009_remove_service_due_at_remove_servicepayment_service_and_more.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0009_remove_service_due_at_remove_servicepayment_service_and_more.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0010_charge_amount.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0010_charge_amount.cpython-310.pyc index 1a303aa8..5025de29 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0010_charge_amount.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0010_charge_amount.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0011_invoice.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0011_invoice.cpython-310.pyc index cadf5305..7e6d2b4c 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0011_invoice.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0011_invoice.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0012_remove_servicepayment_charge_receipt_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0012_remove_servicepayment_charge_receipt_and_more.cpython-310.pyc index cb73f3e9..b9ca1703 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0012_remove_servicepayment_charge_receipt_and_more.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0012_remove_servicepayment_charge_receipt_and_more.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0013_alter_invoice_date_created.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0013_alter_invoice_date_created.cpython-310.pyc index c31d062d..2482ef51 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0013_alter_invoice_date_created.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0013_alter_invoice_date_created.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0014_servicepayment_comment.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0014_servicepayment_comment.cpython-310.pyc index a78b48a1..5bbd9746 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0014_servicepayment_comment.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0014_servicepayment_comment.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0015_order.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0015_order.cpython-310.pyc index 74485ba0..b8602a30 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0015_order.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0015_order.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0016_alter_order_status.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0016_alter_order_status.cpython-310.pyc index d194f4b3..6309b7d0 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0016_alter_order_status.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0016_alter_order_status.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0017_service_order.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0017_service_order.cpython-310.pyc index 5eba7912..a7eb1ce7 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0017_service_order.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0017_service_order.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0018_alter_order_status.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0018_alter_order_status.cpython-310.pyc index d2a9ba75..43eca49f 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0018_alter_order_status.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0018_alter_order_status.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0019_item_orderpayment_remove_service_customer_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0019_item_orderpayment_remove_service_customer_and_more.cpython-310.pyc index 029860d1..bfdc5bb8 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0019_item_orderpayment_remove_service_customer_and_more.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0019_item_orderpayment_remove_service_customer_and_more.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0020_orderitem.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0020_orderitem.cpython-310.pyc index cf9bd9a0..b567b8e8 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0020_orderitem.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0020_orderitem.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0021_remove_item_recurring_cycle_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0021_remove_item_recurring_cycle_and_more.cpython-310.pyc index 2a3f87b5..19bb1b02 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0021_remove_item_recurring_cycle_and_more.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0021_remove_item_recurring_cycle_and_more.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0022_remove_item_cancelled_at_remove_item_created_at_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0022_remove_item_cancelled_at_remove_item_created_at_and_more.cpython-310.pyc index bc4ec0c8..d06dcc2c 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0022_remove_item_cancelled_at_remove_item_created_at_and_more.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0022_remove_item_cancelled_at_remove_item_created_at_and_more.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0023_alter_item_project_alter_item_type.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0023_alter_item_project_alter_item_type.cpython-310.pyc index f076f64c..19bb4b18 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0023_alter_item_project_alter_item_type.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0023_alter_item_project_alter_item_type.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0024_remove_item_active.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0024_remove_item_active.cpython-310.pyc index b9d89824..ef96613f 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0024_remove_item_active.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0024_remove_item_active.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0025_remove_item_project_item_customer.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0025_remove_item_project_item_customer.cpython-310.pyc index 868cae84..e5d18a36 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0025_remove_item_project_item_customer.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0025_remove_item_project_item_customer.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0026_rename_type_item_item_type_remove_order_paid.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0026_rename_type_item_item_type_remove_order_paid.cpython-310.pyc index 67d6958b..15d03aa1 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0026_rename_type_item_item_type_remove_order_paid.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0026_rename_type_item_item_type_remove_order_paid.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0027_item_type.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0027_item_type.cpython-310.pyc index 3ffdd81d..928811bf 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0027_item_type.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0027_item_type.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0028_remove_order_due_date.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0028_remove_order_due_date.cpython-310.pyc index 256ee003..90f48b74 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0028_remove_order_due_date.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0028_remove_order_due_date.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0029_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0029_invoice_pdf.cpython-310.pyc index 1e95ab1b..c3ded0e8 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0029_invoice_pdf.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0029_invoice_pdf.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0030_alter_invoice_order.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0030_alter_invoice_order.cpython-310.pyc index d13824a2..3db7a401 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0030_alter_invoice_order.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0030_alter_invoice_order.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0031_alter_invoice_invoice_number.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0031_alter_invoice_invoice_number.cpython-310.pyc index 4f124a03..e76dfc0d 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0031_alter_invoice_invoice_number.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0031_alter_invoice_invoice_number.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0032_order_business.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0032_order_business.cpython-310.pyc index a6c0ccf2..e3440cc8 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0032_order_business.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0032_order_business.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0033_alter_order_status.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0033_alter_order_status.cpython-310.pyc index a92253b6..8fcd6cec 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0033_alter_order_status.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0033_alter_order_status.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0034_alter_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0034_alter_invoice_pdf.cpython-310.pyc index 1c8bce53..5dd4e5e1 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0034_alter_invoice_pdf.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0034_alter_invoice_pdf.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0035_alter_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0035_alter_invoice_pdf.cpython-310.pyc index 32709919..3718eca5 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0035_alter_invoice_pdf.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0035_alter_invoice_pdf.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0036_alter_invoice_invoice_number.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0036_alter_invoice_invoice_number.cpython-310.pyc index a4e041e9..bf50ea92 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0036_alter_invoice_invoice_number.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0036_alter_invoice_invoice_number.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0037_recurringcycle_item.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0037_recurringcycle_item.cpython-310.pyc index e6915489..fa09ef2e 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0037_recurringcycle_item.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0037_recurringcycle_item.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0038_alter_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0038_alter_invoice_pdf.cpython-310.pyc index 1669faa8..d436a190 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0038_alter_invoice_pdf.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0038_alter_invoice_pdf.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0039_recurringcycle_cycle_price.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0039_recurringcycle_cycle_price.cpython-310.pyc index 7020ec89..dcd9e1ef 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0039_recurringcycle_cycle_price.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0039_recurringcycle_cycle_price.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-310.pyc index a89a1116..3ea1b658 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-310.pyc index 84582786..e126b429 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0042_order_due_date.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0042_order_due_date.cpython-310.pyc index 3c8251b9..0de06410 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0042_order_due_date.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0042_order_due_date.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0043_alter_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0043_alter_invoice_pdf.cpython-310.pyc index f001cdff..2d46a6a0 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0043_alter_invoice_pdf.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0043_alter_invoice_pdf.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/0044_alter_orderitem_active.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0044_alter_orderitem_active.cpython-310.pyc index b319ee0f..c7e2f78a 100644 Binary files a/osinaweb/billing/migrations/__pycache__/0044_alter_orderitem_active.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/0044_alter_orderitem_active.cpython-310.pyc differ diff --git a/osinaweb/billing/migrations/__pycache__/__init__.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/__init__.cpython-310.pyc index f15d2a00..2669bebb 100644 Binary files a/osinaweb/billing/migrations/__pycache__/__init__.cpython-310.pyc and b/osinaweb/billing/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/osinaweb/billing/models.py b/osinaweb/billing/models.py index 1ebc4883..f99a8b46 100644 --- a/osinaweb/billing/models.py +++ b/osinaweb/billing/models.py @@ -46,6 +46,12 @@ class Order(models.Model): orderitems = self.orderitem_set.all() total = sum([item.get_total for item in orderitems]) return total + @property + def get_purchased_date(self): + first_orderitem = self.orderitem_set.first() + if first_orderitem: + return first_orderitem.purchased_at + return None def save(self, *args, **kwargs): if not self.order_id: @@ -111,7 +117,6 @@ class Invoice(models.Model): else: new_invoice_number = f"${current_year}-1425" self.invoice_number = new_invoice_number - super().save(*args, **kwargs) diff --git a/osinaweb/customercore/__pycache__/__init__.cpython-310.pyc b/osinaweb/customercore/__pycache__/__init__.cpython-310.pyc index 4e9e8c69..8695ba40 100644 Binary files a/osinaweb/customercore/__pycache__/__init__.cpython-310.pyc and b/osinaweb/customercore/__pycache__/__init__.cpython-310.pyc differ diff --git a/osinaweb/customercore/__pycache__/admin.cpython-310.pyc b/osinaweb/customercore/__pycache__/admin.cpython-310.pyc index bcebfbdf..0bf15d14 100644 Binary files a/osinaweb/customercore/__pycache__/admin.cpython-310.pyc and b/osinaweb/customercore/__pycache__/admin.cpython-310.pyc differ diff --git a/osinaweb/customercore/__pycache__/apps.cpython-310.pyc b/osinaweb/customercore/__pycache__/apps.cpython-310.pyc index 129dd164..16ddeec5 100644 Binary files a/osinaweb/customercore/__pycache__/apps.cpython-310.pyc and b/osinaweb/customercore/__pycache__/apps.cpython-310.pyc differ diff --git a/osinaweb/customercore/__pycache__/custom_context.cpython-310.pyc b/osinaweb/customercore/__pycache__/custom_context.cpython-310.pyc index 978e062c..e35ad9b9 100644 Binary files a/osinaweb/customercore/__pycache__/custom_context.cpython-310.pyc and b/osinaweb/customercore/__pycache__/custom_context.cpython-310.pyc differ diff --git a/osinaweb/customercore/__pycache__/decorators.cpython-310.pyc b/osinaweb/customercore/__pycache__/decorators.cpython-310.pyc index 37b7e6df..3bbb47ce 100644 Binary files a/osinaweb/customercore/__pycache__/decorators.cpython-310.pyc and b/osinaweb/customercore/__pycache__/decorators.cpython-310.pyc differ diff --git a/osinaweb/customercore/__pycache__/models.cpython-310.pyc b/osinaweb/customercore/__pycache__/models.cpython-310.pyc index e2a38eae..d8f90d15 100644 Binary files a/osinaweb/customercore/__pycache__/models.cpython-310.pyc and b/osinaweb/customercore/__pycache__/models.cpython-310.pyc differ diff --git a/osinaweb/customercore/__pycache__/urls.cpython-310.pyc b/osinaweb/customercore/__pycache__/urls.cpython-310.pyc index 38dad1a2..25543437 100644 Binary files a/osinaweb/customercore/__pycache__/urls.cpython-310.pyc and b/osinaweb/customercore/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/customercore/__pycache__/views.cpython-310.pyc b/osinaweb/customercore/__pycache__/views.cpython-310.pyc index 0ff5b63a..00afeca6 100644 Binary files a/osinaweb/customercore/__pycache__/views.cpython-310.pyc and b/osinaweb/customercore/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/customercore/admin.py b/osinaweb/customercore/admin.py index 8c38f3f3..c6029487 100644 --- a/osinaweb/customercore/admin.py +++ b/osinaweb/customercore/admin.py @@ -1,3 +1,8 @@ from django.contrib import admin - +from .models import * # Register your models here. + +admin.site.register(Ticket) +admin.site.register(TicketUpdate) +admin.site.register(TicketAttachment) +admin.site.register(TicketReaction) \ No newline at end of file diff --git a/osinaweb/customercore/migrations/0002_alter_ticket_department.py b/osinaweb/customercore/migrations/0002_alter_ticket_department.py new file mode 100644 index 00000000..beb93f5a --- /dev/null +++ b/osinaweb/customercore/migrations/0002_alter_ticket_department.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.5 on 2024-04-25 12:02 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('osinacore', '0075_remove_ticketattachment_ticket_and_more'), + ('customercore', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='ticket', + name='department', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='osinacore.department'), + ), + ] diff --git a/osinaweb/customercore/migrations/0003_ticket_customer_ticket_status_and_more.py b/osinaweb/customercore/migrations/0003_ticket_customer_ticket_status_and_more.py new file mode 100644 index 00000000..4830ea9e --- /dev/null +++ b/osinaweb/customercore/migrations/0003_ticket_customer_ticket_status_and_more.py @@ -0,0 +1,30 @@ +# Generated by Django 4.2.5 on 2024-04-25 12:13 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('osinacore', '0075_remove_ticketattachment_ticket_and_more'), + ('customercore', '0002_alter_ticket_department'), + ] + + operations = [ + migrations.AddField( + model_name='ticket', + name='customer', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='osinacore.customerprofile'), + ), + migrations.AddField( + model_name='ticket', + name='status', + field=models.CharField(choices=[('Open', 'Open'), ('Working On', 'Working On'), ('Closed', 'Closed')], max_length=50, null=True), + ), + migrations.AddField( + model_name='ticketreaction', + name='reaction', + field=models.CharField(choices=[('Happy', 'Happy'), ('Indifferent', 'Indifferent'), ('Sad', 'Sad')], max_length=50, null=True), + ), + ] diff --git a/osinaweb/customercore/migrations/0004_ticket_ticket_number_and_more.py b/osinaweb/customercore/migrations/0004_ticket_ticket_number_and_more.py new file mode 100644 index 00000000..7f9e71ee --- /dev/null +++ b/osinaweb/customercore/migrations/0004_ticket_ticket_number_and_more.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.5 on 2024-04-25 12:33 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('customercore', '0003_ticket_customer_ticket_status_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='ticket', + name='ticket_number', + field=models.CharField(blank=True, max_length=400), + ), + migrations.AlterField( + model_name='ticketattachment', + name='ticket_update', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='customercore.ticketupdate'), + ), + ] diff --git a/osinaweb/customercore/migrations/__pycache__/0001_initial.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0001_initial.cpython-310.pyc index a9fcf9b5..f69ddf4a 100644 Binary files a/osinaweb/customercore/migrations/__pycache__/0001_initial.cpython-310.pyc and b/osinaweb/customercore/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/osinaweb/customercore/migrations/__pycache__/0002_alter_ticket_department.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0002_alter_ticket_department.cpython-310.pyc new file mode 100644 index 00000000..5dae3ced Binary files /dev/null and b/osinaweb/customercore/migrations/__pycache__/0002_alter_ticket_department.cpython-310.pyc differ diff --git a/osinaweb/customercore/migrations/__pycache__/0003_ticket_customer_ticket_status_and_more.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0003_ticket_customer_ticket_status_and_more.cpython-310.pyc new file mode 100644 index 00000000..d55558b8 Binary files /dev/null and b/osinaweb/customercore/migrations/__pycache__/0003_ticket_customer_ticket_status_and_more.cpython-310.pyc differ diff --git a/osinaweb/customercore/migrations/__pycache__/0004_ticket_ticket_number_and_more.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0004_ticket_ticket_number_and_more.cpython-310.pyc new file mode 100644 index 00000000..83b4d0f6 Binary files /dev/null and b/osinaweb/customercore/migrations/__pycache__/0004_ticket_ticket_number_and_more.cpython-310.pyc differ diff --git a/osinaweb/customercore/migrations/__pycache__/__init__.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/__init__.cpython-310.pyc index f800a613..e7a17bec 100644 Binary files a/osinaweb/customercore/migrations/__pycache__/__init__.cpython-310.pyc and b/osinaweb/customercore/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/osinaweb/customercore/models.py b/osinaweb/customercore/models.py index c4a7c957..52909365 100644 --- a/osinaweb/customercore/models.py +++ b/osinaweb/customercore/models.py @@ -1,5 +1,6 @@ from django.db import models from billing.models import * +from django.utils import timezone # Create your models here. class Ticket(models.Model): @@ -7,15 +8,36 @@ class Ticket(models.Model): ('General/Account/Billing', 'General/Account/Billing'), ('Project/Product', 'Project/Product'), ) + STATUS_CHOICES = ( + ('Open', 'Open'), + ('Working On', 'Working On'), + ('Closed', 'Closed'), + ) + ticket_number = models.CharField(max_length=400, blank=True) title = models.CharField(max_length=400) description = models.TextField(null=True, blank=True) + status = models.CharField(max_length=50, choices=STATUS_CHOICES, null=True) regarding = models.CharField(max_length=50, choices=REGARDING_CHOICES, null=True) project = models.ForeignKey(Project, on_delete=models.SET_NULL, blank=True, null=True) product = models.ForeignKey(Item, on_delete=models.SET_NULL, blank=True, null=True) - department = models.ForeignKey(Department, on_delete=models.SET_NULL,null=True) + department = models.ForeignKey(Department, on_delete=models.SET_NULL,null=True, blank=True) opened_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) opened_date = models.DateTimeField() - + customer = models.ForeignKey(CustomerProfile, on_delete=models.SET_NULL, null=True) + def save(self, *args, **kwargs): + if not self.ticket_number: + last_ticket = Ticket.objects.filter(opened_date__year=timezone.now().year).order_by('-ticket_number').first() + if last_ticket and last_ticket.ticket_number: + last_ticket_number = int(last_ticket.ticket_number[-4:]) + new_ticket_number = last_ticket_number + 1 + else: + new_ticket_number = 1 + + + current_year_last_two_digits = str(timezone.now().year)[-2:] + self.ticket_number = f"{current_year_last_two_digits}{new_ticket_number:04}" + + super().save(*args, **kwargs) class TicketUpdate(models.Model): ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE) @@ -26,14 +48,15 @@ class TicketUpdate(models.Model): class TicketAttachment(models.Model): ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE) - ticket_update = models.ForeignKey(TicketUpdate, on_delete=models.CASCADE) + ticket_update = models.ForeignKey(TicketUpdate, on_delete=models.CASCADE, null=True, blank=True) file = models.FileField() class TicketReaction(models.Model): - REGARDING_CHOICES = ( + REACTION_CHOICES = ( ('Happy', 'Happy'), ('Indifferent', 'Indifferent'), ('Sad', 'Sad'), ) + reaction = models.CharField(max_length=50, choices=REACTION_CHOICES, null=True) ticket_update = models.ForeignKey(TicketUpdate, on_delete=models.CASCADE) \ No newline at end of file diff --git a/osinaweb/customercore/templates/add_templates/customer-add-ticket.html b/osinaweb/customercore/templates/add_templates/customer-add-ticket.html index 3adf6554..3faf869d 100644 --- a/osinaweb/customercore/templates/add_templates/customer-add-ticket.html +++ b/osinaweb/customercore/templates/add_templates/customer-add-ticket.html @@ -9,9 +9,8 @@ Create Ticket -
+ {% csrf_token %} -
- - +
- + - +
@@ -55,7 +66,7 @@
- + Upload Document(s)