-
+
+ showComponent = verified"/>
+
+
-
diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js
index 4f58d7a..92186b5 100644
--- a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js
+++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js
@@ -23,6 +23,10 @@ class Api {
return this.apiImplementation.getPurchasesForReconciliation();
}
+ isValidAdminCode(code) {
+ return this.apiImplementation.isValidAdminCode(code);
+ }
+
createPurchase(purchase) {
return this.apiImplementation.createPurchase(purchase);
}
diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js
index 472af2f..5faae05 100644
--- a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js
+++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js
@@ -24,6 +24,11 @@ class DjangoApi {
return this.getRequest(url);
}
+ isValidAdminCode(code) {
+ const url = `/don_confiao/api/admin_code/validate/${code}`
+ return this.getRequest(url)
+ }
+
createPurchase(purchase) {
const url = '/don_confiao/api/sales/';
return this.postRequest(url, purchase);
diff --git a/tienda_ilusion/don_confiao/migrations/0037_admincode.py b/tienda_ilusion/don_confiao/migrations/0037_admincode.py
new file mode 100644
index 0000000..1abc7b5
--- /dev/null
+++ b/tienda_ilusion/don_confiao/migrations/0037_admincode.py
@@ -0,0 +1,20 @@
+# Generated by Django 5.0.6 on 2025-01-11 23:52
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('don_confiao', '0036_merge_20241228_2212'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='AdminCode',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('value', models.CharField(max_length=255)),
+ ],
+ ),
+ ]
diff --git a/tienda_ilusion/don_confiao/models.py b/tienda_ilusion/don_confiao/models.py
index 05d2d23..032998e 100644
--- a/tienda_ilusion/don_confiao/models.py
+++ b/tienda_ilusion/don_confiao/models.py
@@ -198,3 +198,7 @@ class Payment(models.Model):
class PaymentSale(models.Model):
payment = models.ForeignKey(Payment, on_delete=models.CASCADE)
sale = models.ForeignKey(Sale, on_delete=models.CASCADE)
+
+
+class AdminCode(models.Model):
+ value = models.CharField(max_length=255, null=False, blank=False)
diff --git a/tienda_ilusion/don_confiao/tests/test_admin_code.py b/tienda_ilusion/don_confiao/tests/test_admin_code.py
new file mode 100644
index 0000000..87194f0
--- /dev/null
+++ b/tienda_ilusion/don_confiao/tests/test_admin_code.py
@@ -0,0 +1,41 @@
+from django.test import TestCase, Client
+
+from ..models import AdminCode
+
+import json
+
+
+class TestAdminCode(TestCase):
+ def setUp(self):
+ self.valid_code = 'some valid code'
+ admin_code = AdminCode()
+ admin_code.value = self.valid_code
+ admin_code.clean()
+ admin_code.save()
+
+ self.client = Client()
+
+ def test_validate_code(self):
+ url = '/don_confiao/api/admin_code/validate/' + self.valid_code
+ response = self.client.get(url)
+ self.assertEqual(response.status_code, 200)
+
+ content = json.loads(response.content.decode('utf-8'))
+ self.assertTrue(content['validCode'])
+
+ def test_invalid_code(self):
+ invalid_code = 'some invalid code'
+ url = '/don_confiao/api/admin_code/validate/' + invalid_code
+
+ response = self.client.get(url)
+ self.assertEqual(response.status_code, 200)
+
+ content = json.loads(response.content.decode('utf-8'))
+ self.assertFalse(content['validCode'])
+
+ def test_empty_code(self):
+ empty_code = ''
+ url = '/don_confiao/api/admin_code/validate/' + empty_code
+
+ response = self.client.get(url)
+ self.assertEqual(response.status_code, 404)
diff --git a/tienda_ilusion/don_confiao/urls.py b/tienda_ilusion/don_confiao/urls.py
index fb8659b..5f8f654 100644
--- a/tienda_ilusion/don_confiao/urls.py
+++ b/tienda_ilusion/don_confiao/urls.py
@@ -28,5 +28,6 @@ urlpatterns = [
path("payment_methods/all/select_format", api_views.PaymentMethodView.as_view(), name="payment_methods_to_select"),
path('purchases/for_reconciliation', api_views.SalesForReconciliationView.as_view(), name='sales_for_reconciliation'),
path('reconciliate_jar', api_views.ReconciliateJarView.as_view()),
+ path('api/admin_code/validate/