ALEXANDAR_GEORGIEV

lib_data

Jul 7th, 2022 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 14.80 KB | None | 0 0
  1. from reportlab.lib import colors
  2. from reportlab.platypus import Paragraph, Frame, Table, TableStyle, KeepInFrame, BaseDocTemplate, PageTemplate
  3.  
  4. data_table_a = [        # MAX 45 ROWS per Sheet !!
  5.     ['АКТИВ', '', ''],                                  # Антетка 5 реда
  6.     ['РАЗДЕЛИ, ГРУПИ, СТАТИИ', 'Сума (хил.лв)', ''],    # Антетка
  7.     ['', 'Тек.\nгодина', 'Предх.\nгодина'],             # Антетка
  8.     ['', '', ''],                                       # Антетка
  9.     ['a', '1', '2'],                                    # Антетка
  10.     ['А. Записан, но невнесен капитал', '255', '355'],
  11.     ['Б. Нетекущи активи', '', ''],
  12.     ['I. Нематериални активи', '', ''],
  13.     ['1. Продукти от развойна дейност', '255', '355'],
  14.     ['2. Програмни продукти и други подобни\nправа и активи', '23', f'{9550:_}'.replace('_', ' ')],
  15.     ['', '', ' '],
  16.     ['3. Търговска репутация', '23', f'{9550:_}'.replace('_', ' ')],
  17.     ['4. Предоставени аванси и нематериални\nактиви в процес на изграждане', '23', f'{9550:_}'.replace('_', ' ')],
  18.     ['', '', ''],
  19.     ['Общо за група I:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  20.     ['II. Дълготрайни материални активи', '', ''],
  21.     ['1. Земи и сгради, в т.ч.:', '255', '355'],
  22.     ['       - земи', '255', '355'],
  23.     ['       - сгради', '255', '355'],
  24.     ['2. Машини, производствено оборудване и апаратура', '23', f'{9550:_}'.replace('_', ' ')],
  25.     ['', '', ' '],
  26.     ['3. Съоръжения и други', '23', f'{9550:_}'.replace('_', ' ')],
  27.     ['4. Предоставени аванси и дълготрайни материални\nактиви в процес на изграждане', '23', f'{9550:_}'.replace('_', ' ')],
  28.     ['', '', ''],
  29.     ['Общо за група II:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  30.     ['III. Дългосрочни финансови активи', '', ''],
  31.     ['1. Акции и дялове в предприятия от групата', '255', '355'],
  32.     ['2. Предоставени заеми на предприятия от групата', '23', f'{9550:_}'.replace('_', ' ')],
  33.     ['', '', ' '],
  34.     ['3. Акции и дялове в асоциирани и смесени предприятия', '23', f'{9550:_}'.replace('_', ' ')],
  35.     ['4. Предоставени заеми, свързани с асоциирани и\nсмесени предприятия', '23', f'{9550:_}'.replace('_', ' ')],
  36.     ['', '', ''],
  37.     ['5. Дългосрочни инвестиции (инвестиционни имоти)', '255', '355'],
  38.     ['6. Други инвестиции', '255', '355'],
  39.     ['7. Изкупени собствени акции', '255', '355'],
  40.     ['- с ном. стойност: ..... хил.лв.', 'x', 'x'],
  41.     ['Общо за група III:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  42.     ['IV. Отсрочени данъци', '223', '45'],
  43.     ['Общо за раздел Б:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  44.     ['В. Текущи активи', '', ''],     # Balance_1
  45.     ['I. Материални запаси', '', ''],
  46.     ['1. Суровини и материали', '255', '355'],
  47.     ['2. Незавършено производство', '23', f'{9550:_}'.replace('_', ' ')],
  48.     ['3. Продукция и стоки, в т.ч.:', '23', f'{9550:_}'.replace('_', ' ')],
  49.     ['       - продукция', '255', '355'],
  50.     ['       - стоки', '255', '355'],
  51.     ['4. Предоставени аванси', '23', f'{9550:_}'.replace('_', ' ')],
  52.     ['Общо за група I:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  53.     ['II. Взземания', '', ''],
  54.     ['1. Вземания от клиенти и доставчици, в т.ч.:', '255', '355'],
  55.     ['       - над 1 година', '255', '355'],
  56.     ['2. Вземания от предприятия от група, в т.ч.:', '23', f'{9550:_}'.replace('_', ' ')],
  57.     ['       - над 1 година', '255', '355'],
  58.     ['3. Вземания, свързани с асоциирани и смесени предприятия, в т.ч.:', '23', f'{9550:_}'.replace('_', ' ')],
  59.     ['       - над 1 година', '255', '355'],
  60.     ['4. Други вземания, в т.ч.:', '23', f'{9550:_}'.replace('_', ' ')],
  61.     ['       - над 1 година', '255', '355'],
  62.     ['Общо за група II:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  63.     ['III. Инвестиции', '', ''],
  64.     ['1. Акции и дялове в предприятия от групата', '255', '355'],
  65.     ['2. Изкупени собствени акции', '23', f'{9550:_}'.replace('_', ' ')],
  66.     ['- с ном. стойност: ..... хил.лв.', 'x', 'x'],
  67.     ['3. Други инвестиции', '23', f'{9550:_}'.replace('_', ' ')],
  68.     ['Общо за група III:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  69.     ['IV. Парични средства, в т.ч.:', '223', '45'],
  70.     ['       - в брой', '255', '355'],
  71.     ['       - в безсрочни сметки(депозити)', '255', '355'],
  72.     ['Общо за раздел В:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  73.     ['Г. Разходи за бъдещи периоди', '', ''],
  74.     ['СУМА НА АКТИВА', '255', '355'],
  75. ]
  76. list_style_a = TableStyle([
  77.     ('GRID',(0,0),(-1,-1),0.5,colors.blue),
  78.     ('FONT', (0,0),(2,-1),'Times',9),
  79.     ('ALIGN', (0, 0), (2, 4), 'CENTER'),    # Център по X
  80.     ('BACKGROUND', (0, 0), (2, 4), colors.lightgoldenrodyellow),
  81.     ('SPAN', (0, 0), (2, 0)),
  82.     ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),     # Център по Y
  83.     ('SPAN', (1, 1), (2, 1)),
  84.     ('SPAN', (1, 2), (1, 3)),
  85.     ('SPAN', (2, 2), (2, 3)),
  86.     ('SPAN', (0, 1), (0, 3)),
  87.     ('RIGHTPADDING', (0, 5), (2, -1), 3),   # Залепя числото на дясно
  88.     ('ALIGN', (1, 5), (2, -1), 'RIGHT'),
  89.     ('SPAN', (0, 6), (2, 6)),
  90.     ('SPAN', (0, 7), (2, 7)),
  91.     ('BACKGROUND', (0, 6), (2, 7), colors.lightgoldenrodyellow),
  92.     ('SPAN', (0, 9), (0, 10)),
  93.     ('SPAN', (1, 9), (1, 10)),
  94.     ('SPAN', (2, 9), (2, 10)),
  95.     ('SPAN', (0, 12), (0, 13)),
  96.     ('SPAN', (1, 12), (1, 13)),
  97.     ('SPAN', (2, 12), (2, 13)),
  98.     ('ALIGN', (0, 14), (0, 14), 'RIGHT'),    # Център по X
  99.     ('FONT', (0,14),(0,14),'Timesbi',9),
  100.     ('FONT', (1,14),(2,14),'Timesbd',9),
  101.     #('COLWIDTHS', )    #colWidths
  102.     #('ROWWIDTHS', )    #rowWidths
  103.     ])
  104.     # [('LINEABOVE', (0,0), (-1,0), 0.1, colors.green),
  105.     #  ('RIGHTPADDING', (0, 0), (3, -2), 1),
  106.     #  ('TEXTCOLOR', (1,1), (-2,-2), colors.red),
  107.     #  #('GRID', (1, 1), (-2, -2), 0.25, colors.red),
  108.     #  ('BOX', (0, 0),(-1, -1), 0.1, colors.blue, None, (2,2,1)),
  109.     #  ('INNERGRID', (0,0), (-1,-1), 0.25, colors.blue),
  110.     #  #('RIGHTPADDING', (1, 5), (2, 5), 1),
  111.     #  ('BACKGROUND', (0, 0), (2, 4), colors.lightgrey),   # (col, row), (col, row) от колона 0 до 2 от ред 1 до ред 2
  112.     #  #('NOSPLIT', (0, 0), (0, 0))]
  113.     #  # ('ROUNDEDCORNERS', [None, None, None, None])]; ('ROUNDEDCORNERS', [5, 10, 20, 30]) радиуси на дъгите
  114.     #  # ('spitfirst'),     # за 1-ви ред само
  115.     #  # ('spitlast'),]     # за последен ред само
  116.     #  # ('FONT', (0,1),(len(topiclist)-1,1),'Helvetica-Bold',12),
  117.     #  # ('FONTSIZE', (0,1),(-1,-1), 10),
  118.     # # LEFTPADDING             - takes an integer, defaults to 6.
  119.     # ('RIGHTPADDING', (1, 8), (2, -1), 1),          # - takes an integer, defaults to 6.
  120.     # ('BOTTOMPADDING', (0, 4), (2, -1), 0)]        #  - takes an integer, defaults to 3.
  121.     # # TOPPADDING              - takes an integer, defaults to 3.
  122.     # # ROWBACKGROUNDS          - takes a list of colors to be used cyclically.
  123.     # # COLBACKGROUNDS          - takes a list of colors to be used cyclically.
  124.     # # VALIGN                  - takes one of TOP, MIDDLE or the default BOTTOM
  125.     # # LEADING                 - takes leading in points.
  126.     # Title
  127.     # ('LEFTPADDING', (0, 0), (1, 0), 0),
  128.     # ('RIGHTPADDING', (0, 0), (1, 0), 0),
  129.     # ('VALIGN', (0, 0), (1, 0), 'TOP'),
  130.     # ('ALIGN', (0, 0), (1, 0), 'CENTRE'),
  131.     # # DataTable
  132.     # ('ALIGN', (0, 1), (1, -1), 'CENTRE'),
  133.     # ('SIZE', (0, 1), (-1, -1), 7),  # Размер на шрифта
  134.     # ('LEADING', (0, 1), (-1, -1), 8.4), #8.4 допълнително разсточние под текста и клетката
  135.     # ('VALIGN', (0, 1), (-1, -1), 'MIDDLE'),
  136.     # ('TOPPADDING', (0, 1), (-1, -1), 2.6),
  137.     # ('BOTTOMPADDING', (0, 1), (-1, -1), 2.6),
  138.     # ('LINEBELOW', (0, 1), (-1, -1), 0.3, colors.red), # Линия на таблицата само отдолу на редовете
  139. # ПАСИВ
  140. data_table_p = [        # MAX 45 ROWS per Sheet without Odit!!
  141.     ['ПАСИВ', '', ''],                                  # Антетка 5 реда
  142.     ['РАЗДЕЛИ, ГРУПИ, СТАТИИ', 'Сума (хил.лв)', ''],    # Антетка
  143.     ['', 'Тек.\nгодина', 'Предх.\nгодина'],             # Антетка
  144.     ['', '', ''],                                       # Антетка
  145.     ['a', '1', '2'],                                    # Антетка
  146.     ['А. Собствен капитал', '', ''],
  147.     ['I. Записан капитал', '130', '150'],
  148.     ['II. Премии от емисии', '10', '10'],
  149.     ['III. Резерв от последваща оценка', '20', '15'],
  150.     ['IV. Резерви', '', ''],
  151.     ['1. Законови резерви', '255', '355'],
  152.     ['2. Резерв, свързан с изкупени собствени акции', '23', f'{9550:_}'.replace('_', ' ')],
  153.     ['3. Резерв съгласно учредителен акт', '23', f'{9550:_}'.replace('_', ' ')],
  154.     ['4. Други резерви', '23', f'{9550:_}'.replace('_', ' ')],
  155.     ['Общо за група IV:', '23', f'{9550:_}'.replace('_', ' ')],  # ляво, наклонено, bd
  156.     ['V. Натрупана печалба(загуба) от минали години, в т.ч.:', '23', f'{9550:_}'.replace('_', ' ')],  # ляво, наклонено, bd
  157.     ['       - неразпределена печалба', '255', '355'],
  158.     ['       - непокрита загуба', '255', '355'],
  159.     ['VI. Текуща печалба(загуба)', '23', f'{9550:_}'.replace('_', ' ')],
  160.     ['Общо за раздел А:', '23', f'{9550:_}'.replace('_', ' ')],  # ляво, наклонено, bd
  161.     ['Б. Провизии и сходни задължения', '', ''],
  162.     ['1. Провизии за пенсии и други подобни задължения', '255', '355'],
  163.     ['2. Провизии за данъци, в т.ч.:', '23', f'{9550:_}'.replace('_', ' ')],
  164.     ['       - отсрочени данъци', '255', '355'],
  165.     ['3. Други провизии и сходни задължения', '23', f'{9550:_}'.replace('_', ' ')],
  166.     ['Общо за раздел Б:', '23', f'{9550:_}'.replace('_', ' ')],  # ляво, наклонено, bd
  167.     ['В. Задължения', '', ''],  # Balance_1
  168.     ['1. Облигационни заеми, в т.ч.:', '255', '355'],
  169.     ['   - конвертируеми', '255', '355'],
  170.     ['       - до 1 година', '255', '355'],
  171.     ['       - над 1 година', '255', '355'],
  172.     ['2. Задължения към финансови предприятия, в т.ч.:', '255', '355'],
  173.     ['       - до 1 година', '255', '355'],
  174.     ['       - над 1 година', '255', '355'],
  175.     ['3. Получени аванси, в т.ч.:', '255', '355'],
  176.     ['       - до 1 година', '255', '355'],
  177.     ['       - над 1 година', '255', '355'],
  178.     ['4. Задължения към доставчици, в т.ч.:', '255', '355'],
  179.     ['       - до 1 година', '255', '355'],
  180.     ['       - над 1 година', '255', '355'],
  181.     ['5. Задължения по полици, в т.ч.:', '255', '355'],
  182.     ['       - до 1 година', '255', '355'],
  183.     ['       - над 1 година', '255', '355'],
  184.     ['6. Задължения към предприятия от група, в т.ч.:', '255', '355'],
  185.     ['       - до 1 година', '255', '355'],
  186.     ['       - над 1 година', '255', '355'],
  187.     ['7. Задължения, свързани с асоциирани и смесени предприятия, в т.ч.:', '255', '355'],
  188.     ['       - до 1 година', '255', '355'],
  189.     ['       - над 1 година', '255', '355'],
  190.     ['', '', ' '],
  191.     ['8. Други задължения, в т.ч.:', '255', '355'],
  192.     ['       - до 1 година', '255', '355'],
  193.     ['       - над 1 година', '255', '355'],
  194.     ['   - към персонала, в т.ч.:', '255', '355'],
  195.     ['       - до 1 година', '255', '355'],
  196.     ['       - над 1 година', '255', '355'],
  197.     ['   - осигурителни задължения, в т.ч.:', '255', '355'],
  198.     ['       - до 1 година', '255', '355'],
  199.     ['       - над 1 година', '255', '355'],
  200.     ['   - данъчни задължения, в т.ч.:', '255', '355'],
  201.     ['       - до 1 година', '255', '355'],
  202.     ['       - над 1 година', '255', '355'],
  203.     ['Общо за раздел В:', '23', f'{9550:_}'.replace('_', ' ')],    #ляво, наклонено, bd
  204.     ['       - до 1 година', '255', '355'],
  205.     ['       - над 1 година', '255', '355'],
  206.     ['Г. Финансирания и приходи за бъдещи периоди, в т.ч.:', '', ''],
  207.     ['       - финансирания', '255', '355'],
  208.     ['       - приходи за бъдещи периоди', '255', '355'],
  209.     ['СУМА НА ПАСИВА', '255', '355'],
  210. ]
  211.  
  212.  
  213.  
  214. if __name__ == '__main__':
  215.     from reportlab.lib.units import mm
  216.     from balance_2 import top_f, top_m, ta
  217.     from reportlab.lib.pagesizes import A4
  218.  
  219.     count_data_rows = len(data_table_a)     # Брой редове в таблицата
  220.     print(count_data_rows)  # 37
  221.     print(mm)
  222.     y1 = A4[1] - top_m - top_f - count_data_rows * 4 * mm
  223.     print(y1)
  224.     w, h = ta.wrap(0, 0)  # Дава размерите на таблицата
  225.     print(w, ' ', h)  # 240.94488188976382   419.52755905511816
Add Comment
Please, Sign In to add comment