From f49a446c71327f4ee62f4c2a632ef18bb7e2d91d Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Fri, 31 Oct 2025 19:20:07 +0500 Subject: [PATCH] fix --- .../commands/import_stock_movemend.py | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 core/apps/wherehouse/management/commands/import_stock_movemend.py diff --git a/core/apps/wherehouse/management/commands/import_stock_movemend.py b/core/apps/wherehouse/management/commands/import_stock_movemend.py new file mode 100644 index 0000000..a00b1da --- /dev/null +++ b/core/apps/wherehouse/management/commands/import_stock_movemend.py @@ -0,0 +1,78 @@ +from datetime import datetime +import json, requests + +from django.core.management import BaseCommand + +from core.apps.wherehouse.models import WhereHouse, StockMovemend, StockMovmendProduct, Inventory +from core.apps.products.models import Product, Unity +from core.apps.accounts.models import User +from core.apps.projects.models import ProjectFolder + + +headers = { + "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MTkyMDM2MSwiZXhwIjoxNzYyMDA2NzYxLCJuYmYiOjE3NjE5MjAzNjEsImp0aSI6Inhqak81azJLc2pSaEJJOGUiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ZcREfvT21qpd9eK_-zBumKBtaKKJ-l9QoudSLZ3IpP4" + } + +def get_data(): + url = f'https://backend.app.uyqur.uz/main/warehouse-transfer/view?size=524' + response = requests.get(url, headers=headers) + + if response.status_code == 200: + return response.json() + return response.json() + +def get_product(stock_movement_id): + url = f"https://backend.app.uyqur.uz/main/warehouse-transfer/view?id={stock_movement_id}" + response = requests.get(url, headers=headers) + + if response.status_code == 200: + return response.json() + return response.json() + + +class Command(BaseCommand): + def handle(self, *args, **options): + data = get_data() + movemend_types = { + "pending": "EXPECTED", + "recieved": "ACCEPTED", + "rejected": "CANCELLED" + } + for item in data['data']['data']: + sender_warehouse = WhereHouse.objects.filter(name=item['sender_warehouse']['name']).first() + recieved_warehouse = WhereHouse.objects.filter(name=item['recieved_warehouse']['name']).first() + project_folder = None + if item.get('project'): + project_folder = ProjectFolder.objects.filter(name=item['project']['name']).first() + user = None + if item.get('recieved_user'): + user = User.objects.filter(full_name=item['recieved_user']['full_name']).first() + stock_movemend, created = StockMovemend.objects.get_or_create( + number=item['id'], + defaults={ + "wherehouse_to": recieved_warehouse, + "wherehouse_from": sender_warehouse, + "recipient": user, + "project_folder": project_folder, + "movemend_type": movemend_types.get(item['status']), + "date": datetime.strptime(item['date'], "%d.%m.%Y"), + "comment": item['description'], + } + ) + data = get_product(item['id']) + if data.get('data'): + for product in data['data']['warehouse_products']: + product_obj = Product.objects.filter(name=product['product']['name']['uz']).first() + unit = Unity.objects.filter(value=product['unit']['name']['uz']).first() + wherehouse = WhereHouse.objects.filter(name=product['warehouse']['name']).first() + inventory = Inventory.objects.filter( + product=product_obj, + unity=unit, + wherehouse=wherehouse + ).first() + StockMovmendProduct.objects.get_or_create( + inventory=inventory, + quantity=product['initial_quantity'], + stock_movemend=stock_movemend + ) + self.stdout.write("Stock Movemend qo'shildi") \ No newline at end of file