Кирилл

Кирилл

С нами с 15 марта 2023; Место в рейтинге пользователей: #1136
Кирилл
15 марта 2023, 15:12
1
0
Тоже хотел, во-первых, поблагодарить Георгия за форму. Но проблема в том, что я сначала потратил 3 дня, чтобы свою сварганить, а потом только ради прикола решил проверить, есть ли в инете готовая))) Да, такое тоже бывает.
В итоге, что мы имеем. Я тоже решил выложить свой результат.
Моя форма дополнена java-скриптом, который подсчитывает общую сумму включённых в таблицу товаров. Также несколько насыщеннее оформлена по стилям (CSS), ну, и является адаптивной (тянется как под альбомную, так и под книжную распечатку). В общем, пользуйтесь на здоровье.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Универсальный передаточный документ</title>

    <style>
        /* Общие */
        /*Структура
        str: 1_1 | 1_2 (1_2_1, 1_2_2, 1_2_3)
        str:     2
        str: 3_1 | 3_2
        str:     4
        str: 5_1 | 5_2
        */
        body {margin: 0px; padding: 0px}
        table {border-collapse: collapse;}
        td {border: 0px solid black}
        th {border: 0px solid black}
        .border_a, .border_a td {border: 4px solid black;} /*Бордюр вокруг*/
        .border_r, .str2 td.border_r {border-right: 4px solid black;} /*Бордюр справа*/
        .border_b {border-bottom: 4px solid black;} /*Бордюр снизу*/
        .border_b_lite {border-bottom: 1px solid black;}
        .bold {font-weight: bold;} /*Жирный шрифт*/
        .footnote {font-size: 70%; text-align: center; vertical-align: top;} /*Сноска -- подпись под строкой*/
        .cut_string {border-right: 10px solid white;} /*Усечение подстрочных линий*/
        .small_text {font-size: 70%} /*Мелкий шрифт*/
        .vertical_text {writing-mode: vertical-lr;} /*Вертикальный текст*/

        /* --str1_2-- Столбец правый _ Строка первая: TABLE + DIV _ НОМЕР СЧЕТА ФАКТУРЫ, ИСПРАВЛЕНИЕ. ПРИЛОЖЕНИЕ №1 */
        .str1_2 {display: flex; justify-content: left;} /*Ставим у родительского блока*/
        .str1_2_1 {width: 45%;}
        .str1_2_2 {width: 55%; line-height: 0; text-align: right;} /* Убираем строки */

        /* --str1_2_3-- */
        .str1_2_3 {width: 100%; margin-bottom: 5px;} /*Ставим у родительского блока*/
        .str1_2 th, .str1_2_3 th {text-align: left; font-weight: normal;}
        .str1_2 th {white-space: pre;}

        /* --str2-- */
        .str2 td {border: 1px solid black; text-align: center; font-size: 90%;}
        .str2 th {text-align: left;}


        /* --str3-- */
        .str3 {width: 100%; margin-top: 15px;} /*Ставим у родительского блока*/

        /* --str4-- */
        .str4 {width: 100%;} /*Ставим у родительского блока*/

        /* --str5-- Столбец 1 и 2 */
        .str5 {display: flex; justify-content: left;} /*Ставим у родительского блока*/
        .str5_1 {width: 50%;}
        .str5_2 {width: 50%;} /* Убираем строки */

        /**/

    </style>
    <script type="text/javascript">
        function startsumms(){
            /*summ('sum1count', 'summ1res');*/
            summ('customPrices1','summPrice1');
            summ('customPrices2','summPrice2');
            summ('customPrices3','summPrice3');
            MakePricesFormat();
            /*window.print()*/;
        }

        function summ(fromClass,toId){
            try{
                var amount = 0;
                var tdArr = document.getElementsByClassName(fromClass);

                for(var i =0; i < tdArr.length; i++){
                    var res = tdArr[i].innerHTML.replace(",", ".");
                    var getint = parseFloat(res);
                    if(!isNaN(getint)){ amount = amount + getint; }
                }
                if(isNaN(amount)){amount=0;}
                document.getElementById(toId).innerHTML = amount;
            }
            catch(e){
                document.getElementById(toId).innerHTML = amount.toFixed(2);
            }
        }

        function MakePricesFormat(){
            var tdArr = document.getElementsByClassName("customPrices");

            for(var i =0; i < tdArr.length; i++)
            {
                var getint = parseFloat(tdArr[i].innerHTML.replace(",", "."));
                if(!isNaN(getint))
                {
                    tdArr[i].innerHTML = parseFloat(tdArr[i].innerHTML.replace(",", ".")).toFixed(2);
                }
            }

            var tdArr = document.getElementsByClassName("sum1count");

            for (var i = 0; i < tdArr.length; i++)
            {
                var getint = parseFloat(tdArr[i].innerHTML.replace(",", "."));
                if (!isNaN(getint))
                {
                    tdArr[i].innerHTML = parseFloat(tdArr[i].innerHTML.replace(",", ".")).toFixed(2);
                }
            }
        }

        function number_to_string(_number) {
            var _arr_numbers = new Array();
            _arr_numbers[1] = new Array('', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять', 'десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать');
            _arr_numbers[2] = new Array('', '', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто');
            _arr_numbers[3] = new Array('', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот');
            function number_parser(_num, _desc) {
                var _string = '';
                var _num_hundred = '';
                if (_num.length == 3) {
                    _num_hundred = _num.substr(0, 1);
                    _num = _num.substr(1, 3);
                    _string = _arr_numbers[3][_num_hundred] + ' ';
                }
                if (_num < 20) _string += _arr_numbers[1][parseFloat(_num)] + ' ';
                else {
                    var _first_num = _num.substr(0, 1);
                    var _second_num = _num.substr(1, 2);
                    _string += _arr_numbers[2][_first_num] + ' ' + _arr_numbers[1][_second_num] + ' ';
                }
                switch (_desc){
                    case 0:
                        var _last_num = parseFloat(_num.substr(-1));
                        if (_last_num == 1) _string += 'рубль';
                        else if (_last_num > 1 && _last_num < 5) _string += 'рублей';
                        else _string += 'рублей';
                        break;
                    case 1:
                        var _last_num = parseFloat(_num.substr(-1));
                        if (_last_num == 1) _string += 'тысяча ';
                        else if (_last_num > 1 && _last_num < 5) _string += 'тысяч ';
                        else _string += 'тысяч ';
                        _string = _string.replace('один ', 'одна ');
                        _string = _string.replace('два ', 'две ');
                        break;
                    case 2:
                        var _last_num = parseFloat(_num.substr(-1));
                        if (_last_num == 1) _string += 'миллион ';
                        else if (_last_num > 1 && _last_num < 5) _string += 'миллиона ';
                        else _string += 'миллионов ';
                        break;
                    case 3:
                        var _last_num = parseFloat(_num.substr(-1));
                        if (_last_num == 1) _string += 'миллиард ';
                        else if (_last_num > 1 && _last_num < 5) _string += 'миллиарда ';
                        else _string += 'миллиардов ';
                        break;
                }
                _string = _string.replace('  ', ' ');
                return _string;
            }
            function decimals_parser(_num) {
                var _first_num = _num.substr(0, 1);
                var _second_num = parseFloat(_num.substr(1, 2));
                var _string = ' ' + _first_num + _second_num;
                if (_second_num == 1) _string += ' копейка';
                else if (_second_num > 1 && _second_num < 5) _string += ' копеек';
                else _string += ' копеек';
                return _string;
            }
            if (!_number || _number == 0) return ''
            if (typeof _number !== 'number') {
                _number = _number.replace(',', '.');
                _number = parseFloat(_number);
                if (isNaN(_number)) return ''
            }
            _number = _number.toFixed(2);
            if(_number.indexOf('.') != -1) {
                var _number_arr = _number.split('.');
                var _number = _number_arr[0];
                var _number_decimals = _number_arr[1];
            }
            var _number_length = _number.length;
            var _string = '';
            var _num_parser = '';
            var _count = 0;
            for (var _p = (_number_length - 1); _p >= 0; _p--) {
                var _num_digit = _number.substr(_p, 1);
                _num_parser = _num_digit +  _num_parser;
                if ((_num_parser.length == 3 || _p == 0) && !isNaN(parseFloat(_num_parser))) {
                    _string = number_parser(_num_parser, _count) + _string;
                    _num_parser = '';
                    _count++;
                }
            }
            if (_number_decimals) _string += decimals_parser(_number_decimals);
            return _string;
        }
    </script>

    <script language="javascript">
        window.onload = function(){
            startsumms();
        };
    </script>
</head>
<body onload="startsumms();">
        <table>
            <tr>
                <td colspan="2" class="border_r" style="width: 8%;">
                    <p style="margin-right: 5px;">Универсальный передаточный документ</p>
                    <p>Статус: <span style="border: 3px solid black; padding: 0px 5px;">1</span></p>
                    <p class="small_text">1 — счет-фактура и передаточный документ (акт)</p>
                    <p class="small_text">2 — передаточный документ (акт)</p>
                </td>
                <td colspan="14">
                    <div class="str1_2">
                        <table class="str1_2_1">
                            <tr>
                                <th style="width: 16%;">Счет-фактура №</th>
                                <td style="width: 18%;" class="border_b_lite cut_string"></td>
                                <td style="width: 4%;">от</td>
                                <td style="width: 22%;" class="border_b_lite"></td>
                                <td style="width: 30px">(1)</td>
                            </tr>
                            <tr>
                                <th>Исправление №</th>
                                <td class="border_b_lite cut_string"></td>
                                <td>от</td>
                                <td class="border_b_lite"></td>
                                <td>(1а)</td>
                            </tr>
                        </table>
                        <div class="str1_2_2">
                            <p class="small_text">Приложение №1</p>
                            <p class="small_text">к постановлению Правительства Российской Федерации от 26 декабря 2011 г. N 1137</p>
                            <p class="small_text">(в ред. постановления Правительства РФ от 19 августа 2017 № 981)</p>
                        </div>
                    </div>
                    <table class="str1_2_3">
                        <tr> <!-- 1 -->
                            <td style="width: 15%" class="bold">Продавец</td>
                            <td colspan="6" class="border_b_lite">123</td>
                            <td style="width: 30px">(2)</td>
                        </tr> <!-- 2 -->
                        <tr>
                            <th>Адрес</th>
                            <td colspan="6" class="border_b_lite">123</td>
                            <td>(2а)</td>
                        </tr>
                        <tr> <!-- 3 -->
                            <th>ИНН/КПП продавца</th>
                            <td colspan="6" class="border_b_lite">123</td>
                            <td>(2б)</td>
                        </tr> <!-- 4 -->
                        <tr>
                            <td>Грузоотправитель и его адрес</td>
                            <td colspan="6" class="border_b_lite">123</td>
                            <td>(3)</td>
                        </tr>
                        <tr> <!-- 5 -->
                            <td>Грузополучатель и его адрес</td>
                            <td colspan="6" class="border_b">123</td>
                            <td>(4)</td>
                        </tr>
                        <tr> <!-- 6 -->
                            <td>К платежно-расчетному документу</td>
                            <td style="width: 5%">№</td>
                            <td style="width: 5%" class="border_b"></td>
                            <td style="width: 5%">от</td>
                            <td colspan="3" class="border_b"></td>
                            <td>(5)</td>
                        </tr>
                        <tr> <!-- 7 -->
                            <td>Документ об отгрузке</td>
                            <td>№ п/п</td>
                            <td class="border_b_lite"></td>
                            <td>№</td>
                            <td style="width: 5%" class="border_b_lite"></td>
                            <td style="width: 5%">от</td>
                            <td class="border_b_lite"></td>
                            <td>(5а)</td>
                        </tr>
                        <tr> <!-- 8 -->
                            <td class="bold">Покупатель</td>
                            <td colspan="6" class="border_b_lite">123</td>
                            <td>(6)</td>
                        </tr>
                        <tr> <!-- 9 -->
                            <td>Адрес</td>
                            <td colspan="6" class="border_b_lite">123</td>
                            <td>(6а)</td>
                        </tr>
                        <tr> <!-- 10 -->
                            <td>ИНН/КПП покупателя</td>
                            <td colspan="6" class="border_b_lite">123</td>
                            <td>(6б)</td>
                        </tr>
                        <tr> <!-- 11 -->
                            <td>Валюта: наименование, код</td>
                            <td colspan="6" class="border_b_lite">Российский рубль, 643</td>
                            <td>(7)</td>
                        </tr>
                        <tr> <!-- 12 -->
                            <td colspan="5">Идентификатор государственного контракта, договора (соглашения) (при наличии)</td>
                            <td colspan="2" class="border_b_lite"></td>
                            <td>(8)</td>
                        </tr>
                    </table>

                </td>
            </tr>
                    <!--table class="str2"-->
                        <tr class="border_a str2"> <!-- 1 -->
                            <td rowspan="2" style="width: 3%">№<br />п/п</td>
                            <td rowspan="2" class="border_r" style="width: 5%">Код товара/ работ, услуг</td>
                            <td rowspan="2">Наименование товара (описание выполненных работ, оказанных услуг), имущественного права</td>
                            <td rowspan="2">Код вида товара</td>
                            <td colspan="2">Единица измерения</td>
                            <td rowspan="2" style="height: 150px;" class="vertical_text">Количество (объем)</td>
                            <td rowspan="2">Цена (тариф) за единицу измерения</td>
                            <td rowspan="2" style="height: 150px;" class="vertical_text">Стоимость товаров (работ, услуг), имущественных прав без налога – всего </td>
                            <td rowspan="2">В том числе сумма акциза</td>
                            <td rowspan="2">Налоговая ставка</td>
                            <td rowspan="2" style="height: 150px;" class="vertical_text">Сумма налога, предъявляемая покупателю</td>
                            <td rowspan="2" style="height: 150px;" class="vertical_text">Стоимость товаров (работ, услуг), имущественных прав с налогом – всего</td>
                            <td colspan="2">Страна происхождения товара</td>
                            <td rowspan="2" style="height: 150px;" class="vertical_text">Регистрационный номер таможенной декларации</td>
                        </tr>
                        <tr class="border_a str2"> <!-- 2 -->
                            <td>Код</td>
                            <td>Условное обозначение (национальное)</td>
                            <td>Цифровой код</td>
                            <td>Краткое наименование</td>
                        </tr>
                        <tr class="str2"> <!-- 3 -->
                            <td>А</td>
                            <td class="border_r str2">Б</td>
                            <td>1</td>
                            <td>1а</td>
                            <td>2</td>
                            <td>2а</td>
                            <td>3</td>
                            <td>4</td>
                            <td>5</td>
                            <td>6</td>
                            <td>7</td>
                            <td>8</td>
                            <td>9</td>
                            <td>10</td>
                            <td>10а</td>
                            <td>11</td>
                        </tr>
                        <tr netixexp='[%foreach{this.Items;1;49}%]' class="str2"> <!-- 4 -->
                            <td>123</td>
                            <td class="border_r">123</td>
                            <td style="text-align: left;">123</td>
                            <td></td>
                            <td>321</td>
                            <td>321</td>
                            <td>321</td>
                            <td>321</td>
                            <td class="customPrices1">321</td>
                            <td></td>
                            <td>321</td><!---->
                            <td class="customPrices2">321</td>
                            <td class="customPrices3">321</td>
                            <td></td>
                            <td></td>
                            <td>321</td>
                        </tr>
                        <tr class="border_a str2"> <!-- 5 -->
                            <td></td>
                            <td class="border_r"></td>
                            <th colspan="6">Всего к оплате:</th>
                            <td id='summPrice1'>0,00</td>
                            <td colspan="2">X</td>
                            <td id='summPrice2'>0,00</td>
                            <td id='summPrice3'>0,00</td>
                            <td></td>
                            <td></td>
                            <td></td>
                    <!--/table-->
            </tr>
            <tr>
                <td colspan="2" class="border_r"><p>Документ составлен на <span style="border-bottom: 3px solid black; padding: 0px 5px;">3</span> листах</p></td>
                <td colspan="14">
                    <table class="str3">
                        <tr>
                            <td style="width: 20%">Руководитель организации или иное уполномоченное лицо</td>
                            <td style="width: 8%" class="border_b_lite"></td>
                            <td style="width: 20%" class="border_b_lite"></td>
                            <td style="width: 20%">Главный бухгалтер или иное уполномоченное лицо</td>
                            <td style="width: 8%" class="border_b_lite"></td>
                            <td style="width: 20%" class="border_b_lite"></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td class="footnote cut_string">подпись</td>
                            <td class="footnote">Ф.И.О.</td>
                            <td></td>
                            <td class="footnote cut_string">подпись</td>
                            <td class="footnote">Ф.И.О.</td>
                        </tr>
                        <tr>
                            <td>Индивидуальный предприниматель</td>
                            <td class="border_b cut_string"></td>
                            <td class="border_b cut_string"></td>
                            <td colspan="3" class="border_b"></td>
                        </tr>
                        <tr class="border_b">
                            <td></td>
                            <td class="footnote">подпись</td>
                            <td class="footnote">Ф.И.О.</td>
                            <td colspan="3">(реквизиты свидетельства о государственной регистрации индивидуального предпринимателя)</td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
        <table class="str4">
            <tr>
                <td>Основание передачи (сдачи)/получения (приемки)</td>
                <td class="border_b_lite"></td>
                <td style="width: 30px">[8]</td>
            </tr>
            <tr>
                <td></td>
                <td class="footnote">(договор; доверенность и др.)</td>
                <td></td>
            </tr>
            <tr>
                <td>Данные о транспортировке и грузе</td>
                <td class="border_b"></td>
                <td>[9]</td>
            </tr>
            <tr>
                <td></td>
                <td class="footnote">(транспортная накладная, поручение экспедитору, экспедиторская / складская расписка и др. / масса нетто/бруттно груза, если не приведены ссылки на транспортные документы, содержащие эти сведения)</td>
                <td></td>
            </tr>
        </table>
        <div class="str5">
            <table class="str5_1">
                <tr>
                    <td colspan="4">Товар (груз) передал/услуги, результаты работ, права сдал</td>
                </tr>
                <tr>
                    <td style="width: 30%;" class="border_b_lite cut_string"></td>
                    <td style="width: 30%;" class="border_b_lite cut_string"></td>
                    <td style="width: 35%;" class="border_b_lite"></td>
                    <td style="width: 30px">[10]</td>
                </tr>
                <tr>
                    <td class="footnote cut_string">(должность)</td>
                    <td class="footnote cut_string">(подпись)</td>
                    <td class="footnote">(Ф.И.О.)</td>
                    <td></td>
                </tr>
                <tr>
                    <td>Дата отгрузки, передачи (сдачи)</td>
                    <td colspan="2">"__" ___________ 20__ г.</td>
                    <td>[11]</td>
                </tr>
                <tr>
                    <td colspan="4">Иные сведения об отгрузке</td>
                </tr>
                <tr>
                    <td colspan="3" class="border_b_lite"></td>
                    <td>[12]</td>
                </tr>
                <tr>
                    <td colspan="3" class="footnote">(ссылки на неотъемлемые приложения, сопутствующие документы, иные документы и т.п.)</td>
                    <td></td>
                </tr>
                <tr>
                    <td colspan="4">Ответственный за правильность оформления факта хозяйственной жизни</td>
                </tr>
                <tr>
                    <td class="border_b cut_string"></td>
                    <td class="border_b cut_string"></td>
                    <td class="border_b"></td>
                    <td>[13]</td>
                </tr>
                <tr>
                    <td class="footnote cut_string">(должность)</td>
                    <td class="footnote cut_string">(подпись)</td>
                    <td class="footnote">(Ф.И.О.)</td>
                    <td></td>
                </tr>
                <tr>
                    <td colspan="4">Наименование экономического субъекта — составителя документа (в т.ч. комиссионера/агента)</td>
                </tr>
                <tr>
                    <td colspan="3" class="border_b_lite"></td>
                    <td>[14]</td>
                </tr>
                <tr>
                    <td colspan="4" class="footnote">(может не заполняться при проставлении печати в М.П., может быть указан ИНН/КПП)</td>
                </tr>
                <tr>
                    <td colspan="4">М.П.</td>
                </tr>
            </table>
            <table class="str5_2">
                <tr>
                    <td colspan="4">Товар (груз) получил/услуги, результаты работ, права принял</td>
                </tr>
                <tr>
                    <td style="width: 30%" class="border_b_lite cut_string"></td>
                    <td style="width: 30%" class="border_b_lite cut_string"></td>
                    <td style="width: 40%" class="border_b_lite"></td>
                    <td style="width: 30px">[15]</td>
                </tr>
                <tr>
                    <td class="footnote cut_string">(должность)</td>
                    <td class="footnote cut_string">(подпись)</td>
                    <td class="footnote">(Ф.И.О.)</td>
                    <td></td>
                </tr>
                <tr>
                    <td>Дата отгрузки, передачи (сдачи)</td>
                    <td colspan="2">"__" ___________ 20__ г.</td>
                    <td>[16]</td>
                </tr>
                <tr>
                    <td colspan="4">Иные сведения о получении, приёмке</td>
                </tr>
                <tr>
                    <td colspan="3" class="border_b_lite"></td>
                    <td>[17]</td>
                </tr>
                <tr>
                    <td colspan="3" class="footnote">(информация о наличии/отсутствии претензий, ссылки на неотъемлемые приложения и другие документы и т.п.)</td>
                    <td></td>
                </tr>
                <tr>
                    <td colspan="4">Ответственный за правильность оформления факта хозяйственной жизни</td>
                </tr>
                <tr>
                    <td class="border_b cut_string"></td>
                    <td class="border_b cut_string"></td>
                    <td class="border_b"></td>
                    <td>[18]</td>
                </tr>
                <tr>
                    <td class="footnote cut_string">(должность)</td>
                    <td class="footnote cut_string">(подпись)</td>
                    <td class="footnote">(Ф.И.О.)</td>
                    <td></td>
                </tr>
                <tr>
                    <td colspan="4">Наименование экономического субъекта — составителя документа</td>
                </tr>
                <tr>
                    <td colspan="3" class="border_b_lite"></td>
                    <td>[19]</td>
                </tr>
                <tr>
                    <td colspan="4" class="footnote">(может не заполняться при проставлении печати в М.П., может быть указан ИНН/КПП)</td>
                </tr>
                <tr>
                    <td colspan="4">М.П.</td>
                </tr>
            </table>
        </div>
</body>
</html>