Amiali6262 commited on
Commit
26ff154
·
verified ·
1 Parent(s): 4a85540

میخام لیست تسهیلات تعریف شده مشاده بشه و قابلیت ویرایش و حذف داشته باشه - Follow Up Deployment

Browse files
Files changed (2) hide show
  1. index.html +253 -34
  2. prompts.txt +6 -1
index.html CHANGED
@@ -59,17 +59,34 @@
59
 
60
  <div>
61
  <label for="bankName" class="block mb-2 font-medium">نام بانک</label>
62
- <select id="bankName" class="w-full p-2 border rounded focus:ring-2 focus:ring-blue-500" required>
63
- <option value="">انتخاب کنید</option>
64
- <option value="بانک ملی">بانک ملی</option>
65
- <option value="بانک صادرات">بانک صادرات</option>
66
- <option value="بانک ملت">بانک ملت</option>
67
- <option value="بانک تجارت">بانک تجارت</option>
68
- <option value="بانک رفاه">بانک رفاه</option>
69
- <option value="بانک سپه">بانک سپه</option>
70
- <option value="بانک کشاورزی">بانک کشاورزی</option>
71
- <option value="بانک پارسیان">بانک پارسیان</option>
72
- </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  </div>
74
 
75
  <div>
@@ -94,6 +111,11 @@
94
  <input type="number" id="installmentCount" class="w-full p-2 border rounded focus:ring-2 focus:ring-blue-500" required>
95
  </div>
96
 
 
 
 
 
 
97
  <div>
98
  <label for="installmentAmount" class="block mb-2 font-medium">مبلغ هر قسط (ریال)</label>
99
  <input type="text" id="installmentAmount" class="w-full p-2 border rounded focus:ring-2 focus:ring-blue-500 persian-number" required>
@@ -138,6 +160,28 @@
138
  <button id="saveInstallmentsBtn" class="bg-blue-600 text-white px-6 py-2 rounded hover:bg-blue-700 transition hidden">ذخیره اقساط</button>
139
  </div>
140
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  </div>
142
 
143
  <!-- Payment Registration Tab -->
@@ -307,6 +351,7 @@
307
  let loans = [];
308
  let payments = [];
309
 
 
310
  // Switch between tabs
311
  function showTab(tabId) {
312
  document.getElementById('loanTab').classList.add('hidden');
@@ -362,7 +407,8 @@
362
  loanNumber: document.getElementById('loanNumber').value,
363
  bankName: document.getElementById('bankName').value,
364
  loanType: document.getElementById('loanType').value,
365
- loanAmount: parseFloat(document.getElementById('loanAmount').value.replace(/,/g, '')),
 
366
  installmentCount: parseInt(document.getElementById('installmentCount').value),
367
  installmentAmount: parseFloat(document.getElementById('installmentAmount').value.replace(/,/g, '')),
368
  interestRate: parseFloat(document.getElementById('interestRate').value),
@@ -384,43 +430,69 @@
384
  // Clear the form
385
  // this.reset();
386
 
387
- // Show the installments section
388
  document.getElementById('installmentsSection').classList.remove('hidden');
 
389
  });
390
 
 
 
 
 
 
 
 
 
 
 
 
391
  // Generate installments
392
  function generateInstallments() {
393
  const loanNumber = document.getElementById('loanNumber').value;
394
- const installmentCount = parseInt(document.getElementById('installmentCount').value);
395
- const installmentAmount = parseFloat(document.getElementById('installmentAmount').value.replace(/,/g, ''));
396
- const interestRate = parseFloat(document.getElementById('interestRate').value);
397
- const penaltyRate = parseFloat(document.getElementById('penaltyRate').value);
398
-
399
- if (!loanNumber || isNaN(installmentCount) || isNaN(installmentAmount) || isNaN(interestRate)) {
400
- alert('لطفاً اطلاعات تسهیلات را کامل کنید.');
 
 
401
  return;
402
  }
403
-
404
- const loanIndex = loans.findIndex(l => l.loanNumber === loanNumber);
405
- if (loanIndex === -1) {
406
- alert('ابتدا باید تسهیلات را ذخیره کنید.');
 
 
 
 
 
 
407
  return;
408
  }
409
 
410
  const tbody = document.getElementById('installmentsBody');
411
  tbody.innerHTML = '';
412
 
413
- const loanAmount = loans[loanIndex].loanAmount;
414
  const fixedPrincipal = loanAmount / installmentCount;
415
 
 
 
 
 
 
416
  for (let i = 0; i < installmentCount; i++) {
417
  const tr = document.createElement('tr');
418
  tr.className = 'hover:bg-gray-50';
419
 
 
420
  const td1 = document.createElement('td');
421
  td1.className = 'py-2 px-4 border text-center';
422
  td1.textContent = i + 1;
423
 
 
424
  const td2 = document.createElement('td');
425
  td2.className = 'py-2 px-4 border';
426
  const dateInput = document.createElement('input');
@@ -435,25 +507,27 @@
435
  initialValue: false
436
  });
437
 
 
438
  const td3 = document.createElement('td');
439
  td3.className = 'py-2 px-4 border text-left';
440
  td3.textContent = installmentAmount.toLocaleString('fa-IR');
441
 
442
- // Calculate interest
443
- const remainingAmount = loanAmount - (fixedPrincipal * i);
444
- const interest = (remainingAmount * interestRate / 100) / 12;
445
-
446
  const td4 = document.createElement('td');
447
  td4.className = 'py-2 px-4 border text-left';
448
- td4.textContent = Math.round(interest).toLocaleString('fa-IR');
 
 
449
 
 
450
  const td5 = document.createElement('td');
451
  td5.className = 'py-2 px-4 border text-left';
452
- td5.textContent = '۰'; // Default to 0 for penalty
453
 
 
454
  const td6 = document.createElement('td');
455
  td6.className = 'py-2 px-4 border text-left';
456
- td6.textContent = Math.round(installmentAmount - interest).toLocaleString('fa-IR');
457
 
458
  tr.appendChild(td1);
459
  tr.appendChild(td2);
@@ -465,9 +539,141 @@
465
  tbody.appendChild(tr);
466
  }
467
 
468
- document.getElementById('saveInstallmentsBtn').classList.remove('hidden');
 
 
 
 
 
469
  }
470
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
471
  // Save installments
472
  document.getElementById('saveInstallmentsBtn').addEventListener('click', function() {
473
  const loanNumber = document.getElementById('loanNumber').value;
@@ -529,7 +735,20 @@
529
  createdAt: new Date().toISOString()
530
  };
531
 
532
- // Validate payment
 
 
 
 
 
 
 
 
 
 
 
 
 
533
  const calculatedTotal = payment.principalAmount + payment.interestAmount + payment.penaltyAmount;
534
  if (Math.abs(calculatedTotal - payment.paymentAmount) > 1) {
535
  alert(`جمع مبالغ جزء (${calculatedTotal.toLocaleString('fa-IR')}) با مبلغ کل پرداختی (${payment.paymentAmount.toLocaleString('fa-IR')}) مغایرت دارد.`);
 
59
 
60
  <div>
61
  <label for="bankName" class="block mb-2 font-medium">نام بانک</label>
62
+ <div class="flex">
63
+ <select id="bankName" class="w-full p-2 border rounded focus:ring-2 focus:ring-blue-500" required>
64
+ <option value="">انتخاب کنید</option>
65
+ <option value="بانک ملی">بانک ملی</option>
66
+ <option value="بانک صادرات">بانک صادرات</option>
67
+ <option value="بانک ملت">بانک ملت</option>
68
+ <option value="بانک تجارت">بانک تجارت</option>
69
+ <option value="بانک رفاه">بانک رفاه</option>
70
+ <option value="بانک سپه">بانک سپه</option>
71
+ <option value="بانک کشاورزی">بانک کشاورزی</option>
72
+ <option value="بانک پارسیان">بانک پارسیان</option>
73
+ </select>
74
+ <button type="button" onclick="showAddBankModal()" class="mr-2 px-3 bg-blue-100 text-blue-600 rounded hover:bg-blue-200">
75
+ +
76
+ </button>
77
+ </div>
78
+ </div>
79
+
80
+ <!-- Add Bank Modal -->
81
+ <div id="addBankModal" class="hidden fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50">
82
+ <div class="bg-white p-6 rounded-lg shadow-lg w-96">
83
+ <h3 class="text-xl font-semibold mb-4">افزودن بانک جدید</h3>
84
+ <input type="text" id="newBankName" class="w-full p-2 border rounded mb-4" placeholder="نام بانک">
85
+ <div class="flex justify-end">
86
+ <button onclick="hideAddBankModal()" class="px-4 py-2 bg-gray-200 rounded mr-2">انصراف</button>
87
+ <button onclick="addNewBank()" class="px-4 py-2 bg-blue-600 text-white rounded">ذخیره</button>
88
+ </div>
89
+ </div>
90
  </div>
91
 
92
  <div>
 
111
  <input type="number" id="installmentCount" class="w-full p-2 border rounded focus:ring-2 focus:ring-blue-500" required>
112
  </div>
113
 
114
+ <div>
115
+ <label for="loanDate" class="block mb-2 font-medium">تاریخ اخذ تسهیلات</label>
116
+ <input type="text" id="loanDate" class="w-full p-2 border rounded focus:ring-2 focus:ring-blue-500 datepicker" required>
117
+ </div>
118
+
119
  <div>
120
  <label for="installmentAmount" class="block mb-2 font-medium">مبلغ هر قسط (ریال)</label>
121
  <input type="text" id="installmentAmount" class="w-full p-2 border rounded focus:ring-2 focus:ring-blue-500 persian-number" required>
 
160
  <button id="saveInstallmentsBtn" class="bg-blue-600 text-white px-6 py-2 rounded hover:bg-blue-700 transition hidden">ذخیره اقساط</button>
161
  </div>
162
  </div>
163
+
164
+ <!-- Loans List Table -->
165
+ <div class="mt-8">
166
+ <h3 class="text-lg font-semibold mb-4 text-blue-600">لیست تسهیلات تعریف شده</h3>
167
+ <div class="table-container">
168
+ <table id="loansTable" class="min-w-full bg-white border">
169
+ <thead>
170
+ <tr class="bg-gray-200">
171
+ <th class="py-2 px-4 border">ردیف</th>
172
+ <th class="py-2 px-4 border">شماره تسهیلات</th>
173
+ <th class="py-2 px-4 border">بانک</th>
174
+ <th class="py-2 px-4 border">نوع تسهیلات</th>
175
+ <th class="py-2 px-4 border">مبلغ</th>
176
+ <th class="py-2 px-4 border">اقدامات</th>
177
+ </tr>
178
+ </thead>
179
+ <tbody id="loansBody">
180
+ <!-- Loans will be added here -->
181
+ </tbody>
182
+ </table>
183
+ </div>
184
+ </div>
185
  </div>
186
 
187
  <!-- Payment Registration Tab -->
 
351
  let loans = [];
352
  let payments = [];
353
 
354
+
355
  // Switch between tabs
356
  function showTab(tabId) {
357
  document.getElementById('loanTab').classList.add('hidden');
 
407
  loanNumber: document.getElementById('loanNumber').value,
408
  bankName: document.getElementById('bankName').value,
409
  loanType: document.getElementById('loanType').value,
410
+ loanDate: document.getElementById('loanDate').value,
411
+ loanAmount: parseFloat(document.getElementById('loanAmount').value.replace(/,/g, '')) || 0,
412
  installmentCount: parseInt(document.getElementById('installmentCount').value),
413
  installmentAmount: parseFloat(document.getElementById('installmentAmount').value.replace(/,/g, '')),
414
  interestRate: parseFloat(document.getElementById('interestRate').value),
 
430
  // Clear the form
431
  // this.reset();
432
 
433
+ // Show the installments section and refresh loans table
434
  document.getElementById('installmentsSection').classList.remove('hidden');
435
+ refreshLoansTable();
436
  });
437
 
438
+ // Format loan amount input
439
+ function formatLoanAmount(input) {
440
+ let value = input.value.replace(/,/g, '');
441
+ if (!value) return;
442
+
443
+ value = parseInt(value);
444
+ if (isNaN(value)) value = 0;
445
+
446
+ input.value = value.toLocaleString('en-US');
447
+ }
448
+
449
  // Generate installments
450
  function generateInstallments() {
451
  const loanNumber = document.getElementById('loanNumber').value;
452
+ const loanAmountInput = document.getElementById('loanAmount');
453
+ const installmentCountInput = document.getElementById('installmentCount');
454
+ const installmentAmountInput = document.getElementById('installmentAmount');
455
+ const interestRateInput = document.getElementById('interestRate');
456
+
457
+ // Validate required fields have values
458
+ if (!loanNumber || !loanAmountInput.value || !installmentCountInput.value ||
459
+ !installmentAmountInput.value || !interestRateInput.value) {
460
+ alert('لطفاً همه فیلدهای تسهیلات را تکمیل کنید.');
461
  return;
462
  }
463
+
464
+ // Convert to numeric values
465
+ const loanAmount = parseFloat(loanAmountInput.value.replace(/,/g, '')) || 0;
466
+ const installmentCount = parseInt(installmentCountInput.value) || 0;
467
+ const installmentAmount = parseFloat(installmentAmountInput.value.replace(/,/g, '')) || 0;
468
+ const interestRate = parseFloat(interestRateInput.value) || 0;
469
+
470
+ // Additional validation
471
+ if (loanAmount <= 0 || installmentCount <= 0 || installmentAmount <= 0 || interestRate <= 0) {
472
+ alert('مقادیر باید بزرگتر از صفر باشند.');
473
  return;
474
  }
475
 
476
  const tbody = document.getElementById('installmentsBody');
477
  tbody.innerHTML = '';
478
 
 
479
  const fixedPrincipal = loanAmount / installmentCount;
480
 
481
+ // Convert Persian numbers to English for calculations
482
+ function toEnglishNumber(number) {
483
+ return parseFloat(persianJs(number).englishNumber().toString().replace(/,/g, ''));
484
+ }
485
+
486
  for (let i = 0; i < installmentCount; i++) {
487
  const tr = document.createElement('tr');
488
  tr.className = 'hover:bg-gray-50';
489
 
490
+ // Row number
491
  const td1 = document.createElement('td');
492
  td1.className = 'py-2 px-4 border text-center';
493
  td1.textContent = i + 1;
494
 
495
+ // Due date (Persian date picker)
496
  const td2 = document.createElement('td');
497
  td2.className = 'py-2 px-4 border';
498
  const dateInput = document.createElement('input');
 
507
  initialValue: false
508
  });
509
 
510
+ // Installment amount (fixed)
511
  const td3 = document.createElement('td');
512
  td3.className = 'py-2 px-4 border text-left';
513
  td3.textContent = installmentAmount.toLocaleString('fa-IR');
514
 
515
+ // Interest amount
 
 
 
516
  const td4 = document.createElement('td');
517
  td4.className = 'py-2 px-4 border text-left';
518
+ const remainingAmount = loanAmount - (fixedPrincipal * i);
519
+ const interest = Math.round((remainingAmount * interestRate / 100) / 12);
520
+ td4.textContent = interest.toLocaleString('fa-IR');
521
 
522
+ // Penalty amount
523
  const td5 = document.createElement('td');
524
  td5.className = 'py-2 px-4 border text-left';
525
+ td5.textContent = '۰';
526
 
527
+ // Principal amount
528
  const td6 = document.createElement('td');
529
  td6.className = 'py-2 px-4 border text-left';
530
+ td6.textContent = (installmentAmount - interest).toLocaleString('fa-IR');
531
 
532
  tr.appendChild(td1);
533
  tr.appendChild(td2);
 
539
  tbody.appendChild(tr);
540
  }
541
 
542
+ // Show save button if we have installments
543
+ if (installmentCount > 0) {
544
+ document.getElementById('saveInstallmentsBtn').classList.remove('hidden');
545
+ } else {
546
+ document.getElementById('saveInstallmentsBtn').classList.add('hidden');
547
+ }
548
  }
549
 
550
+ // Bank management functions
551
+ function showAddBankModal() {
552
+ document.getElementById('addBankModal').classList.remove('hidden');
553
+ }
554
+
555
+ function hideAddBankModal() {
556
+ document.getElementById('addBankModal').classList.add('hidden');
557
+ document.getElementById('newBankName').value = '';
558
+ }
559
+
560
+ function addNewBank() {
561
+ const bankName = document.getElementById('newBankName').value.trim();
562
+ if (!bankName) {
563
+ alert('لطفاً نام بانک را وارد کنید.');
564
+ return;
565
+ }
566
+
567
+ const select = document.getElementById('bankName');
568
+ const option = document.createElement('option');
569
+ option.value = bankName;
570
+ option.textContent = bankName;
571
+ select.appendChild(option);
572
+ select.value = bankName;
573
+
574
+ hideAddBankModal();
575
+ }
576
+
577
+ // Load loans into the table
578
+ function refreshLoansTable() {
579
+ const tbody = document.getElementById('loansBody');
580
+ tbody.innerHTML = '';
581
+
582
+ loans.forEach((loan, index) => {
583
+ const tr = document.createElement('tr');
584
+ tr.className = 'hover:bg-gray-50';
585
+
586
+ const td1 = document.createElement('td');
587
+ td1.className = 'py-2 px-4 border text-center';
588
+ td1.textContent = index + 1;
589
+
590
+ const td2 = document.createElement('td');
591
+ td2.className = 'py-2 px-4 border text-center';
592
+ td2.textContent = loan.loanNumber;
593
+
594
+ const td3 = document.createElement('td');
595
+ td3.className = 'py-2 px-4 border';
596
+ td3.textContent = loan.bankName;
597
+
598
+ const td4 = document.createElement('td');
599
+ td4.className = 'py-2 px-4 border';
600
+ td4.textContent = loan.loanType;
601
+
602
+ const td5 = document.createElement('td');
603
+ td5.className = 'py-2 px-4 border text-left';
604
+ td5.textContent = loan.loanAmount.toLocaleString('fa-IR');
605
+
606
+ const td6 = document.createElement('td');
607
+ td6.className = 'py-2 px-4 border text-center';
608
+
609
+ const editBtn = document.createElement('button');
610
+ editBtn.className = 'text-blue-600 hover:text-blue-800 ml-2';
611
+ editBtn.innerHTML = 'ویرایش';
612
+ editBtn.addEventListener('click', () => editLoan(index));
613
+
614
+ const deleteBtn = document.createElement('button');
615
+ deleteBtn.className = 'text-red-600 hover:text-red-800';
616
+ deleteBtn.innerHTML = 'حذف';
617
+ deleteBtn.addEventListener('click', () => deleteLoan(index));
618
+
619
+ td6.appendChild(editBtn);
620
+ td6.appendChild(deleteBtn);
621
+
622
+ tr.appendChild(td1);
623
+ tr.appendChild(td2);
624
+ tr.appendChild(td3);
625
+ tr.appendChild(td4);
626
+ tr.appendChild(td5);
627
+ tr.appendChild(td6);
628
+
629
+ tbody.appendChild(tr);
630
+ });
631
+ }
632
+
633
+ // Edit a loan
634
+ function editLoan(index) {
635
+ const loan = loans[index];
636
+
637
+ document.getElementById('loanNumber').value = loan.loanNumber;
638
+ document.getElementById('bankName').value = loan.bankName;
639
+ document.getElementById('loanType').value = loan.loanType;
640
+ document.getElementById('loanAmount').value = loan.loanAmount.toLocaleString('en-US');
641
+ document.getElementById('installmentCount').value = loan.installmentCount;
642
+ document.getElementById('installmentAmount').value = loan.installmentAmount.toLocaleString('en-US');
643
+ document.getElementById('loanDate').value = loan.loanDate;
644
+ document.getElementById('interestRate').value = loan.interestRate;
645
+ document.getElementById('penaltyRate').value = loan.penaltyRate;
646
+
647
+ // Show installments section if it has installments
648
+ if (loan.installments && loan.installments.length > 0) {
649
+ document.getElementById('installmentsSection').classList.remove('hidden');
650
+ document.getElementById('saveInstallmentsBtn').classList.remove('hidden');
651
+
652
+ // TODO: You may want to populate the installments table as well
653
+ }
654
+
655
+ // Scroll to form
656
+ document.getElementById('loanTab').scrollIntoView({behavior: 'smooth'});
657
+ }
658
+
659
+ // Delete a loan
660
+ function deleteLoan(index) {
661
+ if (confirm('آیا از حذف این تسهیلات مطمئن هستید؟')) {
662
+ loans.splice(index, 1);
663
+ refreshLoansTable();
664
+
665
+ // Also refresh payment and report dropdowns if open
666
+ if (!document.getElementById('paymentTab').classList.contains('hidden')) {
667
+ populateLoanNumbers('paymentLoanNumber');
668
+ }
669
+ if (!document.getElementById('reportTab').classList.contains('hidden')) {
670
+ populateLoanNumbers('reportLoanNumber');
671
+ }
672
+
673
+ alert('تسهیلات با موفقیت حذف شد.');
674
+ }
675
+ }
676
+
677
  // Save installments
678
  document.getElementById('saveInstallmentsBtn').addEventListener('click', function() {
679
  const loanNumber = document.getElementById('loanNumber').value;
 
735
  createdAt: new Date().toISOString()
736
  };
737
 
738
+ // When loan form is submitted, show installments section immediately
739
+ document.getElementById('loanForm').addEventListener('submit', function(e) {
740
+ e.preventDefault();
741
+
742
+ // Submit the form...
743
+
744
+ // Show the installments section
745
+ document.getElementById('installmentsSection').classList.remove('hidden');
746
+
747
+ // Generate installments automatically after submit
748
+ generateInstallments();
749
+ });
750
+
751
+ // Validate payment
752
  const calculatedTotal = payment.principalAmount + payment.interestAmount + payment.penaltyAmount;
753
  if (Math.abs(calculatedTotal - payment.paymentAmount) > 1) {
754
  alert(`جمع مبالغ جزء (${calculatedTotal.toLocaleString('fa-IR')}) با مبلغ کل پرداختی (${payment.paymentAmount.toLocaleString('fa-IR')}) مغایرت دارد.`);
prompts.txt CHANGED
@@ -1 +1,6 @@
1
- من یک وب اپلیکیشن میخام که با پایتون نوشته بشه و میخام در اون بتونم تسهیلات بانکی رو تعریف کمک نوع تسهیلات ، مبلغ تسهیلات، تعداد اقساط، مبلغ هر قسط رو دستی وارد کنم ،تاریخ سررسید هر قسط رو مشخص کنم ، درصد سود ، درصد جریمه رو مشخص کنم و به تفکیک بانک و شماره تسهیلات ثبت کنم بعد میخام جدول پرداخت رو داشته باشم و بتونم هر پرداخت مربوط به هر شماهر تسهیلات رو با تاریخ و مبلغ پرداخت ثبت کنم و همچین مشخص کنم هر پرداخت که انجام شده چقدرش برای اصل تسهیلات برداشت شده چقدر برای سود تسهیلات و چقدر برای جریمه . میخام اینها رو به صورت دستی ثبت کنم در قدم بعدی میخام طی چند روش محاسبات سیستمی انجام بدم و بدونم بانک مبالغ برداشت شده به درستی به تفکیک اصل ، سود و جریمه برداشته یا نه و مغایرتها رو گزارش بگیرم معمولا بانکها از چند روش استفاده می کنند روش اول : از هر پرداخت به نسبت مساوی از اصل ، سود و جریمه برداشت میکنن روش دوم : در هر پرداخت ابتدا سود و جرایم را برداشت میکنن و سپس از اصل وام میخام تمامی کپشن ها به صورت فارسی باشه فیلدهای دارای تاریخ به صورت تقویم شمسی باشه مبالغ به صورت 3 رقم جدا کننده داشته باشه
 
 
 
 
 
 
1
+ من یک وب اپلیکیشن میخام که با پایتون نوشته بشه و میخام در اون بتونم تسهیلات بانکی رو تعریف کمک نوع تسهیلات ، مبلغ تسهیلات، تعداد اقساط، مبلغ هر قسط رو دستی وارد کنم ،تاریخ سررسید هر قسط رو مشخص کنم ، درصد سود ، درصد جریمه رو مشخص کنم و به تفکیک بانک و شماره تسهیلات ثبت کنم بعد میخام جدول پرداخت رو داشته باشم و بتونم هر پرداخت مربوط به هر شماهر تسهیلات رو با تاریخ و مبلغ پرداخت ثبت کنم و همچین مشخص کنم هر پرداخت که انجام شده چقدرش برای اصل تسهیلات برداشت شده چقدر برای سود تسهیلات و چقدر برای جریمه . میخام اینها رو به صورت دستی ثبت کنم در قدم بعدی میخام طی چند روش محاسبات سیستمی انجام بدم و بدونم بانک مبالغ برداشت شده به درستی به تفکیک اصل ، سود و جریمه برداشته یا نه و مغایرتها رو گزارش بگیرم معمولا بانکها از چند روش استفاده می کنند روش اول : از هر پرداخت به نسبت مساوی از اصل ، سود و جریمه برداشت میکنن روش دوم : در هر پرداخت ابتدا سود و جرایم را برداشت میکنن و سپس از اصل وام میخام تمامی کپشن ها به صورت فارسی باشه فیلدهای دارای تاریخ به صورت تقویم شمسی باشه مبالغ به صورت 3 رقم جدا کننده داشته باشه
2
+ در فرم فرم تعریف تسهیلات بانکی مبلغ تسهیلات به صورت 3 رقم جدا کننده داشته باشد . فیلد تاریخ اخذ تسهیلات اضافه شود . نام بانکها قابل تعریف کردن باشد پس از کلیلک دکمه تولید اقساط به تعداد اقساط تعریف شده سطر ایجاد شود و بتوانم به صورت دستی مبلغ اقساط را وارد کنم همچین مشخص کنم هر قسط پرداختی چقدر بابت اصل است و چقدر بابت سود مستتر همچنین تاریخ اخذ تسهیلات به صورت یک تقویم شمسی قابل انتخاب باشد همچنین تاریخ سررسید به صورت یک تقویم شمسی قابل انتخاب باشد
3
+ دکمه تولید اقساط کار نمی کند و فیلد مبلغ تسهیلات به صورت مبلغ نیست و سه رقم سه رقم جدا نمی شود
4
+ دکمه تولید اقساط کار نمی کند
5
+ چرا دکمه تولید اقساط رو کلیلک میکنم هیچ اتفاقی نمیفتد؟
6
+ میخام لیست تسهیلات تعریف شده مشاده بشه و قابلیت ویرایش و حذف داشته باشه