|
4 | 4 | if 'opensearch_reports' in apps.app_configs: |
5 | 5 | from django_opensearch_dsl import Document, fields as opensearch_fields |
6 | 6 | 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 | + ) |
8 | 13 | from payment_cycle.models import PaymentCycle |
9 | 14 | from contribution_plan.models import PaymentPlan |
10 | 15 | from individual.models import Individual |
| 16 | + from invoice.models import Bill |
11 | 17 |
|
12 | 18 | @registry.register_document |
13 | 19 | class PayrollDocument(Document): |
14 | 20 | name = opensearch_fields.KeywordField() |
15 | 21 | status = opensearch_fields.KeywordField() |
16 | | - payment_method = opensearch_fields.DateField() |
| 22 | + payment_method = opensearch_fields.KeywordField() |
17 | 23 | date_created = opensearch_fields.DateField() |
18 | 24 | payment_plan = opensearch_fields.ObjectField(properties={ |
19 | 25 | 'code': opensearch_fields.KeywordField(), |
@@ -92,7 +98,7 @@ class PayrollBenefitConsumptionDocument(Document): |
92 | 98 | payroll = opensearch_fields.ObjectField(properties={ |
93 | 99 | 'name': opensearch_fields.KeywordField(), |
94 | 100 | 'status': opensearch_fields.KeywordField(), |
95 | | - 'payment_method': opensearch_fields.DateField(), |
| 101 | + 'payment_method': opensearch_fields.KeywordField(), |
96 | 102 | 'date_created': opensearch_fields.DateField(), |
97 | 103 | 'payment_plan': opensearch_fields.ObjectField(properties={ |
98 | 104 | 'code': opensearch_fields.KeywordField(), |
@@ -141,3 +147,76 @@ def get_instances_from_related(self, related_instance): |
141 | 147 | return PayrollBenefitConsumption.objects.filter(payroll=related_instance) |
142 | 148 | elif isinstance(related_instance, BenefitConsumption): |
143 | 149 | 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