@ -73,64 +73,64 @@ last_quarter_start, last_quarter_end = last_quarter(today)
# --- варианты фильтрации для разных полей
doc_date_choices = {
' ' : ( u ' Всё время ' , lambda qs , name : qs . all ( ) ) ,
1 : ( u ' Этот месяц ' , lambda qs , name : qs . filter ( * * {
' ' : ( ' Всё время ' , lambda qs , name : qs . all ( ) ) ,
1 : ( ' Этот месяц ' , lambda qs , name : qs . filter ( * * {
' %s __year ' % name : datetime . datetime . now ( ) . year ,
' %s __month ' % name : datetime . datetime . now ( ) . month
} ) ) ,
2 : ( u ' Прошлый месяц ' , lambda qs , name : qs . filter ( * * {
2 : ( ' Прошлый месяц ' , lambda qs , name : qs . filter ( * * {
' %s __year ' % name : datetime . datetime . now ( ) . year ,
' %s __month ' % name : datetime . datetime . now ( ) . month - 1
} ) ) ,
3 : ( u ' Этот квартал ' , lambda qs , name : qs . filter ( * * {
3 : ( ' Этот квартал ' , lambda qs , name : qs . filter ( * * {
' %s __gte ' % name : current_quarter_start ,
' %s __lte ' % name : current_quarter_end ,
} ) ) ,
4 : ( u ' Прошлый квартал ' , lambda qs , name : qs . filter ( * * {
4 : ( ' Прошлый квартал ' , lambda qs , name : qs . filter ( * * {
' %s __gte ' % name : last_quarter_start ,
' %s __lte ' % name : last_quarter_end ,
} ) ) ,
5 : ( u ' Этот год ' , lambda qs , name : qs . filter ( * * {
5 : ( ' Этот год ' , lambda qs , name : qs . filter ( * * {
' %s __year ' % name : datetime . datetime . now ( ) . year ,
} ) ) ,
6 : ( u ' Прошлый год ' , lambda qs , name : qs . filter ( * * {
6 : ( ' Прошлый год ' , lambda qs , name : qs . filter ( * * {
' %s __year ' % name : datetime . datetime . now ( ) . year - 1 ,
} ) ) ,
}
closed_status_choices = (
( ' ' , u ' Все счета ' ) ,
( 1 , u ' Закрытые актом выполненных работ ' ) ,
( 0 , u ' Не закрытые актом выполненных работ ' ) ,
( ' ' , ' Все счета ' ) ,
( 1 , ' Закрытые актом выполненных работ ' ) ,
( 0 , ' Не закрытые актом выполненных работ ' ) ,
)
paid_status_choices = (
( ' ' , u ' Все счета ' ) ,
( Invoice . PAID , u ' Оплаченные ' ) ,
( Invoice . PARTLY_PAID , u ' Частично оплаченные ' ) ,
( Invoice . UNPAID , u ' Неоплаченные ' ) ,
( ' ' , ' Все счета ' ) ,
( Invoice . PAID , ' Оплаченные ' ) ,
( Invoice . PARTLY_PAID , ' Частично оплаченные ' ) ,
( Invoice . UNPAID , ' Неоплаченные ' ) ,
)
signed_status_choices = (
( ' ' , u ' Все документы ' ) ,
( ' 1 ' , u ' Подписанные ' ) ,
( ' 0 ' , u ' Не подписанные ' ) ,
( ' ' , ' Все документы ' ) ,
( ' 1 ' , ' Подписанные ' ) ,
( ' 0 ' , ' Не подписанные ' ) ,
)
total_saldo_choices = {
' ' : ( u ' Любое ' , lambda qs , name : qs . all ( ) ) ,
1 : ( u ' Положительное ' , lambda qs , name : qs . filter ( * * {
' ' : ( ' Любое ' , lambda qs , name : qs . all ( ) ) ,
1 : ( ' Положительное ' , lambda qs , name : qs . filter ( * * {
' %s __gt ' % name : 0 ,
} ) ) ,
2 : ( u ' Отрицательное ' , lambda qs , name : qs . filter ( * * {
2 : ( ' Отрицательное ' , lambda qs , name : qs . filter ( * * {
' %s __lt ' % name : 0 ,
} ) ) ,
}
platej_type_choices = (
( ' ' , u ' Все плат. поручения ' ) ,
( consts . PLATEJ_TYPE_COMMERCE , u ' Коммерческие ' ) ,
( consts . PLATEJ_TYPE_TAX , u ' Налоговые ' ) ,
( ' ' , ' Все плат. поручения ' ) ,
( consts . PLATEJ_TYPE_COMMERCE , ' Коммерческие ' ) ,
( consts . PLATEJ_TYPE_TAX , ' Налоговые ' ) ,
)
@ -145,10 +145,12 @@ class BaseDocsFilterSet(django_filters.FilterSet):
self . request = request
if ' client ' in self . filters :
self . filters [ ' client ' ] . extra [ ' queryset ' ] = Client . objects . get_all ( self . request . user . profile )
self . filters [ ' client ' ] . extra [ ' queryset ' ] = \
Client . objects . get_all ( self . request . user . profile )
if ' invoice ' in self . filters :
self . filters [ ' invoice ' ] . extra [ ' queryset ' ] = Invoice . objects . get_all ( self . request . user . profile )
self . filters [ ' invoice ' ] . extra [ ' queryset ' ] = \
Invoice . objects . get_all ( self . request . user . profile )
# сбросить у полей формы атрибут help_text
for field in self . form . fields . values ( ) :
@ -156,46 +158,146 @@ class BaseDocsFilterSet(django_filters.FilterSet):
class InvoiceFilterSet ( BaseDocsFilterSet ) :
paid_status = django_filters . ChoiceFilter ( label = u ' По оплате ' , choices = paid_status_choices , widget = django_filters . widgets . LinkWidget )
closed_status = django_filters . ChoiceFilter ( label = u ' По закрывающим документам ' , choices = closed_status_choices , widget = django_filters . widgets . LinkWidget )
client = django_filters . ModelChoiceFilter ( label = u ' По контрагенту ' , queryset = None , empty_label = u ' все контрагенты ' )
doc_date = CustomDateRangeFilter ( label = u ' По времени создания ' , options = doc_date_choices , widget = django_filters . widgets . LinkWidget )
paid_status = django_filters . ChoiceFilter (
label = ' По оплате ' ,
choices = paid_status_choices ,
widget = django_filters . widgets . LinkWidget
)
closed_status = django_filters . ChoiceFilter (
label = ' По закрывающим документам ' ,
choices = closed_status_choices ,
widget = django_filters . widgets . LinkWidget
)
client = django_filters . ModelChoiceFilter (
label = ' По контрагенту ' ,
queryset = None ,
empty_label = ' все контрагенты '
)
doc_date = CustomDateRangeFilter (
label = ' По времени создания ' ,
options = doc_date_choices ,
widget = django_filters . widgets . LinkWidget
)
class AktRabotFilterSet ( BaseDocsFilterSet ) :
signed_status = django_filters . ChoiceFilter ( label = u ' По приёмке ' , choices = signed_status_choices , widget = django_filters . widgets . LinkWidget )
client = django_filters . ModelChoiceFilter ( label = u ' По контрагенту ' , queryset = None , empty_label = u ' все контрагенты ' )
invoice = django_filters . ModelChoiceFilter ( label = u ' По счёту ' , queryset = None , empty_label = u ' все счета ' )
doc_date = CustomDateRangeFilter ( label = u ' По времени создания ' , options = doc_date_choices , widget = django_filters . widgets . LinkWidget )
signed_status = django_filters . ChoiceFilter (
label = ' По приёмке ' ,
choices = signed_status_choices ,
widget = django_filters . widgets . LinkWidget
)
client = django_filters . ModelChoiceFilter (
label = ' По контрагенту ' ,
queryset = None ,
empty_label = ' все контрагенты '
)
invoice = django_filters . ModelChoiceFilter (
label = ' По счёту ' ,
queryset = None ,
empty_label = ' все счета '
)
doc_date = CustomDateRangeFilter (
label = ' По времени создания ' ,
options = doc_date_choices ,
widget = django_filters . widgets . LinkWidget
)
class NakladnFilterSet ( BaseDocsFilterSet ) :
signed_status = django_filters . ChoiceFilter ( label = u ' По приёмке ' , choices = signed_status_choices , widget = django_filters . widgets . LinkWidget )
client = django_filters . ModelChoiceFilter ( label = u ' По контрагенту ' , queryset = None , empty_label = u ' все контрагенты ' )
invoice = django_filters . ModelChoiceFilter ( label = u ' По счёту ' , queryset = None , empty_label = u ' все счета ' )
doc_date = CustomDateRangeFilter ( label = u ' По времени создания ' , options = doc_date_choices , widget = django_filters . widgets . LinkWidget )
signed_status = django_filters . ChoiceFilter (
label = ' По приёмке ' ,
choices = signed_status_choices ,
widget = django_filters . widgets . LinkWidget
)
client = django_filters . ModelChoiceFilter (
label = ' По контрагенту ' ,
queryset = None ,
empty_label = ' все контрагенты '
)
invoice = django_filters . ModelChoiceFilter (
label = ' По счёту ' ,
queryset = None ,
empty_label = ' все счета '
)
doc_date = CustomDateRangeFilter (
label = ' По времени создания ' ,
options = doc_date_choices ,
widget = django_filters . widgets . LinkWidget
)
class FakturaFilterSet ( BaseDocsFilterSet ) :
signed_status = django_filters . ChoiceFilter ( label = u ' По приёмке ' , choices = signed_status_choices , widget = django_filters . widgets . LinkWidget )
client = django_filters . ModelChoiceFilter ( label = u ' По контрагенту ' , queryset = None , empty_label = u ' все контрагенты ' )
invoice = django_filters . ModelChoiceFilter ( label = u ' По счёту ' , queryset = None , empty_label = u ' все счета ' )
doc_date = CustomDateRangeFilter ( label = u ' По времени создания ' , options = doc_date_choices , widget = django_filters . widgets . LinkWidget )
signed_status = django_filters . ChoiceFilter (
label = ' По приёмке ' ,
choices = signed_status_choices ,
widget = django_filters . widgets . LinkWidget
)
client = django_filters . ModelChoiceFilter (
label = ' По контрагенту ' ,
queryset = None ,
empty_label = ' все контрагенты '
)
invoice = django_filters . ModelChoiceFilter (
label = ' По счёту ' ,
queryset = None ,
empty_label = ' все счета '
)
doc_date = CustomDateRangeFilter (
label = ' По времени создания ' ,
options = doc_date_choices ,
widget = django_filters . widgets . LinkWidget
)
class AktSverkiFilterSet ( BaseDocsFilterSet ) :
signed_status = django_filters . ChoiceFilter ( label = u ' По приёмке ' , choices = signed_status_choices , widget = django_filters . widgets . LinkWidget )
client = django_filters . ModelChoiceFilter ( label = u ' По контрагенту ' , queryset = None , empty_label = u ' все контрагенты ' )
total_saldo = CustomChoiceFilter ( label = u ' По сальдо ' , options = total_saldo_choices , widget = django_filters . widgets . LinkWidget )
doc_date = CustomDateRangeFilter ( label = u ' По времени создания ' , options = doc_date_choices , widget = django_filters . widgets . LinkWidget )
signed_status = django_filters . ChoiceFilter (
label = ' По приёмке ' ,
choices = signed_status_choices ,
widget = django_filters . widgets . LinkWidget
)
client = django_filters . ModelChoiceFilter (
label = ' По контрагенту ' ,
queryset = None ,
empty_label = ' все контрагенты '
)
total_saldo = CustomChoiceFilter (
label = ' По сальдо ' ,
options = total_saldo_choices ,
widget = django_filters . widgets . LinkWidget
)
doc_date = CustomDateRangeFilter (
label = ' По времени создания ' ,
options = doc_date_choices ,
widget = django_filters . widgets . LinkWidget
)
class DoverFilterSet ( BaseDocsFilterSet ) :
client = django_filters . ModelChoiceFilter ( label = u ' По контрагенту ' , queryset = None , empty_label = u ' все контрагенты ' )
doc_date = CustomDateRangeFilter ( label = u ' По времени создания ' , options = doc_date_choices , widget = django_filters . widgets . LinkWidget )
client = django_filters . ModelChoiceFilter (
label = ' По контрагенту ' ,
queryset = None ,
empty_label = ' все контрагенты '
)
doc_date = CustomDateRangeFilter (
label = ' По времени создания ' ,
options = doc_date_choices ,
widget = django_filters . widgets . LinkWidget
)
class PlatejkaFilterSet ( BaseDocsFilterSet ) :
platej_type = django_filters . ChoiceFilter ( label = u ' По типу ' , choices = platej_type_choices , widget = django_filters . widgets . LinkWidget )
client = django_filters . ModelChoiceFilter ( label = u ' По контрагенту ' , queryset = None , empty_label = u ' все контрагенты ' )
doc_date = CustomDateRangeFilter ( label = u ' По времени создания ' , options = doc_date_choices , widget = django_filters . widgets . LinkWidget )
platej_type = django_filters . ChoiceFilter (
label = ' По типу ' ,
choices = platej_type_choices ,
widget = django_filters . widgets . LinkWidget
)
client = django_filters . ModelChoiceFilter (
label = ' По контрагенту ' ,
queryset = None ,
empty_label = ' все контрагенты '
)
doc_date = CustomDateRangeFilter (
label = ' По времени создания ' ,
options = doc_date_choices ,
widget = django_filters . widgets . LinkWidget
)