# -*- coding: utf-8 -*- from decimal import Decimal from ..models import AktRabot, AktRabotItem from ..forms import AktRabotForm, AktRabotItemForm from ..filters import AktRabotFilterSet from .. import utils from .base_views import BaseItemsViews from .mixins import AddByInvoiceMethodMixin class AktRabotViews(BaseItemsViews, AddByInvoiceMethodMixin): """Views для актов выполн. работ.""" MODEL = AktRabot # модель документа FORM_CLASS = AktRabotForm # форма документа ITEM_MODEL = AktRabotItem # модель табличной части документа ITEM_FORM_CLASS = AktRabotItemForm # форма табличной части документа ITEM_FORM_PREFIX = 'aktrabot_items' # префикс формы табличной части FILTERSET_CLASS = AktRabotFilterSet # фильтры # по какому полю суммировать табличную часть документа при показе списком LIST_SUM_FIELD = 'aktrabot_items__total_price' # префикс именованных урлов этого типа документов, для передачи в шаблон URL_PREFIX = 'docs_aktrabot_' # именованные урлы операций URL_LIST = 'docs_aktrabot_list' URL_EDIT = 'docs_aktrabot_edit' # пути к шаблонам TEMPLATE_LIST = 'docs/aktrabot/list.html' TEMPLATE_FORM = 'docs/aktrabot/form.html' TEMPLATE_LINKED_DOCS_LIST = 'docs/parts/linked_docs_list.html' # для генерации pdf/xls PDF_TEMPLATE = 'docs/aktrabot/as_pdf.html' XLS_TEMPLATE = 'aktrabot.xls' FILENAME = u'Акт выполненных работ № %s, %s' # без расширения MAYBE_SIGNED = True # --- грамматика для вывода наименований в шаблонах PADEJI = { 'imenit': u'акт выполненных работ', # кто? что? 'rodit': u'акта выполненных работ', # кого? чего? 'dateln': u'акту выполненных работ', # кому? чему? 'vinit': u'акт выполненных работ', # кого? что? 'tvorit': u'актом выполненных работ', # кем? чем? 'predlojn': u'акте выполненных работ', # о ком? о чём? } PADEJI_MNOJ = { 'imenit': u'акты выполненных работ', # кто? что? 'rodit': u'актов выполненных работ', # кого? чего? 'dateln': u'актам выполненных работ', # кому? чему? 'vinit': u'акты выполненных работ', # кого? что? 'tvorit': u'актами выполненных работ', # кем? чем? 'predlojn': u'актах выполненных работ', # о ком? о чём? } def prepare(self, obj, obj_items, export_to=None): """Изменить/подмешать дополнительные поля к документу.""" obj.sum_total_price = Decimal('0.00') obj.sum_total_nds = Decimal('0.00') obj.sum_full_total_price = Decimal('0.00') for item in obj_items: obj.sum_total_price += item.total_price obj.sum_total_nds += utils.calc_total_nds(item) obj.sum_full_total_price += utils.calc_full_total_price(item) s = u'Итого НДС (%s)' % obj.get_nds_value_display() obj.nds_itogo_text = s