YousefKhamis commited on
Commit
822dfb0
·
verified ·
1 Parent(s): 06fac83

هناك مشاكل كثيرة مثل ان السكربت كله لا يعمل و لا يوجد عرض يولد و كل الازرار لا تعمل - Follow Up Deployment

Browse files
Files changed (1) hide show
  1. index.html +50 -8
index.html CHANGED
@@ -4,9 +4,13 @@
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>نظام عروض الأسعار - المصرية للمقاولات الكهروميكانيكية</title>
7
- <script src="https://cdn.tailwindcss.com"></script>
8
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
  <style>
 
 
 
 
10
  @import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;700&display=swap');
11
 
12
  body {
@@ -504,8 +508,11 @@
504
  // Calculate item total
505
  function calculateItemTotal() {
506
  const row = this.closest('tr');
507
- const quantity = parseFloat(row.querySelector('.item-quantity').value) || 0;
508
- const unitPrice = parseFloat(row.querySelector('.item-unit-price').value) || 0;
 
 
 
509
  const total = quantity * unitPrice;
510
 
511
  row.querySelector('.item-total').textContent = total.toFixed(2);
@@ -558,8 +565,20 @@
558
  const validityDays = document.getElementById('validityDays').value || 30;
559
  const notes = document.getElementById('notes').value;
560
 
561
- if (!clientName || !quoteDate || !quoteNumber || items.length === 0) {
562
- alert('الرجاء إدخال جميع البيانات المطلوبة وإضافة بنود للعرض');
 
 
 
 
 
 
 
 
 
 
 
 
563
  return;
564
  }
565
 
@@ -574,7 +593,9 @@
574
  const itemsPerPage = 7;
575
  const pageCount = Math.ceil(items.length / itemsPerPage);
576
 
577
- for (let i = 0; i < pageCount; i++) {
 
 
578
  const pageItems = items.slice(i * itemsPerPage, (i + 1) * itemsPerPage);
579
 
580
  // Clone the quote template
@@ -673,7 +694,7 @@
673
  document.getElementById('previewSection').classList.remove('hidden');
674
  }
675
 
676
- // Format date as DD/MM/YYYY
677
  function formatDate(dateString) {
678
  const date = new Date(dateString);
679
  const day = date.getDate().toString().padStart(2, '0');
@@ -759,6 +780,14 @@
759
  // Load settings
760
  loadSettings();
761
 
 
 
 
 
 
 
 
 
762
  // Set today's date as default
763
  const today = new Date().toISOString().split('T')[0];
764
  document.getElementById('quoteDate').value = today;
@@ -776,7 +805,20 @@
776
  document.getElementById('generateQuoteBtn').addEventListener('click', generateQuote);
777
 
778
  // Preview button
779
- document.getElementById('previewBtn').addEventListener('click', generateQuote);
 
 
 
 
 
 
 
 
 
 
 
 
 
780
 
781
  // Back to input button
782
  document.getElementById('backToInputBtn').addEventListener('click', function() {
 
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>نظام عروض الأسعار - المصرية للمقاولات الكهروميكانيكية</title>
7
+ <script src="https://cdn.tailwindcss.com?plugins=forms"></script>
8
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
  <style>
10
+ :root {
11
+ --primary-color: #1e40af;
12
+ --primary-hover: #1e3fa8;
13
+ }
14
  @import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;700&display=swap');
15
 
16
  body {
 
508
  // Calculate item total
509
  function calculateItemTotal() {
510
  const row = this.closest('tr');
511
+ let quantity = parseFloat(row.querySelector('.item-quantity').value);
512
+ let unitPrice = parseFloat(row.querySelector('.item-unit-price').value);
513
+
514
+ if (isNaN(quantity) || quantity < 0) quantity = 0;
515
+ if (isNaN(unitPrice) || unitPrice < 0) unitPrice = 0;
516
  const total = quantity * unitPrice;
517
 
518
  row.querySelector('.item-total').textContent = total.toFixed(2);
 
565
  const validityDays = document.getElementById('validityDays').value || 30;
566
  const notes = document.getElementById('notes').value;
567
 
568
+ if (!clientName) {
569
+ alert('الرجاء إدخال اسم الجهة');
570
+ return;
571
+ }
572
+ if (!quoteDate) {
573
+ alert('الرجاء إدخال تاريخ العرض');
574
+ return;
575
+ }
576
+ if (!quoteNumber) {
577
+ alert('الرجاء إدخال رقم العرض');
578
+ return;
579
+ }
580
+ if (items.length === 0) {
581
+ alert('الرجاء إضافة بنود للعرض');
582
  return;
583
  }
584
 
 
593
  const itemsPerPage = 7;
594
  const pageCount = Math.ceil(items.length / itemsPerPage);
595
 
596
+ // Always show at least one page even if no items
597
+ const actualPageCount = Math.max(1, pageCount);
598
+ for (let i = 0; i < actualPageCount; i++) {
599
  const pageItems = items.slice(i * itemsPerPage, (i + 1) * itemsPerPage);
600
 
601
  // Clone the quote template
 
694
  document.getElementById('previewSection').classList.remove('hidden');
695
  }
696
 
697
+ // Format date from YYYY-MM-DD to DD/MM/YYYY
698
  function formatDate(dateString) {
699
  const date = new Date(dateString);
700
  const day = date.getDate().toString().padStart(2, '0');
 
780
  // Load settings
781
  loadSettings();
782
 
783
+ // Set default date
784
+ const today = new Date();
785
+ const formattedDate = today.toISOString().split('T')[0];
786
+ document.getElementById('quoteDate').value = formattedDate;
787
+
788
+ // Generate random quote number
789
+ document.getElementById('quoteNumber').value = 'Q-' + Math.floor(1000 + Math.random() * 9000);
790
+
791
  // Set today's date as default
792
  const today = new Date().toISOString().split('T')[0];
793
  document.getElementById('quoteDate').value = today;
 
805
  document.getElementById('generateQuoteBtn').addEventListener('click', generateQuote);
806
 
807
  // Preview button
808
+ document.getElementById('previewBtn').addEventListener('click', function() {
809
+ if (validateForm()) {
810
+ generateQuote();
811
+ }
812
+ });
813
+
814
+ function validateForm() {
815
+ const clientName = document.getElementById('clientName').value;
816
+ if (!clientName) {
817
+ alert('الرجاء إدخال اسم الجهة');
818
+ return false;
819
+ }
820
+ return true;
821
+ }
822
 
823
  // Back to input button
824
  document.getElementById('backToInputBtn').addEventListener('click', function() {