fix(e-taxes): stop Loading Data spinner sticking over progress bar; surface list load buttons; client + send_sales_api updates; az locale
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
cc3621dc8b
commit
9b6b746793
|
|
@ -19,7 +19,11 @@ frappe.listview_settings['E-Taxes Customers'] = {
|
|||
check_and_process_token_customers(function() {
|
||||
show_invoice_filter_dialog_customers();
|
||||
});
|
||||
});
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.page.add_inner_button(__('Open Settings'), function() {
|
||||
frappe.set_route('Form', 'E-Taxes Settings');
|
||||
}, __('E-Taxes'));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -819,13 +823,14 @@ function process_invoices_for_customers_with_progress(invoices, token, processed
|
|||
if (currentIndex >= invoices.length) {
|
||||
cleanup_customers_loading_state();
|
||||
|
||||
// Показываем итоговый результат
|
||||
frappe.msgprint({
|
||||
title: __('Customers Loaded Successfully'),
|
||||
indicator: 'green',
|
||||
// Показываем итоговый результат через тост (не msgprint): frappe.show_progress
|
||||
// и frappe.msgprint — два пересекающихся Bootstrap-модала; показ msgprint сразу
|
||||
// после hide_progress оставляет висящий .modal-backdrop и блокирует страницу.
|
||||
frappe.show_alert({
|
||||
message: __('Created {0} customers and {1} suppliers. Total invoices processed: {2}',
|
||||
[processedCount, 0, invoices.length]) // suppliers считается на сервере
|
||||
});
|
||||
[processedCount, 0, invoices.length]), // suppliers считается на сервере
|
||||
indicator: 'green'
|
||||
}, 10);
|
||||
|
||||
// ИСПРАВЛЕНО: Обновляем список с задержкой для уверенности в очистке состояния
|
||||
setTimeout(function() {
|
||||
|
|
|
|||
|
|
@ -18,7 +18,11 @@ frappe.listview_settings['E-Taxes Item'] = {
|
|||
check_and_process_token_items(function() {
|
||||
show_items_filter_dialog();
|
||||
});
|
||||
});
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.page.add_inner_button(__('Open Settings'), function() {
|
||||
frappe.set_route('Form', 'E-Taxes Settings');
|
||||
}, __('E-Taxes'));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -860,11 +864,13 @@ function process_invoices_for_items(invoices, token, accumulated_data, current_i
|
|||
message += __(' Updated {0} existing items with new source information.', [accumulated_data.updated_count]);
|
||||
}
|
||||
|
||||
frappe.msgprint({
|
||||
title: __('Items Loaded Successfully'),
|
||||
indicator: 'green',
|
||||
message: message
|
||||
});
|
||||
// Показываем итоговый результат через тост (не msgprint): frappe.show_progress
|
||||
// и frappe.msgprint — два пересекающихся Bootstrap-модала; показ msgprint сразу
|
||||
// после hide_progress оставляет висящий .modal-backdrop и блокирует страницу.
|
||||
frappe.show_alert({
|
||||
message: message,
|
||||
indicator: 'green'
|
||||
}, 10);
|
||||
|
||||
// ИСПРАВЛЕНО: Refresh list с задержкой для уверенности в очистке состояния
|
||||
setTimeout(function() {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,11 @@ frappe.listview_settings['E-Taxes Suppliers'] = {
|
|||
check_and_process_token_suppliers(function() {
|
||||
show_invoice_filter_dialog_suppliers();
|
||||
});
|
||||
});
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.page.add_inner_button(__('Open Settings'), function() {
|
||||
frappe.set_route('Form', 'E-Taxes Settings');
|
||||
}, __('E-Taxes'));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -819,13 +823,14 @@ function process_invoices_for_suppliers_with_progress(invoices, token, processed
|
|||
if (currentIndex >= invoices.length) {
|
||||
cleanup_suppliers_loading_state();
|
||||
|
||||
// Показываем итоговый результат
|
||||
frappe.msgprint({
|
||||
title: __('Suppliers Loaded Successfully'),
|
||||
indicator: 'green',
|
||||
// Показываем итоговый результат через тост (не msgprint): frappe.show_progress
|
||||
// и frappe.msgprint — два пересекающихся Bootstrap-модала; показ msgprint сразу
|
||||
// после hide_progress оставляет висящий .modal-backdrop и блокирует страницу.
|
||||
frappe.show_alert({
|
||||
message: __('Created {0} suppliers and {1} customers. Total invoices processed: {2}',
|
||||
[processedCount, 0, invoices.length]) // customers считается на сервере
|
||||
});
|
||||
[processedCount, 0, invoices.length]), // customers считается на сервере
|
||||
indicator: 'green'
|
||||
}, 10);
|
||||
|
||||
// ИСПРАВЛЕНО: Обновляем список с задержкой для уверенности в очистке состояния
|
||||
setTimeout(function() {
|
||||
|
|
|
|||
|
|
@ -18,7 +18,11 @@ frappe.listview_settings['E-Taxes Unit'] = {
|
|||
check_and_process_token_units(function() {
|
||||
show_units_filter_dialog();
|
||||
});
|
||||
});
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.page.add_inner_button(__('Open Settings'), function() {
|
||||
frappe.set_route('Form', 'E-Taxes Settings');
|
||||
}, __('E-Taxes'));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -797,13 +801,15 @@ function process_invoices_for_units(invoices, token, accumulated_data, current_i
|
|||
const outboxText = accumulated_data.outbox_count ?
|
||||
__(' and {0} sales invoices', [accumulated_data.outbox_count]) : '';
|
||||
|
||||
frappe.msgprint({
|
||||
title: __('Units Loaded Successfully'),
|
||||
indicator: 'green',
|
||||
// Показываем итоговый результат через тост (не msgprint): frappe.show_progress
|
||||
// и frappe.msgprint — два пересекающихся Bootstrap-модала; показ msgprint сразу
|
||||
// после hide_progress оставляет висящий .modal-backdrop и блокирует страницу.
|
||||
frappe.show_alert({
|
||||
message: __('Created {0} unique units. Skipped {1} duplicates. Total invoices processed: {2}{3}{4}',
|
||||
[accumulated_data.created_count, accumulated_data.skipped_count,
|
||||
accumulated_data.total_invoices, inboxText, outboxText])
|
||||
});
|
||||
accumulated_data.total_invoices, inboxText, outboxText]),
|
||||
indicator: 'green'
|
||||
}, 10);
|
||||
|
||||
// Refresh list
|
||||
if (cur_list) {
|
||||
|
|
|
|||
|
|
@ -1516,7 +1516,11 @@ frappe.listview_settings['Journal Entry'] = {
|
|||
onload: function(listview) {
|
||||
listview.page.add_inner_button(__('Import VAT Operations from E-Taxes'), function() {
|
||||
VATETaxes.import.showDialog();
|
||||
});
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.page.add_inner_button(__('Open Settings'), function() {
|
||||
frappe.set_route('Form', 'E-Taxes Settings');
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.refresh();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -756,11 +756,15 @@ function add_purchase_act_buttons(frm) {
|
|||
return;
|
||||
}
|
||||
|
||||
// Status: Created, not signed - show sign button
|
||||
// Status: Created, not signed
|
||||
if (frm.doc.etaxes_purchase_send_status === 'Created, not signed') {
|
||||
frm.add_custom_button(__('Sign Act with ASAN Imza'), function() {
|
||||
sign_purchase_act(frm);
|
||||
}, __('E-Taxes Purchase Act'));
|
||||
// TEMPORARILY DISABLED: signing uses the SALES endpoint
|
||||
// (/invoice/sign/withAsanImza), which is wrong for purchase acts.
|
||||
// Acts require a different endpoint and payload. Keep act as draft
|
||||
// only until the correct act-signing endpoint is implemented.
|
||||
// frm.add_custom_button(__('Sign Act with ASAN Imza'), function() {
|
||||
// sign_purchase_act(frm);
|
||||
// }, __('E-Taxes Purchase Act'));
|
||||
|
||||
frm.add_custom_button(__('Cancel Act on E-Taxes'), function() {
|
||||
cancel_act_on_etaxes(frm);
|
||||
|
|
|
|||
|
|
@ -1549,7 +1549,11 @@ frappe.listview_settings['Purchase Order'] = {
|
|||
onload: function(listview) {
|
||||
listview.page.add_inner_button(__('Import from E-Taxes'), function() {
|
||||
ETaxes.import.showDialog();
|
||||
});
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.page.add_inner_button(__('Open Settings'), function() {
|
||||
frappe.set_route('Form', 'E-Taxes Settings');
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.columns.push({
|
||||
type: 'Check',
|
||||
|
|
|
|||
|
|
@ -1584,10 +1584,11 @@ function add_etaxes_buttons(frm) {
|
|||
if (frm.doc.etaxes_send_status === 'Created, not signed') {
|
||||
frm.page.set_indicator(__('Draft Created'), 'orange');
|
||||
|
||||
// TEMPORARILY DISABLED: keep document as draft only for now.
|
||||
// Add button to sign document
|
||||
frm.add_custom_button(__('Sign Document'), function() {
|
||||
sign_document(frm);
|
||||
}, __('E-Taxes'));
|
||||
// frm.add_custom_button(__('Sign Document'), function() {
|
||||
// sign_document(frm);
|
||||
// }, __('E-Taxes'));
|
||||
|
||||
// Add button to view details
|
||||
frm.add_custom_button(__('View Details'), function() {
|
||||
|
|
|
|||
|
|
@ -1602,7 +1602,11 @@ frappe.listview_settings['Sales Order'] = {
|
|||
// ДОБАВЛЕНО: кнопка импорта из E-Taxes для Sales Order
|
||||
listview.page.add_inner_button(__('Import from E-Taxes'), function() {
|
||||
SalesETaxes.import.showDialog();
|
||||
});
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.page.add_inner_button(__('Open Settings'), function() {
|
||||
frappe.set_route('Form', 'E-Taxes Settings');
|
||||
}, __('E-Taxes'));
|
||||
|
||||
listview.columns.push({
|
||||
type: 'Check',
|
||||
|
|
|
|||
|
|
@ -988,6 +988,11 @@ function process_invoices_for_reference_data(invoices, token, accumulated_data,
|
|||
if (current_index === 0) {
|
||||
window.cancelReferenceLoading = false;
|
||||
|
||||
// Спиннер "Loading Data" (фаза вытягивания инвойсов) больше не нужен — убираем
|
||||
// его принудительно ровно в момент появления прогресс-бара, иначе он залипает
|
||||
// поверх и бесконечно крутится (Bootstrap не всегда доигрывает fade-анимацию).
|
||||
hide_loading_dialog_settings();
|
||||
|
||||
// Показываем прогресс-бар для обработки инвойсов
|
||||
frappe.show_progress(__('Processing Reference Data'), 0, invoices.length,
|
||||
__('Processing {0} invoices...', [invoices.length]), null, true);
|
||||
|
|
@ -1988,11 +1993,21 @@ function hide_loading_dialog_settings() {
|
|||
if (loading_dialog_settings) {
|
||||
try {
|
||||
loading_dialog_settings.hide();
|
||||
// Принудительно сносим DOM модалки: если Bootstrap не доиграл fade
|
||||
// (фоновая вкладка, прерванный transitionend), .hide() оставляет окно
|
||||
// висеть — спиннер «крутится» поверх прогресс-бара.
|
||||
if (loading_dialog_settings.$wrapper) {
|
||||
loading_dialog_settings.$wrapper.remove();
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Error hiding loading dialog:', e);
|
||||
}
|
||||
loading_dialog_settings = null;
|
||||
}
|
||||
// Подчищаем залипшую подложку. Безопасно: вызывается до frappe.show_progress,
|
||||
// который вешает свою backdrop заново.
|
||||
$('.modal-backdrop').remove();
|
||||
$('body').removeClass('modal-open').css('padding-right', '');
|
||||
}
|
||||
|
||||
function poll_authentication_status_settings(asan_login_name, bearer_token, callback) {
|
||||
|
|
@ -2318,7 +2333,8 @@ function check_loading_completion(loading_state, frm) {
|
|||
indicator: 'green'
|
||||
}, 3); // Показываем на 3 секунды
|
||||
|
||||
// Небольшая задержка и начинаем обработку
|
||||
// Небольшая задержка и начинаем обработку (прогресс-бар появляется быстро,
|
||||
// спиннер "Loading Data" к этому моменту уже снят).
|
||||
setTimeout(() => {
|
||||
process_invoices_for_reference_data(loading_state.all_invoices, loading_state.token, {
|
||||
items_created: 0,
|
||||
|
|
@ -2336,6 +2352,6 @@ function check_loading_completion(loading_state, frm) {
|
|||
load_customers: loading_state.load_customers,
|
||||
load_suppliers: loading_state.load_suppliers
|
||||
});
|
||||
}, 2000);
|
||||
}, 400);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: Invoice Az VERSION\n"
|
||||
"Report-Msgid-Bugs-To: info@jeyerp.az\n"
|
||||
"POT-Creation-Date: 2026-04-24 18:12+0000\n"
|
||||
"PO-Revision-Date: 2026-04-24 18:12+0000\n"
|
||||
"PO-Revision-Date: 2026-05-25 02:44+0000\n"
|
||||
"Last-Translator: <jeyerp@jeycloud.az>\n"
|
||||
"Language-Team: Azerbaijani\n"
|
||||
"Language: az\n"
|
||||
|
|
@ -17,6 +17,7 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Generated-By: Babel 2.16.0\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/e_taxes_items_list.js:860
|
||||
|
|
@ -177,8 +178,8 @@ msgid ""
|
|||
"action is irreversible. Are you sure?</p>"
|
||||
msgstr ""
|
||||
"<div style=\"color: red; font-weight: bold;\">XƏBƏRDARLIQ! Bu əməliyyat "
|
||||
"bütün uyğunlaşdırılmamış elementlər üçün sistemdə yeni müştərilər "
|
||||
"yaradacaq!</div><p>Bu əməliyyat geri qaytarıla bilməz. Əminsiniz?</p>"
|
||||
"bütün uyğunlaşdırılmamış elementlər üçün sistemdə yeni müştərilər yaradacaq!"
|
||||
"</div><p>Bu əməliyyat geri qaytarıla bilməz. Əminsiniz?</p>"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:122
|
||||
|
|
@ -188,8 +189,8 @@ msgid ""
|
|||
"action is irreversible. Are you sure?</p>"
|
||||
msgstr ""
|
||||
"<div style=\"color: red; font-weight: bold;\">XƏBƏRDARLIQ! Bu əməliyyat "
|
||||
"bütün xəritələnməmiş elementlər üçün sistemdə yeni maddələr "
|
||||
"yaradacaq!</div><p>Bu əməliyyat geri qaytarıla bilməz. Əminsiniz?</p>"
|
||||
"bütün xəritələnməmiş elementlər üçün sistemdə yeni maddələr yaradacaq!</"
|
||||
"div><p>Bu əməliyyat geri qaytarıla bilməz. Əminsiniz?</p>"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:534
|
||||
|
|
@ -228,8 +229,8 @@ msgstr ""
|
|||
#. AI-generated
|
||||
#: invoice_az/client/sales_invoice.js:1631
|
||||
msgid ""
|
||||
"<strong>Warning:</strong> This will permanently remove the invoice from "
|
||||
"E-Taxes system."
|
||||
"<strong>Warning:</strong> This will permanently remove the invoice from E-"
|
||||
"Taxes system."
|
||||
msgstr ""
|
||||
"<strong>Xəbərdarlıq:</strong> Bu, qaiməni E-Taxes sistemindən həmişəlik "
|
||||
"siləcək."
|
||||
|
|
@ -373,22 +374,22 @@ msgstr "Fəaliyyət Adı Təfərrüatı"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:383
|
||||
msgid "Add unmapped customers"
|
||||
msgstr "Xəritələnməmiş müştəriləri əlavə et"
|
||||
msgstr "Uyğunlaşdırılmamış müştəriləri əlavə et"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:152
|
||||
msgid "Add unmapped items"
|
||||
msgstr "Xəritələnməmiş elementləri əlavə et"
|
||||
msgstr "Uyğunlaşdırılmamış elementləri əlavə et"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:564
|
||||
msgid "Add unmapped suppliers"
|
||||
msgstr "Xəritələnməmiş təchizatçıları əlavə edin"
|
||||
msgstr "Uyğunlaşdırılmamış təchizatçıları əlavə edin"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:739
|
||||
msgid "Add unmapped units"
|
||||
msgstr "Xəritələnməmiş vahidləri əlavə et"
|
||||
msgstr "Uyğunlaşdırılmamış vahidləri əlavə et"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:431
|
||||
|
|
@ -398,7 +399,7 @@ msgstr "{0} uyğunlaşdırılmamış müştəri əlavə edildi"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:243
|
||||
msgid "Added {0} unmapped items"
|
||||
msgstr "{0} xəritələnməmiş element əlavə edildi"
|
||||
msgstr "{0} uyğunlaşdırılmamış element əlavə edildi"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:609
|
||||
|
|
@ -549,24 +550,24 @@ msgstr "Tətbiq et"
|
|||
msgid ""
|
||||
"Are you really sure you want to create new UOM units? This cannot be undone."
|
||||
msgstr ""
|
||||
"Yeni UOM vahidləri yaratmaq istədiyinizə əminsiniz? Bu əməliyyat geri "
|
||||
"qaytarıla bilməz."
|
||||
"Yeni ölçü vahidləri yaratmaq istədiyinizdən əminsiniz? Bu əməliyyatı geri "
|
||||
"almaq mümkün deyil."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:356
|
||||
msgid ""
|
||||
"Are you really sure you want to create new customers? This cannot be undone."
|
||||
msgstr ""
|
||||
"Yeni müştərilər yaratmaq istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla"
|
||||
" bilməz."
|
||||
"Yeni müştərilər yaratmaq istədiyinizə əminsiniz? Bu əməliyyat geri "
|
||||
"qaytarıla bilməz."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:125
|
||||
msgid ""
|
||||
"Are you really sure you want to create new items? This cannot be undone."
|
||||
msgstr ""
|
||||
"Yeni elementlər yaratmaq istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla"
|
||||
" bilməz."
|
||||
"Yeni elementlər yaratmaq istədiyinizə əminsiniz? Bu əməliyyat geri "
|
||||
"qaytarıla bilməz."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:537
|
||||
|
|
@ -606,12 +607,12 @@ msgstr "Asan Login"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/asan_login/asan_login.json
|
||||
msgid "Auth Status"
|
||||
msgstr "Autentifikasiya Statusu"
|
||||
msgstr "Təsdiqlənmə Statusu"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/asan_login/asan_login.js:559
|
||||
msgid "Authenticate"
|
||||
msgstr "Doğrulama"
|
||||
msgstr "Təsdiqlənmə"
|
||||
|
||||
#. Option for the 'Auth Status' (Select) field in DocType 'Asan Login'
|
||||
#. AI-generated
|
||||
|
|
@ -624,7 +625,7 @@ msgstr "Təsdiqlənmiş"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/asan_login/asan_login.json
|
||||
msgid "Authentication"
|
||||
msgstr "Autentifikasiya"
|
||||
msgstr "Kimlik təsdiqi"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:464
|
||||
|
|
@ -644,7 +645,7 @@ msgstr "Autentifikasiya"
|
|||
#: invoice_az/client/supplier.js:473
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:2120
|
||||
msgid "Authentication Complete"
|
||||
msgstr "Autentifikasiya Tamamlandı"
|
||||
msgstr "Kimlik təsdiq Tamamlandı"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:304 invoice_az/client/company.js:367
|
||||
|
|
@ -674,7 +675,7 @@ msgstr "Autentifikasiya Tamamlandı"
|
|||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:1881
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:2051
|
||||
msgid "Authentication Error"
|
||||
msgstr "Autentifikasiya xətası"
|
||||
msgstr "Kimlik təsdiq xətası"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:297
|
||||
|
|
@ -701,7 +702,7 @@ msgstr "Kimlik Doğrulaması Tələb Olunur"
|
|||
#: invoice_az/invoice_az/doctype/asan_login/asan_login.js:225
|
||||
#: invoice_az/invoice_az/doctype/asan_login/asan_login.js:676
|
||||
msgid "Authentication Status"
|
||||
msgstr "Autentifikasiya Statusu"
|
||||
msgstr "Kimlik təsdiqi Statusu"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:355
|
||||
|
|
@ -717,7 +718,7 @@ msgstr "Autentifikasiya Statusu"
|
|||
#: invoice_az/client/supplier.js:362
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:2033
|
||||
msgid "Authentication Successful"
|
||||
msgstr "Autentifikasiya uğurlu oldu"
|
||||
msgstr "Kimlik təsdiqi uğurlu oldu"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:327
|
||||
|
|
@ -733,7 +734,7 @@ msgstr "Autentifikasiya uğurlu oldu"
|
|||
#: invoice_az/client/supplier.js:334
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:2007
|
||||
msgid "Authentication Timeout"
|
||||
msgstr "Autentifikasiya Müddətinin Bitməsi"
|
||||
msgstr "Kimlik təsdiqi Müddətinin Bitməsi"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:250
|
||||
|
|
@ -753,7 +754,7 @@ msgstr "Autentifikasiya Müddətinin Bitməsi"
|
|||
#: invoice_az/client/supplier.js:255
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:1817
|
||||
msgid "Authentication canceled. Operation cannot be completed."
|
||||
msgstr "Autentifikasiya ləğv edildi. Əməliyyat tamamlana bilməz."
|
||||
msgstr "Kimlik təsdiqi ləğv edildi. Əməliyyat tamamlana bilməz."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/e_taxes_customers_list.js:761
|
||||
|
|
@ -765,14 +766,14 @@ msgstr "Autentifikasiya ləğv edildi. Əməliyyat tamamlana bilməz."
|
|||
#: invoice_az/client/e_taxes_unit_list.js:725
|
||||
#: invoice_az/client/e_taxes_unit_list.js:883
|
||||
msgid "Authentication cancelled"
|
||||
msgstr "Autentifikasiya ləğv edildi"
|
||||
msgstr "Kimlik təsdiqi ləğv edildi"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:1084
|
||||
msgid "Authentication expired. Please re-authenticate and try again."
|
||||
msgstr ""
|
||||
"Autentifikasiyanın müddəti bitib. Zəhmət olmasa yenidən autentifikasiyadan "
|
||||
"keçin və yenidən cəhd edin."
|
||||
"Kimlik təsdiqi müddəti bitib. Zəhmət olmasa yenidən kimlik təsdiqi keçin və "
|
||||
"yenidən cəhd edin."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:305
|
||||
|
|
@ -788,19 +789,19 @@ msgstr ""
|
|||
#: invoice_az/client/supplier.js:311
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:1882
|
||||
msgid "Authentication request failed"
|
||||
msgstr "Autentifikasiya sorğusu uğursuz oldu"
|
||||
msgstr "Kimlik təsdiq sorğusu uğursuz oldu"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/asan_login/asan_login.js:58
|
||||
#: invoice_az/invoice_az/doctype/asan_login/asan_login.js:657
|
||||
msgid "Authentication request failed."
|
||||
msgstr "Autentifikasiya sorğusu uğursuz oldu."
|
||||
msgstr "Kimlik təsdiq sorğusu uğursuz oldu."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/asan_login/asan_login.js:19
|
||||
msgid "Authentication request sent. Please confirm on your phone."
|
||||
msgstr ""
|
||||
"Autentifikasiya sorğusu göndərildi. Zəhmət olmasa telefonunuzda təsdiqləyin."
|
||||
"Kimlik təsdiq sorğusu göndərildi. Zəhmət olmasa telefonunuzda təsdiqləyin."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/journal_entry.js:961
|
||||
|
|
@ -810,8 +811,8 @@ msgid ""
|
|||
"Authentication token not found. Please complete the authentication process "
|
||||
"in E-Taxes settings."
|
||||
msgstr ""
|
||||
"Autentifikasiya tokeni tapılmadı. Zəhmət olmasa E-Taxes parametrlərində "
|
||||
"autentifikasiya prosesini tamamlayın."
|
||||
"Kimlik təsdiq tokeni tapılmadı. Zəhmət olmasa E-Taxes parametrlərində "
|
||||
"kimlik təsdiq prosesini tamamlayın."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/journal_entry.js:1182
|
||||
|
|
@ -1078,8 +1079,8 @@ msgstr "Ləğv edilir..."
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_vat_operations/e_taxes_vat_operations.py:16
|
||||
msgid ""
|
||||
"Cannot delete or cancel E-Taxes VAT Operations {0} because it is linked with"
|
||||
" Journal Entry {1}"
|
||||
"Cannot delete or cancel E-Taxes VAT Operations {0} because it is linked "
|
||||
"with Journal Entry {1}"
|
||||
msgstr ""
|
||||
"{0} E-Vergilər ƏDV Əməliyyatları silinə və ya ləğv edilə bilməz, çünki {1} "
|
||||
"Jurnal Qeydi ilə əlaqələndirilib"
|
||||
|
|
@ -1336,7 +1337,7 @@ msgstr "Şirkət"
|
|||
#: invoice_az/client/supplier.js:393
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:2069
|
||||
msgid "Completing Authentication"
|
||||
msgstr "Autentifikasiya tamamlanır"
|
||||
msgstr "Kimlik təsdiqi Tamamlanır"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/employee.js:364
|
||||
|
|
@ -1844,48 +1845,48 @@ msgstr "Debet Hesabı"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.json
|
||||
msgid "Default Business Partner Settings"
|
||||
msgstr "Defolt Biznes Tərəfdaş Parametrləri"
|
||||
msgstr "Standart Biznes Tərəfdaş Parametrləri"
|
||||
|
||||
#. Label of the default_customer_group (Link) field in DocType 'E-Taxes
|
||||
#. Settings'
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.json
|
||||
msgid "Default Customer Group"
|
||||
msgstr "Defolt Müştəri Qrupu"
|
||||
msgstr "Standart Müştəri Qrupu"
|
||||
|
||||
#. Label of the default_item_group (Link) field in DocType 'E-Taxes Settings'
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.json
|
||||
msgid "Default Item Group"
|
||||
msgstr "Defolt Məhsul Qrupu"
|
||||
msgstr "Standart Məhsul Qrupu"
|
||||
|
||||
#. Label of the default_item_settings_section (Section Break) field in DocType
|
||||
#. 'E-Taxes Settings'
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.json
|
||||
msgid "Default Item Settings"
|
||||
msgstr "Defolt Məhsul Parametrləri"
|
||||
msgstr "Standart Məhsul Parametrləri"
|
||||
|
||||
#. Label of the default_item_tax_template (Link) field in DocType 'E-Taxes
|
||||
#. Settings'
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.json
|
||||
msgid "Default Item Tax Template"
|
||||
msgstr "Defolt Məhsul Vergi Şablonu"
|
||||
msgstr "Standart Məhsul Vergi Şablonu"
|
||||
|
||||
#. Label of the default_payment_terms (Link) field in DocType 'E-Taxes
|
||||
#. Settings'
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.json
|
||||
msgid "Default Payment Terms"
|
||||
msgstr "Defolt Ödəniş Şərtləri"
|
||||
msgstr "Standart Ödəniş Şərtləri"
|
||||
|
||||
#. Label of the default_supplier_group (Link) field in DocType 'E-Taxes
|
||||
#. Settings'
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.json
|
||||
msgid "Default Supplier Group"
|
||||
msgstr "Defolt Təchizatçı Qrupu"
|
||||
msgstr "Standart Təchizatçı Qrupu"
|
||||
|
||||
#. Label of the default_uom (Link) field in DocType 'E-Taxes Settings'
|
||||
#. AI-generated
|
||||
|
|
@ -2023,8 +2024,8 @@ msgstr "Sənəd Növü"
|
|||
msgid ""
|
||||
"Document contains unsaved changes. Save before performing the operation?"
|
||||
msgstr ""
|
||||
"Sənəddə yadda saxlanılmamış dəyişikliklər var. Əməliyyatı yerinə yetirməzdən"
|
||||
" əvvəl yadda saxlanılsın?"
|
||||
"Sənəddə yadda saxlanılmamış dəyişikliklər var. Əməliyyatı yerinə "
|
||||
"yetirməzdən əvvəl yadda saxlanılsın?"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/journal_entry.js:1491
|
||||
|
|
@ -2155,7 +2156,7 @@ msgstr "E-Taxes ID: {0}"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_sales_outbox/e_taxes_sales_outbox.json
|
||||
msgid "E-Taxes Invoice ID"
|
||||
msgstr "E-Taxes Invoice ID"
|
||||
msgstr "E-Taxes Qaimə nömrəsi"
|
||||
|
||||
#. Name of a DocType
|
||||
#. AI-generated
|
||||
|
|
@ -2354,7 +2355,7 @@ msgstr "E-Taxes ƏDV Əməliyyatları"
|
|||
#: invoice_az/client/sales_invoice.js:1039
|
||||
#: invoice_az/client/sales_order.js:1020
|
||||
msgid "E-Taxes authentication settings not found"
|
||||
msgstr "E-Taxes autentifikasiya parametrləri tapılmadı"
|
||||
msgstr "E-Taxes kimlik təsdiqi parametrləri tapılmadı"
|
||||
|
||||
#. Option for the 'E-Cash Status' (Select) field in DocType 'E-Taxes Cash
|
||||
#. Register'
|
||||
|
|
@ -2448,19 +2449,19 @@ msgstr "Bitmə Tarixi"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/testapi/testapi.js:74
|
||||
msgid "Enter this code in ASAN Sign: {0}"
|
||||
msgstr "Bu kodu ASAN Sign-a daxil edin: {0}"
|
||||
msgstr "Bu kodu ASAN İmza-ya daxil edin: {0}"
|
||||
|
||||
#. Label of the entity_details_oid (Data) field in DocType 'Amas Employees'
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/amas_employees/amas_employees.json
|
||||
msgid "Entity Details OID"
|
||||
msgstr "Entity Details OID"
|
||||
msgstr "Hüquqi Şəxs Məlumatlarının OID-i"
|
||||
|
||||
#. Label of the entity_oid (Data) field in DocType 'Amas Employees'
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/amas_employees/amas_employees.json
|
||||
msgid "Entity OID"
|
||||
msgstr "Entity OID"
|
||||
msgstr "Hüquqi Şəxsin OID"
|
||||
|
||||
#. Option for the 'ƏMAS Status' (Select) field in DocType 'Asan Login'
|
||||
#. AI-generated
|
||||
|
|
@ -2609,7 +2610,7 @@ msgstr "Xəta mesajı"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:727
|
||||
msgid "Error creating UOM units"
|
||||
msgstr "UOM vahidləri yaradılarkən xəta baş verdi"
|
||||
msgstr "Ölçü vahidləri yaradılarkən xəta baş verdi"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:371
|
||||
|
|
@ -2661,7 +2662,7 @@ msgstr "Satış qaimələri yüklənərkən xəta baş verdi"
|
|||
#: invoice_az/client/purchase_order.js:573
|
||||
#: invoice_az/client/sales_invoice.js:592 invoice_az/client/sales_order.js:573
|
||||
msgid "Error log cleared"
|
||||
msgstr "Xəta jurnalı təmizləndi"
|
||||
msgstr "Xəta qeydləri təmizləndi"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/etaxes_common.js:807
|
||||
|
|
@ -2669,7 +2670,7 @@ msgstr "Xəta jurnalı təmizləndi"
|
|||
#: invoice_az/client/purchase_order.js:762
|
||||
#: invoice_az/client/sales_invoice.js:781 invoice_az/client/sales_order.js:762
|
||||
msgid "Error log exported successfully"
|
||||
msgstr "Xəta jurnalı uğurla ixrac edildi"
|
||||
msgstr "Xəta qeydi uğurla ixrac edildi"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:321
|
||||
|
|
@ -2800,7 +2801,7 @@ msgstr "FIN: {0}"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_presented_certificate/e_taxes_presented_certificate.json
|
||||
msgid "FK Doc OID"
|
||||
msgstr "FK Doc OID"
|
||||
msgstr "Əlaqəli Sənədin OID"
|
||||
|
||||
#. Option for the 'Auth Status' (Select) field in DocType 'Asan Login'
|
||||
#. Option for the 'Status' (Select) field in DocType 'E-Taxes Purchase Outbox'
|
||||
|
|
@ -2841,7 +2842,7 @@ msgstr "E-Taxes-də qaimə ləğv edilə bilmədi"
|
|||
#: invoice_az/client/e_taxes_unit_list.js:208
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:1828
|
||||
msgid "Failed to check authentication status"
|
||||
msgstr "Autentifikasiya statusunu yoxlamaq alınmadı"
|
||||
msgstr "Kimlik təsdiqi statusunun yoxlanılması uğursuz oldu"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/purchase_order.js:1079
|
||||
|
|
@ -2909,7 +2910,7 @@ msgstr "ƏMAS-dan bağlantı kəsilə bilmədi"
|
|||
#: invoice_az/client/purchase_order.js:768
|
||||
#: invoice_az/client/sales_invoice.js:787 invoice_az/client/sales_order.js:768
|
||||
msgid "Failed to export error log"
|
||||
msgstr "Xəta jurnalı ixrac edilə bilmədi"
|
||||
msgstr "Xəta qeyd ixrac edilə bilmədi"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/supplier.js:663
|
||||
|
|
@ -2922,7 +2923,7 @@ msgstr "E-Taxes-dən təchizatçı məlumatları alına bilmədi"
|
|||
#: invoice_az/client/e_taxes_suppliers_list.js:883
|
||||
#: invoice_az/client/e_taxes_unit_list.js:875
|
||||
msgid "Failed to get authentication token"
|
||||
msgstr "Autentifikasiya tokeni alınmadı"
|
||||
msgstr "Kimlik təsdiq tokeni alınmadı"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:434
|
||||
|
|
@ -3316,8 +3317,8 @@ msgstr "ID"
|
|||
#. AI-generated
|
||||
#: invoice_az/client/journal_entry.js:1177
|
||||
msgid ""
|
||||
"If checked, Journal Entries will be created in Draft status instead of being"
|
||||
" submitted automatically"
|
||||
"If checked, Journal Entries will be created in Draft status instead of "
|
||||
"being submitted automatically"
|
||||
msgstr ""
|
||||
"Seçilərsə, Jurnal Qeydləri avtomatik təsdiqlənmək əvəzinə Qaralama "
|
||||
"statusunda yaradılacaq"
|
||||
|
|
@ -3325,8 +3326,8 @@ msgstr ""
|
|||
#. AI-generated
|
||||
#: invoice_az/client/journal_entry.js:1184
|
||||
msgid ""
|
||||
"If checked, will automatically create Customer records and mappings for TINs"
|
||||
" not found in the system"
|
||||
"If checked, will automatically create Customer records and mappings for "
|
||||
"TINs not found in the system"
|
||||
msgstr ""
|
||||
"Seçilərsə, sistemdə tapılmayan VÖEN-lər üçün Müştəri qeydləri və "
|
||||
"uyğunlaşdırmalar avtomatik yaradılacaq"
|
||||
|
|
@ -3562,7 +3563,7 @@ msgstr "İmzalanıb"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_item_mapping/e_taxes_item_mapping.json
|
||||
msgid "Is Stock Item"
|
||||
msgstr "Stok Məhsuludur"
|
||||
msgstr "Anbar Məhsuludur"
|
||||
|
||||
#. Label of the is_valid (Data) field in DocType 'Amas Employees'
|
||||
#. AI-generated
|
||||
|
|
@ -3691,7 +3692,7 @@ msgstr "İşin Başlama Tarixi"
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_vat_operations/e_taxes_vat_operations.json
|
||||
msgid "Journal Entry"
|
||||
msgstr "Jurnal qeydi"
|
||||
msgstr "Əməliyyat Qeydi"
|
||||
|
||||
#. Label of the labour_function (Small Text) field in DocType 'Amas Employees'
|
||||
#. AI-generated
|
||||
|
|
@ -4074,7 +4075,7 @@ msgstr "Əl ilə"
|
|||
#: invoice_az/invoice_az/doctype/e_taxes_suppliers/e_taxes_suppliers.json
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_unit/e_taxes_unit.json
|
||||
msgid "Mapped"
|
||||
msgstr "Xəritələnib"
|
||||
msgstr "Əlaqələndirilmiş"
|
||||
|
||||
#. Label of the mapped_customer (Link) field in DocType 'E-Taxes Customers'
|
||||
#. AI-generated
|
||||
|
|
@ -4120,7 +4121,7 @@ msgstr "Uyğunlaşdırılmış ÖV"
|
|||
#: invoice_az/invoice_az/doctype/e_taxes_supplier_mappings/e_taxes_supplier_mappings.json
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_unit_mapping/e_taxes_unit_mapping.json
|
||||
msgid "Mapping Type"
|
||||
msgstr "Xəritələmə Növü"
|
||||
msgstr "Əlaqələndirmə Növü"
|
||||
|
||||
#. Label of the mappings_tab (Tab Break) field in DocType 'E-Taxes Settings'
|
||||
#. AI-generated
|
||||
|
|
@ -5108,8 +5109,8 @@ msgid ""
|
|||
"Please select Act Kind (Agricultural Products Act or Metal Scrap Reception "
|
||||
"Act)"
|
||||
msgstr ""
|
||||
"Zəhmət olmasa Akt Növünü seçin (Kənd Təsərrüfatı Məhsulları Aktı və ya Metal"
|
||||
" Qırıntıları Qəbul Aktı)"
|
||||
"Zəhmət olmasa Akt Növünü seçin (Kənd Təsərrüfatı Məhsulları Aktı və ya "
|
||||
"Metal Qırıntıları Qəbul Aktı)"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/purchase_invoice.js:640
|
||||
|
|
@ -6587,8 +6588,8 @@ msgid ""
|
|||
"This will create a draft act. You will need to sign it with ASAN Imza after "
|
||||
"creation."
|
||||
msgstr ""
|
||||
"Bu, qaralama akt yaradacaq. Yaradıldıqdan sonra onu ASAN İmza ilə imzalamalı"
|
||||
" olacaqsınız."
|
||||
"Bu, qaralama akt yaradacaq. Yaradıldıqdan sonra onu ASAN İmza ilə "
|
||||
"imzalamalı olacaqsınız."
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/purchase_invoice.js:880
|
||||
|
|
@ -6598,18 +6599,17 @@ msgstr "Bu, aktı yekunlaşdıracaq və E-Taxes-ə göndərəcək."
|
|||
#. AI-generated
|
||||
#: invoice_az/invoice_az/doctype/e_taxes_settings/e_taxes_settings.js:969
|
||||
msgid ""
|
||||
"This will load {0} from E-Taxes for the period {1} to "
|
||||
"{2}.<br><br><strong>Process:</strong><br>1. First, all invoices will be "
|
||||
"fetched (may take 1-2 minutes)<br>2. Then each invoice will be processed for"
|
||||
" reference data<br><br><strong>This operation may take several minutes "
|
||||
"This will load {0} from E-Taxes for the period {1} to {2}."
|
||||
"<br><br><strong>Process:</strong><br>1. First, all invoices will be fetched "
|
||||
"(may take 1-2 minutes)<br>2. Then each invoice will be processed for "
|
||||
"reference data<br><br><strong>This operation may take several minutes "
|
||||
"depending on the number of invoices.</strong><br><br>Continue?"
|
||||
msgstr ""
|
||||
"Bu, {1} - {2} dövrü üçün E-Taxes-dən {0} "
|
||||
"yükləyəcək.<br><br><strong>Proses:</strong><br>1. Əvvəlcə bütün qaimələr "
|
||||
"çəkiləcək (1-2 dəqiqə çəkə bilər)<br>2. Sonra hər bir qaimə istinad "
|
||||
"məlumatları üçün emal ediləcək<br><br><strong>Bu əməliyyat qaimələrin "
|
||||
"sayından asılı olaraq bir neçə dəqiqə çəkə bilər.</strong><br><br>Davam "
|
||||
"edilsin?"
|
||||
"Bu, {1} - {2} dövrü üçün E-Taxes-dən {0} yükləyəcək.<br><br><strong>Proses:"
|
||||
"</strong><br>1. Əvvəlcə bütün qaimələr çəkiləcək (1-2 dəqiqə çəkə "
|
||||
"bilər)<br>2. Sonra hər bir qaimə istinad məlumatları üçün emal "
|
||||
"ediləcək<br><br><strong>Bu əməliyyat qaimələrin sayından asılı olaraq bir "
|
||||
"neçə dəqiqə çəkə bilər.</strong><br><br>Davam edilsin?"
|
||||
|
||||
#. AI-generated
|
||||
#: invoice_az/client/company.js:272
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ def validate_invoice_for_sending(doc):
|
|||
if not customer.tax_id:
|
||||
return {
|
||||
"valid": False,
|
||||
"message": f"Customer '{doc.customer}' does not have a TIN (tax_id). Please update customer details."
|
||||
"message": f"Customer '{doc.customer}' does not have a TIN. Please update customer details."
|
||||
}
|
||||
|
||||
# Validate items
|
||||
|
|
@ -357,7 +357,7 @@ def get_customer_objects(sales_invoice_name):
|
|||
if not customer.tax_id:
|
||||
return {
|
||||
"success": False,
|
||||
"message": f"Customer '{doc.customer}' does not have a TIN (tax_id). Please update customer details."
|
||||
"message": f"Customer '{doc.customer}' does not have a TIN. Please update customer details."
|
||||
}
|
||||
|
||||
# Get authentication token
|
||||
|
|
|
|||
Loading…
Reference in New Issue