Skip to content

Commit f1271f3

Browse files
Merge pull request #49 from usermicrodevices/develop
add on_doc_post_save
2 parents 0fc50d4 + d390e25 commit f1271f3

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

api/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@ def post(self, request, *args, **kwargs):
248248
if records and sum_final and registered_at:
249249
id_owner = data.get('owner', request.user.default_company.id if request.user.default_company else 1)
250250
default_contractor = Company.objects.filter(extinfo__default_cash_contractor=True).first()
251+
if not default_contractor and request.user.companies.count():
252+
default_contractor = request.user.companies.first()
251253
id_contractor = data.get('contractor', default_contractor.id if default_contractor else 2)
252254
dtype = data.get('type', 'sale')
253255
doc_type, created = DocType.objects.get_or_create(alias=dtype, defaults={'alias':dtype, 'name':dtype.title()})

core/models.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,29 @@ def on_doc_pre_save(sender, **kwargs):
123123
if value:
124124
instance.sum_final = value
125125

126+
@receiver(post_save, sender=Doc)
127+
def on_doc_post_save(sender, **kwargs):
128+
instance: Doc = kwargs['instance']
129+
if not kwargs.get('created', False) and not instance.extinfo.get('not_use_post_save_auto_register', False):
130+
recs = get_model('core.Record').objects.filter(doc=instance)
131+
recs_count = recs.count()
132+
regs = get_model('core.Register').objects.filter(rec__in=recs.values_list('id', flat=True))
133+
if instance.type.auto_register:
134+
if recs_count and recs_count != regs.count():
135+
regs_new = []
136+
for r in recs:
137+
regs_new.append(get_model('core.Register')(rec=r))
138+
try:
139+
rgs = get_model('core.Register').objects.bulk_create(regs_new)
140+
except Exception as e:
141+
instance.loge(e)
142+
elif recs_count:
143+
if regs.count():
144+
try:
145+
regs.delete()
146+
except Exception as e:
147+
instance.loge(e)
148+
126149

127150
class Record(CustomAbstractModel):
128151
count = models.DecimalField(max_digits=15, decimal_places=3, default=0, null=False, blank=False, verbose_name=_('count'), help_text=_('count of products'))

0 commit comments

Comments
 (0)