Import Customers
This commit is contained in:
		
							
								
								
									
										4
									
								
								tienda_ilusion/don_confiao/example_customer.csv
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								tienda_ilusion/don_confiao/example_customer.csv
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | nombre,correo,telefono | ||||||
|  | Alejandro Ayala,mono@disroot.org,3232321 | ||||||
|  | Mono Francisco,pablo@onecluster.org,321312312 | ||||||
|  | Pablo Bolivar,alejo@onecluster.org,3243242 | ||||||
| 
 | 
| @@ -12,6 +12,10 @@ class ImportProductsForm(forms.Form): | |||||||
|     csv_file = forms.FileField() |     csv_file = forms.FileField() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ImportCustomersForm(forms.Form): | ||||||
|  |     csv_file = forms.FileField() | ||||||
|  |  | ||||||
|  |  | ||||||
| class PurchaseForm(forms.ModelForm): | class PurchaseForm(forms.ModelForm): | ||||||
|     class Meta: |     class Meta: | ||||||
|         model = Sale |         model = Sale | ||||||
|   | |||||||
| @@ -0,0 +1,23 @@ | |||||||
|  | # Generated by Django 5.0.6 on 2024-10-26 22:01 | ||||||
|  |  | ||||||
|  | from django.db import migrations, models | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Migration(migrations.Migration): | ||||||
|  |  | ||||||
|  |     dependencies = [ | ||||||
|  |         ('don_confiao', '0030_paymentsale'), | ||||||
|  |     ] | ||||||
|  |  | ||||||
|  |     operations = [ | ||||||
|  |         migrations.RenameField( | ||||||
|  |             model_name='customer', | ||||||
|  |             old_name='address', | ||||||
|  |             new_name='email', | ||||||
|  |         ), | ||||||
|  |         migrations.AddField( | ||||||
|  |             model_name='customer', | ||||||
|  |             name='phone', | ||||||
|  |             field=models.CharField(blank=True, max_length=100, null=True), | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
| @@ -8,7 +8,8 @@ from datetime import datetime | |||||||
|  |  | ||||||
| class Customer(models.Model): | class Customer(models.Model): | ||||||
|     name = models.CharField(max_length=100, default=None, null=False, blank=False) |     name = models.CharField(max_length=100, default=None, null=False, blank=False) | ||||||
|     address = models.CharField(max_length=100, null=True, blank=True) |     email = models.CharField(max_length=100, null=True, blank=True) | ||||||
|  |     phone = models.CharField(max_length=100, null=True, blank=True) | ||||||
|  |  | ||||||
|     def __str__(self): |     def __str__(self): | ||||||
|         return self.name |         return self.name | ||||||
|   | |||||||
| @@ -0,0 +1,13 @@ | |||||||
|  | {% extends 'don_confiao/base.html' %} | ||||||
|  | {% block content %} | ||||||
|  | {% if form.is_multipart %} | ||||||
|  |     <form enctype="multipart/form-data" method="post"> | ||||||
|  | {% else %} | ||||||
|  |     <form method="post"> | ||||||
|  | {% endif %} | ||||||
|  |  | ||||||
|  | {% csrf_token %} | ||||||
|  | {{ form }} | ||||||
|  | <input type="submit" value="Importar"> | ||||||
|  | </form> | ||||||
|  | {% endblock %} | ||||||
| @@ -4,4 +4,5 @@ | |||||||
|     <li><a href='./comprar'>Comprar</a></li> |     <li><a href='./comprar'>Comprar</a></li> | ||||||
|     <li><a href='./productos'>Productos</a></li> |     <li><a href='./productos'>Productos</a></li> | ||||||
|     <li><a href='./importar_productos'>Importar Productos</a></li> |     <li><a href='./importar_productos'>Importar Productos</a></li> | ||||||
|  |     <li><a href='./importar_terceros'>Importar Terceros</a></li> | ||||||
| </ul> | </ul> | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ | |||||||
|             <li><a href='/don_confiao/compras'>Compras</a></li> |             <li><a href='/don_confiao/compras'>Compras</a></li> | ||||||
|             <li><a href='/don_confiao/lista_productos'>Productos</a></li> |             <li><a href='/don_confiao/lista_productos'>Productos</a></li> | ||||||
|             <li><a href='/don_confiao/importar_productos'>Importar Productos</a></li> |             <li><a href='/don_confiao/importar_productos'>Importar Productos</a></li> | ||||||
|  |             <li><a href='/don_confiao/importar_terceros'>Importar Terceros</a></li> | ||||||
|             <li><a href='/don_confiao/cuadrar_tarro'>Cuadrar tarro</a></li> |             <li><a href='/don_confiao/cuadrar_tarro'>Cuadrar tarro</a></li> | ||||||
|         </ul> |         </ul> | ||||||
|     </nav> |     </nav> | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ urlpatterns = [ | |||||||
|     path("productos", views.products, name="products"), |     path("productos", views.products, name="products"), | ||||||
|     path("lista_productos", views.ProductListView.as_view(), name='product_list'), |     path("lista_productos", views.ProductListView.as_view(), name='product_list'), | ||||||
|     path("importar_productos", views.import_products, name="import_products"), |     path("importar_productos", views.import_products, name="import_products"), | ||||||
|  |     path("importar_terceros", views.import_customers, name="import_customers"), | ||||||
|     path("exportar_ventas_para_tryton", |     path("exportar_ventas_para_tryton", | ||||||
|          views.exportar_ventas_para_tryton, |          views.exportar_ventas_para_tryton, | ||||||
|          name="exportar_ventas_para_tryton"), |          name="exportar_ventas_para_tryton"), | ||||||
|   | |||||||
| @@ -4,9 +4,10 @@ from django.views.generic import ListView | |||||||
| from django.db import transaction | from django.db import transaction | ||||||
|  |  | ||||||
| from .models import ( | from .models import ( | ||||||
|     Sale, SaleLine, Product, ProductCategory, Payment, PaymentMethods) |     Sale, SaleLine, Product, Customer, ProductCategory, Payment, PaymentMethods) | ||||||
| from .forms import ( | from .forms import ( | ||||||
|     ImportProductsForm, |     ImportProductsForm, | ||||||
|  |     ImportCustomersForm, | ||||||
|     PurchaseForm, |     PurchaseForm, | ||||||
|     SaleLineFormSet, |     SaleLineFormSet, | ||||||
|     ReconciliationJarForm, |     ReconciliationJarForm, | ||||||
| @@ -94,6 +95,19 @@ def import_products(request): | |||||||
|         {'form': form} |         {'form': form} | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|  | def import_customers(request): | ||||||
|  |     if request.method == "POST": | ||||||
|  |         form = ImportCustomersForm(request.POST, request.FILES) | ||||||
|  |         if form.is_valid(): | ||||||
|  |             handle_import_customers_file(request.FILES["csv_file"]) | ||||||
|  |             return HttpResponseRedirect("productos") | ||||||
|  |     else: | ||||||
|  |         form = ImportCustomersForm() | ||||||
|  |     return render( | ||||||
|  |         request, | ||||||
|  |         "don_confiao/import_customers.html", | ||||||
|  |         {'form': form} | ||||||
|  |     ) | ||||||
|  |  | ||||||
| def reconciliate_jar(request): | def reconciliate_jar(request): | ||||||
|     summary = Payment.get_reconciliation_jar_summary() |     summary = Payment.get_reconciliation_jar_summary() | ||||||
| @@ -154,6 +168,18 @@ def handle_import_products_file(csv_file): | |||||||
|         for category in categories: |         for category in categories: | ||||||
|             product.categories.add(category) |             product.categories.add(category) | ||||||
|  |  | ||||||
|  | def handle_import_customers_file(csv_file): | ||||||
|  |     data = io.StringIO(csv_file.read().decode('utf-8')) | ||||||
|  |     reader = csv.DictReader(data, quotechar='"') | ||||||
|  |     for row in reader: | ||||||
|  |         customer, created = Customer.objects.update_or_create( | ||||||
|  |             name=row['nombre'], | ||||||
|  |             defaults={ | ||||||
|  |                 'email': row['correo'], | ||||||
|  |                 'phone': row['telefono'] | ||||||
|  |             } | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |  | ||||||
| def exportar_ventas_para_tryton(request): | def exportar_ventas_para_tryton(request): | ||||||
|     tryton_sales_header = [ |     tryton_sales_header = [ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user