finance: add income and expence contract import commands
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
from django.core.management import BaseCommand
|
||||
|
||||
from core.apps.finance.models import ExpenceContract, ExpenceType
|
||||
from core.apps.accounts.models import User
|
||||
from core.apps.projects.models import Project, ProjectFolder
|
||||
from core.apps.counterparty.models import Counterparty
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("file_path", type=str)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
file_path = options['file_path']
|
||||
|
||||
with open(file_path, 'r') as f:
|
||||
data = json.load(f)
|
||||
|
||||
for item in data['data']['data']:
|
||||
user = User.objects.filter(full_name=item['creator']['full_name']).first()
|
||||
project_folder = ProjectFolder.objects.filter(name=item['project']['name']).first()
|
||||
counterparty = None
|
||||
if item.get('counterparty'):
|
||||
counterparty = Counterparty.objects.filter(name=item['company_person']['name']).first()
|
||||
expence_type = None
|
||||
if item.get('financial'):
|
||||
expence_type = ExpenceType.objects.filter(name=item['financial']['name']).first()
|
||||
ExpenceContract.objects.get_or_create(
|
||||
user=user,
|
||||
project_folder=project_folder,
|
||||
price=item['amount'],
|
||||
currency=item['currency']['symbol'].lower(),
|
||||
defaults={
|
||||
"counterparty": counterparty,
|
||||
"expence_type": expence_type,
|
||||
"date": datetime.strptime(item['date'], "%d.%m.%Y").date(),
|
||||
}
|
||||
)
|
||||
self.stdout.write(self.style.SUCCESS("Expence Contractlar qoshildi"))
|
||||
@@ -0,0 +1,42 @@
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
from django.core.management import BaseCommand
|
||||
|
||||
from core.apps.finance.models import IncomeContract, TypeIncome
|
||||
from core.apps.accounts.models import User
|
||||
from core.apps.projects.models import Project, ProjectFolder
|
||||
from core.apps.counterparty.models import Counterparty
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("file_path", type=str)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
file_path = options['file_path']
|
||||
|
||||
with open(file_path, 'r') as f:
|
||||
data = json.load(f)
|
||||
|
||||
for item in data['data']['data']:
|
||||
user = User.objects.filter(full_name=item['creator']['full_name']).first()
|
||||
project_folder = ProjectFolder.objects.filter(name=item['project']['name']).first()
|
||||
counterparty = None
|
||||
if item.get('counterparty'):
|
||||
counterparty = Counterparty.objects.filter(name=item['company_person']['name']).first()
|
||||
income_type = None
|
||||
if item.get('financial'):
|
||||
income_type = TypeIncome.objects.filter(name=item['financial']['name']).first()
|
||||
IncomeContract.objects.get_or_create(
|
||||
user=user,
|
||||
project_folder=project_folder,
|
||||
price=item['amount'],
|
||||
currency=item['currency']['symbol'].lower(),
|
||||
defaults={
|
||||
"counterparty": counterparty,
|
||||
"income_type": income_type,
|
||||
"date": datetime.strptime(item['date'], "%d.%m.%Y").date(),
|
||||
}
|
||||
)
|
||||
self.stdout.write(self.style.SUCCESS("Expence Contractlar qoshildi"))
|
||||
@@ -110,7 +110,6 @@ class Command(BaseCommand):
|
||||
count = 0
|
||||
for page in range(round(total_data / size)):
|
||||
data = get_data(page)
|
||||
print(page)
|
||||
for item in data['data']['data']:
|
||||
match item['type']:
|
||||
case "expense":
|
||||
|
||||
Reference in New Issue
Block a user