Skip to content

Commit 343e06b

Browse files
author
Jan
authored
Merge pull request #51 from openimis/feature/CM-853
CM-853: added invoice report/synch data
2 parents 4f3ecdf + be686ec commit 343e06b

File tree

2 files changed

+126
-43
lines changed

2 files changed

+126
-43
lines changed

payroll/documents.py

Lines changed: 82 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@
44
if 'opensearch_reports' in apps.app_configs:
55
from django_opensearch_dsl import Document, fields as opensearch_fields
66
from django_opensearch_dsl.registries import registry
7-
from payroll.models import Payroll, BenefitConsumption, PayrollBenefitConsumption
7+
from payroll.models import (
8+
Payroll,
9+
PayrollBenefitConsumption,
10+
BenefitConsumption,
11+
BenefitAttachment
12+
)
813
from payment_cycle.models import PaymentCycle
914
from contribution_plan.models import PaymentPlan
1015
from individual.models import Individual
16+
from invoice.models import Bill
1117

1218
@registry.register_document
1319
class PayrollDocument(Document):
1420
name = opensearch_fields.KeywordField()
1521
status = opensearch_fields.KeywordField()
16-
payment_method = opensearch_fields.DateField()
22+
payment_method = opensearch_fields.KeywordField()
1723
date_created = opensearch_fields.DateField()
1824
payment_plan = opensearch_fields.ObjectField(properties={
1925
'code': opensearch_fields.KeywordField(),
@@ -92,7 +98,7 @@ class PayrollBenefitConsumptionDocument(Document):
9298
payroll = opensearch_fields.ObjectField(properties={
9399
'name': opensearch_fields.KeywordField(),
94100
'status': opensearch_fields.KeywordField(),
95-
'payment_method': opensearch_fields.DateField(),
101+
'payment_method': opensearch_fields.KeywordField(),
96102
'date_created': opensearch_fields.DateField(),
97103
'payment_plan': opensearch_fields.ObjectField(properties={
98104
'code': opensearch_fields.KeywordField(),
@@ -141,3 +147,76 @@ def get_instances_from_related(self, related_instance):
141147
return PayrollBenefitConsumption.objects.filter(payroll=related_instance)
142148
elif isinstance(related_instance, BenefitConsumption):
143149
return PayrollBenefitConsumption.objects.filter(benefit=related_instance)
150+
151+
152+
@registry.register_document
153+
class BenefitAttachmentDocument(Document):
154+
bill = opensearch_fields.ObjectField(properties={
155+
'code': opensearch_fields.KeywordField(),
156+
'code_ext': opensearch_fields.KeywordField(),
157+
'code_tp': opensearch_fields.KeywordField(),
158+
'status': opensearch_fields.KeywordField(),
159+
'currency_code': opensearch_fields.KeywordField(),
160+
'note': opensearch_fields.KeywordField(),
161+
'terms': opensearch_fields.KeywordField(),
162+
'date_created': opensearch_fields.DateField(),
163+
'date_due': opensearch_fields.DateField(),
164+
'date_payed': opensearch_fields.DateField(),
165+
'amount_total': opensearch_fields.KeywordField(),
166+
})
167+
benefit = opensearch_fields.ObjectField(properties={
168+
'code': opensearch_fields.KeywordField(),
169+
'status': opensearch_fields.KeywordField(),
170+
'type': opensearch_fields.KeywordField(),
171+
'receipt': opensearch_fields.KeywordField(),
172+
'amount': opensearch_fields.KeywordField(),
173+
'photo': opensearch_fields.KeywordField(),
174+
'date_due': opensearch_fields.DateField(),
175+
'individual': opensearch_fields.ObjectField(properties={
176+
'first_name': opensearch_fields.KeywordField(),
177+
'last_name': opensearch_fields.KeywordField(),
178+
'dob': opensearch_fields.DateField(),
179+
})
180+
})
181+
payroll = opensearch_fields.NestedField(properties={
182+
'name': opensearch_fields.KeywordField(),
183+
'status': opensearch_fields.KeywordField(),
184+
'payment_method': opensearch_fields.KeywordField(),
185+
'date_created': opensearch_fields.DateField(),
186+
'payment_plan': opensearch_fields.ObjectField(properties={
187+
'code': opensearch_fields.KeywordField(),
188+
'name': opensearch_fields.KeywordField(),
189+
}),
190+
'payment_cycle': opensearch_fields.ObjectField(properties={
191+
'code': opensearch_fields.KeywordField(),
192+
'status': opensearch_fields.KeywordField(),
193+
'start_date': opensearch_fields.DateField(),
194+
'end_date': opensearch_fields.DateField(),
195+
})
196+
})
197+
198+
class Index:
199+
name = 'benefit_attachment'
200+
settings = {
201+
'number_of_shards': 1,
202+
'number_of_replicas': 0
203+
}
204+
auto_refresh = True
205+
206+
class Django:
207+
model = BenefitAttachment
208+
related_models = [Payroll, Bill, BenefitConsumption]
209+
fields = [
210+
'id'
211+
]
212+
queryset_pagination = 5000
213+
214+
def get_instances_from_related(self, related_instance):
215+
if isinstance(related_instance, Payroll):
216+
return BenefitAttachment.objects.filter(
217+
benefit__payrollbenefitconsumption__payroll=related_instance
218+
)
219+
elif isinstance(related_instance, Bill):
220+
return BenefitAttachment.objects.filter(bill=related_instance)
221+
elif isinstance(related_instance, BenefitConsumption):
222+
return BenefitAttachment.objects.filter(benefit=related_instance)

0 commit comments

Comments
 (0)