Fix payment transaction edit save and Jalali due date display.
Convert dates between Jalali picker values and ISO before API calls, and format due dates with proper Persian calendar tokens and digits.
This commit is contained in:
@@ -235,7 +235,7 @@ import DatePicker from 'vue3-persian-datetime-picker';
|
||||
|
||||
const route = useRoute();
|
||||
const paymentId = route.params.id;
|
||||
const { toPersianDigits, formatJalali } = usePersianDate();
|
||||
const { toPersianDigits, formatJalali, toJalaliPickerValue, toGregorianIso } = usePersianDate();
|
||||
const { showSuccess, showError } = useToast();
|
||||
|
||||
const payment = ref(null);
|
||||
@@ -293,6 +293,8 @@ const fetchPayment = async () => {
|
||||
const handleRecordTransaction = async () => {
|
||||
if (!trxForm.amount) { showError('لطفا مبلغ را وارد کنید'); return; }
|
||||
if (!trxForm.dueDate) { showError('لطفا تاریخ سررسید را وارد کنید'); return; }
|
||||
const dueDate = toGregorianIso(trxForm.dueDate);
|
||||
if (!dueDate) { showError('تاریخ سررسید نامعتبر است'); return; }
|
||||
if (trxForm.status === 'paid' && !trxForm.receiptNumber) {
|
||||
showError('لطفا شماره فیش یا پیگیری را وارد کنید');
|
||||
return;
|
||||
@@ -303,13 +305,14 @@ const handleRecordTransaction = async () => {
|
||||
const payload = {
|
||||
amount: trxForm.amount,
|
||||
status: trxForm.status,
|
||||
dueDate: trxForm.dueDate,
|
||||
dueDate,
|
||||
notes: trxForm.notes || undefined
|
||||
};
|
||||
if (trxForm.status === 'paid') {
|
||||
payload.method = trxForm.method;
|
||||
payload.receiptNumber = trxForm.receiptNumber;
|
||||
if (trxForm.date) payload.date = trxForm.date;
|
||||
const paymentDate = toGregorianIso(trxForm.date);
|
||||
if (paymentDate) payload.date = paymentDate;
|
||||
}
|
||||
|
||||
const res = await paymentApi.recordTransaction(paymentId, payload);
|
||||
@@ -330,8 +333,8 @@ const openEditTransaction = (trx) => {
|
||||
editForm.status = trx.status || (trx.date ? 'paid' : 'pending');
|
||||
editForm.method = trx.method || 'card';
|
||||
editForm.receiptNumber = trx.receiptNumber || '';
|
||||
editForm.dueDate = trx.dueDate || '';
|
||||
editForm.date = trx.date || '';
|
||||
editForm.dueDate = toJalaliPickerValue(trx.dueDate);
|
||||
editForm.date = toJalaliPickerValue(trx.date);
|
||||
editForm.notes = trx.notes || '';
|
||||
showEditModal.value = true;
|
||||
};
|
||||
@@ -345,19 +348,24 @@ const handleUpdateTransaction = async () => {
|
||||
showError('لطفا تاریخ سررسید را وارد کنید');
|
||||
return;
|
||||
}
|
||||
const dueDate = toGregorianIso(editForm.dueDate);
|
||||
if (!dueDate) {
|
||||
showError('تاریخ سررسید نامعتبر است');
|
||||
return;
|
||||
}
|
||||
|
||||
isSubmittingEdit.value = true;
|
||||
try {
|
||||
const payload = {
|
||||
amount: editForm.amount,
|
||||
status: editForm.status,
|
||||
dueDate: editForm.dueDate,
|
||||
dueDate,
|
||||
notes: editForm.notes
|
||||
};
|
||||
if (editForm.status === 'paid') {
|
||||
payload.method = editForm.method;
|
||||
payload.receiptNumber = editForm.receiptNumber;
|
||||
payload.date = editForm.date || undefined;
|
||||
payload.date = toGregorianIso(editForm.date);
|
||||
}
|
||||
|
||||
const res = await paymentApi.updateTransaction(editingTransactionId.value, payload);
|
||||
|
||||
Reference in New Issue
Block a user