You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
323 lines
11 KiB
323 lines
11 KiB
{# заглушка js #}
|
|
<script type="text/javascript">
|
|
$(document).ready(function() {
|
|
|
|
{# console.log('-----','stab js');#}
|
|
|
|
$('tr.plat_form').formset({
|
|
prefix: '{{ pformset.prefix }}',
|
|
formCssClass: 'plat_dynamic-form'
|
|
});
|
|
$('tr.row_tbl_items').formset({
|
|
prefix: '{{ formset.prefix }}',
|
|
formCssClass: 'dynamic-form'
|
|
});
|
|
|
|
// units
|
|
$('body').on('selectChoice change', '.units input', function(e, choice, autocomplete) {
|
|
var name_input = $(this);
|
|
var code_input = name_input.closest('.row_tbl_items').find('.units_kod input');
|
|
|
|
if (choice) {
|
|
//console.log(choice.data());
|
|
name_input.val(choice.data('name')); // short name
|
|
code_input.val(choice.data('code'));
|
|
name_input.css('color', 'black')
|
|
}
|
|
else {
|
|
//console.log(choice, 'No choice!');
|
|
code_input.val('-');
|
|
name_input.css('color', 'red')
|
|
}
|
|
});
|
|
// country
|
|
$('body').on('selectChoice change', '.country_name input', function(e, choice, autocomplete) {
|
|
var name_input = $(this);
|
|
var code_input = name_input.closest('.row_tbl_items').find('.country_code input');
|
|
|
|
if (choice) {
|
|
//console.log(choice.data());
|
|
code_input.val(choice.data('code'));
|
|
name_input.css('color', 'black')
|
|
}
|
|
else {
|
|
//console.log(choice, 'No choice!');
|
|
code_input.val('-');
|
|
name_input.css('color', 'red')
|
|
}
|
|
});
|
|
|
|
/* проверяем видимость блока */
|
|
var check_vis = function (block){
|
|
if (block.is(":visible")){block.hide();
|
|
} else{block.show()}
|
|
};
|
|
|
|
var add_block = $('.add-client-link'), // блок с кнопкой "Добавить контрагента"
|
|
client_block = $('#id_client'),
|
|
senderBlock = $('#id_sender'),
|
|
receiverBlock = $('#id_receiver');
|
|
|
|
// прячем кнопку добавить контрагента если он уже есть в документе
|
|
if (client_block.val()){
|
|
check_vis(add_block);
|
|
} else {}
|
|
|
|
senderBlock.on('change', function () {
|
|
console.log('change senderBlock');
|
|
add_block = $(this).parent().siblings('.add-client-link');
|
|
check_vis(add_block);
|
|
});
|
|
|
|
receiverBlock.on('change', function () {
|
|
console.log('change receiverBlock');
|
|
add_block = $(this).parent().siblings('.add-client-link');
|
|
check_vis(add_block);
|
|
});
|
|
|
|
// отрабатываем изменение в блоке добавления контрагента
|
|
// как я понимаю основной блок на поиск и вывод "инвойсов" для автодобавления контрагента
|
|
client_block.on('change', function() {
|
|
|
|
add_block = $(this).parent().siblings('.add-client-link');
|
|
check_vis(add_block);
|
|
var client_id = $(this).val();
|
|
|
|
if (client_id) {
|
|
$.get('/my/docs/ajax_get_invoices/' + client_id, function(data) {
|
|
if($('*').is('#id_invoice')) {
|
|
|
|
$.isEmptyObject(data) ? displayInvoiceBlock(false): displayInvoiceBlock(true);
|
|
|
|
var select = $('#id_invoice');
|
|
|
|
if(select.prop) {
|
|
var options = select.prop('options');
|
|
}
|
|
else {
|
|
var options = select.attr('options');
|
|
}
|
|
$('option', select).remove();
|
|
|
|
options[options.length] = new Option('-------', '');
|
|
|
|
$.each(data, function(val, text) {
|
|
options[options.length] = new Option(text, val);
|
|
});
|
|
select.prop('selectedIndex', 0);
|
|
}
|
|
})
|
|
} else {
|
|
displayInvoiceBlock(false);
|
|
// TODO: need confirm delete records
|
|
|
|
confirmChangeDataPromise(getTableInputs()).then(function (answer) {
|
|
if (answer) {
|
|
updateTable();
|
|
}
|
|
}) ;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
// block nds method
|
|
$('#id_nds_value').on('change',function () {
|
|
|
|
console.log($('#id_nds_value').val());
|
|
|
|
if ($('#id_nds_value').val() > 0) {
|
|
$('#nds_method').show();
|
|
$('#blockTotalNds').show();
|
|
|
|
} else {
|
|
$('#nds_method').hide();
|
|
$('#decryption').hide();
|
|
$('#blockTotalNds').hide();
|
|
}
|
|
});
|
|
|
|
|
|
$('#id_invoice').on('change', function() {
|
|
|
|
var invoice_id = $(this).val();
|
|
|
|
//console.log(invoice_id);
|
|
|
|
if (invoice_id) {
|
|
// TODO: needed loader or remade function
|
|
|
|
$.each($('.row_tbl_items'), function(index, item){
|
|
$(item).find('a.delete-row').trigger('click');
|
|
});
|
|
|
|
$.get('/my/docs/ajax_get_tbl_items/' + invoice_id, function(data) {
|
|
//console.log('===================');
|
|
var items = JSON.parse(data);
|
|
//console.log(items);
|
|
|
|
$.each(items, function(index, item){
|
|
var name = item['fields']['name'];
|
|
var units = item['fields']['units'];
|
|
var qty = item['fields']['qty'];
|
|
var price = item['fields']['price'];
|
|
var total_price = item['fields']['total_price'];
|
|
$('#tbl_items a.add-row').trigger('click');
|
|
var $last_row = $('.row_tbl_items:visible').last();
|
|
$last_row.find('.name input').val(name);
|
|
$last_row.find('.units input').val(units);
|
|
$last_row.find('.qty input').val(qty);
|
|
$last_row.find('.price input').val(price);
|
|
$last_row.find('.total_price input').val(total_price);
|
|
// TODO: need ajax function on backend
|
|
$.get('/my/docs/ajax_get_pair/Measure/name/code/' + units + '/', function(data){
|
|
if (data['val']) {
|
|
$last_row.find('.units_kod input').val(data['val']);
|
|
}
|
|
});
|
|
})
|
|
})
|
|
} else {
|
|
updateTable();
|
|
}
|
|
});
|
|
|
|
var toggle_sender = function(client_type) {
|
|
|
|
console.log(client_type);
|
|
|
|
var sender_val = $('input:checkbox[name=' + client_type + '_group]:checked', '#doc-form').val();
|
|
if (sender_val == 'another') {
|
|
$('#' + client_type).show()
|
|
} else {
|
|
$('#' + client_type).hide();
|
|
if ($('#' + client_type + ' span.remove')[0].style.display === 'inline-block') {
|
|
$('#' + client_type + ' span.remove')[0].click();
|
|
}
|
|
|
|
}
|
|
};
|
|
|
|
if (jQuery.contains(document, $('#sender')[0])) {
|
|
$.each(['sender', 'receiver'], function(i, client_type){
|
|
toggle_sender(client_type);
|
|
$('input:checkbox[name=' + client_type + '_group]').change(function(){
|
|
toggle_sender(client_type);
|
|
})
|
|
});
|
|
}
|
|
|
|
|
|
if ($('#id_fixes').is(':checked')){
|
|
$('#fix_block').show();
|
|
} else {
|
|
$('#fix_block').hide();
|
|
}
|
|
|
|
if ($('#id_avance').is(':checked')){
|
|
$('#avance_block').show();
|
|
} else {
|
|
$('#avance_block').hide();
|
|
}
|
|
|
|
$('#id_fixes').change(function(){
|
|
$('#fix_block').toggle();
|
|
$('#id_fix_doc_num').val('1');
|
|
$('#id_fix_doc_date').val('');
|
|
});
|
|
|
|
$('#id_avance').change(function(){
|
|
$('#avance_block').toggle();
|
|
$('#plat_doc_num').val('');
|
|
$('#plat_doc_date').val('');
|
|
});
|
|
|
|
function displayInvoiceBlock(visibly) {
|
|
var invoiceBlock = $('#invoice');
|
|
|
|
if ($('*').has(invoiceBlock)) {
|
|
(visibly) ? invoiceBlock.removeClass('hidden'): invoiceBlock.addClass('hidden');
|
|
}
|
|
|
|
}
|
|
|
|
function clearTableRow(tblItems) {
|
|
$.each(tblItems, function(index, item){
|
|
$(item).find('.name input').val('');
|
|
$(item).find('.units input').val('');
|
|
$(item).find('.qty input').val('');
|
|
$(item).find('.price input').val('');
|
|
$(item).find('.total_price input').val('');
|
|
});
|
|
}
|
|
|
|
function getTableInputs() {
|
|
return $('#tbl_items input:not(:hidden)').toArray();
|
|
}
|
|
|
|
|
|
function deleteTableRow(tblItems) {
|
|
$.each (tblItems, function(index, item){
|
|
$(item).find('a.delete-row').trigger('click');
|
|
});
|
|
}
|
|
|
|
function updateTable() {
|
|
var tblItems = $('.row_tbl_items');
|
|
|
|
if (tblItems.length < 2) {
|
|
clearTableRow(tblItems);
|
|
$('#tbl_items a.add-row').trigger('click');
|
|
}
|
|
|
|
if (tblItems.length === 2) {
|
|
clearTableRow(tblItems);
|
|
}
|
|
|
|
if (tblItems.length > 2) {
|
|
var firstAndSecondTblItems = tblItems.splice(0, 2);
|
|
clearTableRow(firstAndSecondTblItems);
|
|
deleteTableRow(tblItems);
|
|
}
|
|
}
|
|
|
|
// TODO: to common function
|
|
function confirmChangeDataPromise(inputArray) {
|
|
var dlg_msg = $('#dialog-message');
|
|
var emptyInput = true;
|
|
var defer = $.Deferred();
|
|
|
|
for (var i = inputArray.length - 1; i >= 0; --i) {
|
|
|
|
if (inputArray[i].value) {
|
|
emptyInput = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!emptyInput) {
|
|
dlg_msg.dialog({
|
|
title: 'Удалить данные',
|
|
buttons:
|
|
{'Да':
|
|
function(){
|
|
defer.resolve(true);
|
|
$(this).dialog('close');
|
|
}, 'Нет':
|
|
function(){
|
|
defer.resolve(false);
|
|
$(this).dialog('close');
|
|
}
|
|
}
|
|
}).html('Имеются уже заполненные данные, удалить их?');
|
|
dlg_msg.dialog('open');
|
|
|
|
} else {
|
|
defer.resolve(true);
|
|
}
|
|
|
|
return defer.promise();
|
|
}
|
|
|
|
});
|
|
</script>
|
|
|