You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			290 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			HTML
		
	
			
		
		
	
	
			290 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			HTML
		
	
| {% extends "main.html" %}
 | |
| {%load static%}
 | |
| {% block content %}
 | |
| 
 | |
| <div class="w-full px-10 mb-4">
 | |
|     <div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
 | |
|         <h1 class="text-3xl text-slate-800 text-center font-semibold">
 | |
|             Add Customer
 | |
|         </h1>
 | |
|         <form method="POST" action="{% url 'save_customer' %}">
 | |
|             {% csrf_token %}
 | |
|             <div class="w-full flex flex-col gap-3 justify-center items-center mt-5">
 | |
| 
 | |
|                 <input name="first_name" type="text" placeholder="First Name"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
 | |
| 
 | |
|                 <input name="last_name" type="text" placeholder="Last Name"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
 | |
| 
 | |
|                 <input name="email" type="email" placeholder="Email"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
 | |
| 
 | |
|                 <input name="mobile_number" type="number" placeholder="Mobile Number"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
 | |
| 
 | |
|                 <input name="personal_website" type="url" placeholder="Personal Website"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md">
 | |
|                 <select name="status"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500"
 | |
|                     required>
 | |
|                     <option value="" selected disabled>Status</option>
 | |
|                     <option value="Active">Active</option>
 | |
|                     <option value="Suspended">Suspended</option>
 | |
|                     <option value="Terminated">Terminated</option>
 | |
|                 </select>
 | |
| 
 | |
|                 <select name="reference"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500"
 | |
|                     required>
 | |
|                     <option value="" selected disabled>Reference</option>
 | |
|                     {% for reference in references %}
 | |
|                     <option value="{{reference.id}}">{{reference.name}}</option>
 | |
|                     {% endfor %}
 | |
|                 </select>
 | |
| 
 | |
|                 <select id="businessTypeSelect"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
 | |
|                     <option value="" selected disabled>Type</option>
 | |
|                     <option value="business">Business</option>
 | |
|                     <option value="personal">Personal</option>
 | |
|                 </select>
 | |
| 
 | |
|                 <div class="w-[80%] mx-auto border border-gray-300 rounded-md py-5 px-3 bg-white hidden"
 | |
|                     id="addBusinessContainer">
 | |
|                     <h1 class="text-3xl text-slate-800 text-center font-semibold">
 | |
|                         Select Business
 | |
|                     </h1>
 | |
| 
 | |
|                     <div class="w-full flex justify-end items-center px-3 py-2">
 | |
|                         <button type="button"
 | |
|                             class="w-fit py-1 px-3 bg-white rounded-md outline-none text-blue-500 border border-blue-500 text-xl cursor-pointer hover:bg-blue-500 hover:text-white"
 | |
|                             id="addBusinessButton">
 | |
|                             Add Business
 | |
|                         </button>
 | |
|                     </div>
 | |
| 
 | |
|                     <div class="w-full mt-2">
 | |
|                         <select name="business" id="businessSelect"
 | |
|                             class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
 | |
|                             <option value="" selected disabled>Business Name</option>
 | |
|                             {% for business in businesses %}
 | |
|                             <option value="{{business.id}}">{{business.name}}</option>
 | |
|                             {% endfor %}
 | |
|                         </select>
 | |
|                     </div>
 | |
|                 </div>
 | |
| 
 | |
| 
 | |
|                 <!-- MAKE THE "ADDBUSINESSCONTAINER" VISIBLE WHEN CHOOSING THE CUSTOMER TYPE AS BUSINESS  -->
 | |
|                 <script>
 | |
|                     const businessTypeSelect = document.getElementById('businessTypeSelect');
 | |
|                     const addBusinessContainer = document.getElementById('addBusinessContainer');
 | |
| 
 | |
|                     businessTypeSelect.addEventListener('change', function () {
 | |
|                         if (businessTypeSelect.value === 'business') {
 | |
|                             addBusinessContainer.style.display = 'block';
 | |
|                             addBusinessContainer.scrollIntoView({ behavior: 'smooth' });
 | |
|                         } else {
 | |
|                             addBusinessContainer.style.display = 'none';
 | |
|                         }
 | |
|                     });
 | |
| 
 | |
|                 </script>
 | |
| 
 | |
|                 <input name="password" type="password" placeholder="Password"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
 | |
| 
 | |
|                 <div class="w-full flex justify-center items-center mt-3">
 | |
|                     <button type="submit"
 | |
|                         class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500">Add
 | |
|                         Customer</button>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </form>
 | |
| 
 | |
| 
 | |
|         <!-- THE "ADD BUSINESS" FORM THAT APPEARS WHEN CLICKING ON THE ADD BUSINESS BUTTON -->
 | |
|         <div class="w-full p-3 rounded-md border border-gray-300 mt-5 hidden" id="addBusinessFormContainer">
 | |
|             <h1 class="text-3xl text-slate-800 text-center font-semibold">Add Business</h1>
 | |
|             <form method="POST" action="{% url 'save_business_modal' %}" id="addBusinessFormModal">
 | |
|                 {% csrf_token %}
 | |
|                 <input name="name" type="text" placeholder="Name"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4" required>
 | |
| 
 | |
|                 <div class="inbox-box border border-gray-300 py-1 px-3 w-full rounded-md mt-4">
 | |
|                     <div class="flex items-center justify-between">
 | |
|                         <input name="logo" required name="cv" type="file" id="actual-btn" accept="image/*" hidden
 | |
|                             multiple />
 | |
|                         <span id="file-name" class="text-gray-500 text-base focus:outline-none outline-none">Upload
 | |
|                             Business
 | |
|                             Logo</span>
 | |
|                         <label for="actual-btn"
 | |
|                             class="bg-transparent text-gray-500 border border-white px-4 py-2 h-14 cursor-pointer flex items-center"><i
 | |
|                                 class="fa fa-upload"></i></label>
 | |
| 
 | |
|                     </div>
 | |
|                 </div>
 | |
| 
 | |
|                 <!-- WHEN THE USER CHOOSE A FILE THE NAME OF THE FILE WILL APPEAR IN THE SPAN -->
 | |
|                 <script>
 | |
|                     const fileInput = document.getElementById('actual-btn');
 | |
|                     const fileNameSpan = document.getElementById('file-name');
 | |
| 
 | |
|                     fileInput.addEventListener('change', (event) => {
 | |
|                         const selectedFiles = event.target.files;
 | |
|                         if (selectedFiles.length > 0) {
 | |
|                             const fileNames = Array.from(selectedFiles).map(file => file.name).join(', ');
 | |
|                             fileNameSpan.textContent = fileNames;
 | |
|                         } else {
 | |
|                             fileNameSpan.textContent = 'Upload Documents (PDF, docx)';
 | |
|                         }
 | |
|                     });
 | |
|                 </script>
 | |
| 
 | |
|                 <input name="email" type="email" placeholder="Email"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4" required>
 | |
| 
 | |
|                 <input name="financial_number" type="number" placeholder="Financial Number"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4" required>
 | |
| 
 | |
|                 <div class="w-full flex justify-start items-center gap-2 mt-4">
 | |
|                     <input name="vat" type="checkbox" id="vatCheckbox" onchange="updateVatValue(this.checked)" required>
 | |
|                     <label class="text-slate-800">Vat</label>
 | |
|                 </div>
 | |
| 
 | |
|                 <script>
 | |
|                     function updateVatValue(checked) {
 | |
|                         const vatInput = document.querySelector('input[name="vat"]');
 | |
|                         vatInput.value = checked ? 'True' : 'False';
 | |
|                     }
 | |
|                 </script>
 | |
| 
 | |
|                 <input name="commercial_registration" type="commercial_registration"
 | |
|                     placeholder="Commercial registration"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4" required>
 | |
| 
 | |
|                 <input name="phone_number" type="number" placeholder="Mobile Number"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4" required>
 | |
| 
 | |
|                 <input name="website" type="text" placeholder="Website"
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4">
 | |
| 
 | |
| 
 | |
|                 <select name="business_type" id=""
 | |
|                     class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500 mt-4">
 | |
|                     <option value="" selected disabled>Business Type</option>
 | |
|                     <option value="ASSOCIATIONS">Associations</option>
 | |
|                     <option value="HEALTHCARE">Healthcare</option>
 | |
|                     <option value="LUXURY">Luxury</option>
 | |
|                     <option value="MANUFACTURING">Manufacturing</option>
 | |
|                     <option value="NON-PROFIT">Non-Profit</option>
 | |
|                     <option value="Education">Education</option>
 | |
|                     <option value="ENTERTAINMENT">Entertainment</option>
 | |
|                     <option value="LOGISTICS">Logistics</option>
 | |
|                     <option value="RETAIL">Retail</option>
 | |
|                     <option value="AUTOMOTIVE">Automotive</option>
 | |
|                 </select>
 | |
| 
 | |
|                 <div class="w-full flex justify-center items-center mt-3">
 | |
|                     <button type="submit"
 | |
|                         class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500"
 | |
|                         id="addBusinessFormButton">Add
 | |
|                         Business</button>
 | |
|                 </div>
 | |
|             </form>
 | |
|         </div>
 | |
| 
 | |
|         <!-- TO MAKE THE "ADDBUSINESSFORMCONTAINER" VISIBLE WHEN CLICKING ON THE ADD BUSINESS BUTTON -->
 | |
|         <script>
 | |
|             document.addEventListener('DOMContentLoaded', function () {
 | |
|                 const addButton = document.getElementById('addBusinessButton');
 | |
|                 const formContainer = document.getElementById('addBusinessFormContainer');
 | |
|                 const formButton = document.getElementById('addBusinessFormButton');
 | |
| 
 | |
|                 addButton.addEventListener('click', function () {
 | |
|                     formContainer.classList.toggle('hidden');
 | |
| 
 | |
|                     if (!formContainer.classList.contains('hidden')) {
 | |
|                         formContainer.scrollIntoView({ behavior: 'smooth' });
 | |
|                     }
 | |
|                 });
 | |
| 
 | |
|                 formButton.addEventListener('click', function () {
 | |
|                     formContainer.classList.add('hidden');
 | |
|                 });
 | |
|             });
 | |
| 
 | |
|         </script>
 | |
| 
 | |
| 
 | |
|         <!-- TO FETCH AND DISPLAY THE NEW ADDED BUSINESS IN THE BUSINESS SELECT TAG -->
 | |
|         <script>
 | |
|             document.getElementById('addBusinessFormModal').addEventListener('submit', function (event) {
 | |
|                 event.preventDefault(); // Prevent the form from actually submitting
 | |
| 
 | |
|                 const form = this;
 | |
|                 const formData = new FormData(this);
 | |
| 
 | |
|                 fetch("{% url 'save_business_modal' %}", {
 | |
|                     method: "POST",
 | |
|                     body: formData,
 | |
|                 })
 | |
|                     .then(response => response.json())
 | |
|                     .then(data => {
 | |
|                         // console.log('Received JSON data:', data); // Check if data is received
 | |
| 
 | |
|                         form.reset();
 | |
|                         const fileNameSpan = document.getElementById('file-name');
 | |
|                         fileNameSpan.textContent = 'Upload Business Logo';
 | |
| 
 | |
| 
 | |
|                         refreshSelectOptions(data);
 | |
|                     })
 | |
|                     .catch(error => {
 | |
|                         console.error('Error fetching updated options:', error);
 | |
|                     });
 | |
|             });
 | |
| 
 | |
|             function refreshSelectOptions(updatedOptions) {
 | |
|                 const selectElement = document.getElementById('businessSelect');
 | |
| 
 | |
| 
 | |
|                 selectElement.innerHTML = '';
 | |
| 
 | |
|                 // Add a default option
 | |
|                 const defaultOption = document.createElement('option');
 | |
|                 defaultOption.value = '';
 | |
|                 defaultOption.textContent = 'Business Name';
 | |
|                 defaultOption.disabled = true;
 | |
|                 selectElement.appendChild(defaultOption);
 | |
| 
 | |
|                 // Add the new options in reverse order
 | |
|                 for (let i = updatedOptions.length - 1; i >= 0; i--) {
 | |
|                     const business = updatedOptions[i];
 | |
|                     const option = document.createElement('option');
 | |
|                     option.value = business.id;
 | |
|                     option.textContent = business.name;
 | |
|                     selectElement.appendChild(option);
 | |
|                 }
 | |
|             }
 | |
|         </script>
 | |
|     </div>
 | |
| </div>
 | |
| </div>
 | |
| 
 | |
| <!-- POPUP MODAL -->
 | |
| <div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
 | |
|     <div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
 | |
|         <button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
 | |
|             id="closeModalButton">
 | |
|             <i class="fa fa-close"></i>
 | |
|         </button>
 | |
|         <iframe id="popupModalFrame" frameborder="0"></iframe>
 | |
|     </div>
 | |
| </div>
 | |
| 
 | |
| <script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
 | |
| </div>
 | |
| 
 | |
| {% endblock content %} |