diff --git a/isjkhrs/schemas.py b/isjkhrs/schemas.py index e14d79c..f9dc3a2 100644 --- a/isjkhrs/schemas.py +++ b/isjkhrs/schemas.py @@ -16,7 +16,7 @@ class FilterListInit(BaseModel): class FilterSetInit(FilterListInit): - IDFilterObject: int + IDFilterObject: str NeedClear: bool class FilterTypeSerializer(BaseModel): @@ -27,7 +27,7 @@ class FilterTypeSerializer(BaseModel): class FilterListSerializer(BaseModel): - ID: int + ID: str Name: Optional[str] = None IsChecked: bool diff --git a/kassa/new.py b/kassa/new.py index db6283f..cd948fe 100644 --- a/kassa/new.py +++ b/kassa/new.py @@ -18,7 +18,7 @@ import datetime Base = declarative_base() metadata = Base.metadata -ignore_list = [] +ignore_list = ["5A1A84DD-34AC-4D16-A91C-3DB9782F4828"] class PaymentDetails(Base): __tablename__ = "payment_details" diff --git a/kv/crud.py b/kv/crud.py index a6195de..3320613 100644 --- a/kv/crud.py +++ b/kv/crud.py @@ -35,6 +35,19 @@ def exec_procedure_wo_result(session, proc_name, params, database: str = None): sql_string, params).fetchall() session.commit() +def exec_procedure_no_result(session, proc_name, params, database: str = None): + sql_params = ",".join([f"@{key} = :{key}" + for key, value in params.items()]) + dbstr = "" + if database: + dbstr = f"[{database}]." + sql_string = sql.text(f''' + EXEC {dbstr}[dbo].[{proc_name}] {sql_params}; + ''') + session.execute( + sql_string, params) + session.commit() + """PersonalAccountViewSet""" @@ -45,7 +58,7 @@ class PersonalAccountViewSet: def get_details(db: Session, id: int = None): table = get_table("PersonalAccount") - return db.query(table).filter(table.c["ID"] == id).first() + return db.query(table).filter(table.c["ID"] == id).all() def get_services(db: Session, IDPersonalAccount: int = None): return exec_procedure(db, 'uspGetPersonalAccountServices', {'IDPersonalAccount': IDPersonalAccount}) @@ -59,16 +72,18 @@ class PersonalAccountViewSet: def get_financial_account(db: Session, data: schemas.PersonalAccountReportTOFinancialInit = None): return exec_procedure(db, 'uspGetPersonalAccountReportTOFinancialAccount', data.dict()) + def edit(db: Session, data: schemas.PersonalAccountDetailsInit = None): + return exec_procedure_no_result(db, 'uspEditPersonalAccount', data.dict()) """AddressInfoViewSet""" -class AddressInfoViewSet: +class AddressViewSet: """get""" def get_details(db: Session, id: int = None): table = get_table("RefAddresses", "General") - return db.query(table).filter(table.c["ID"] == id).first() + return db.query(table).filter(table.c["ID"] == id).all() def get_personal_accounts(db: Session, IDCity: int = None): return exec_procedure(db, 'uspGetPersonalAccountsList', {'IDCity': IDCity}) @@ -88,18 +103,7 @@ class AddressInfoViewSet: """post""" def edit(db: Session, data: schemas.EditAdressInit = None): - try: - exec_procedure_wo_result(db, 'uspEditAddress', **data) - return {'msg': 'success'} - except: - return {'msg': 'error'} - - def edit_personal_account(db: Session, data: schemas.PersonalAccountDetailsSerializer = None): - try: - exec_procedure_wo_result(db, 'uspEditPersonalAccount', **data) - return {'msg': 'success'} - except: - return {'msg': 'error'} + exec_procedure_no_result(db, 'uspEditAddress', data.dict()) def edit_personal_account_address(db: Session, data: schemas.EditPersonalAccountAddressInit = None): try: @@ -134,34 +138,18 @@ class ObjectViewSet: """post""" - def edit(db: Session, data: schemas.ObjectDetailsSerializer = None): - try: - exec_procedure_wo_result(db, 'uspEditObject', **data) - return {'msg': 'success'} - except: - return {'msg': 'error'} + def edit(db: Session, data: schemas.ObjectEditInit = None): + exec_procedure_no_result(db, 'uspEditObject', data.dict()) def edit_service(db: Session, data: schemas.EditObjectServiceInit = None): - try: - exec_procedure_wo_result(db, 'uspEditObject', **data) - return {'msg': 'success'} - except: - return {'msg': 'error'} + exec_procedure_no_result(db, 'uspEditObject', data.dict()) def edit_temp_metering_device_address(db: Session, data: schemas.EditTempMeteringDeviceAddressInit = None): - try: - exec_procedure_wo_result( + exec_procedure_no_result( db, 'uspEditTempMeteringDeviceAddress', **data, database='General') - return {'msg': 'success'} - except: - return {'msg': 'error'} def add_object(db: Session, data: schemas.AddObjectInit = None): - try: - exec_procedure_wo_result(db, 'uspAddObject', **data) - return {'msg': 'success'} - except: - return {'msg': 'error'} + exec_procedure_no_result(db, 'uspAddObject', **data) """TurnOverViewSet""" @@ -212,10 +200,10 @@ class PaymentViewSet: return exec_procedure(db, 'uspSaveReceipt', data.dict()) def repayment_info(db: Session, data: schemas.RepaymentInfoInit): - return exec_procedure(db, 'uspGetRepaymentInfo', **data) + return exec_procedure(db, 'uspGetRepaymentInfo', data.dict()) def repayment(db: Session, data: schemas.RepaymentInit): - return exec_procedure(db, 'uspRepayment', **data) + return exec_procedure(db, 'uspRepayment', data.dict()) """ReportViewSet""" @@ -270,11 +258,7 @@ class RecalculationViewSet: return {'msg': 'error'} def save_recalculation(db: Session, data: schemas.RecalculationSave = None): - try: - exec_procedure_wo_result(db, 'uspSaveRecalculation', data.dict()) - return {'msg': 'success'} - except: - return {'msg': 'error'} + exec_procedure_no_result(db, 'uspSaveRecalculation', data.dict()) """ReferenceViewSet""" @@ -409,7 +393,7 @@ class ReferenceViewSet: return exec_procedure(db, 'uspGetMeteringDeviceTypes', params=data, database='General') def get_object_water_system_volumes(db: Session, data: schemas.ObjectWaterSystemVolumesInit): - return exec_procedure(db, 'uspGetObjectWaterSystemVolumes', **data) + return exec_procedure(db, 'uspGetObjectWaterSystemVolumes', data.dict()) def get_tariff_population(db: Session, data: schemas.TariffsPopulationInit): return exec_procedure(db, 'uspGetTariffsPopulation', **data) diff --git a/kv/routers/__pycache__/address.cpython-39.pyc b/kv/routers/__pycache__/address.cpython-39.pyc index ca940f0..5baa661 100644 Binary files a/kv/routers/__pycache__/address.cpython-39.pyc and b/kv/routers/__pycache__/address.cpython-39.pyc differ diff --git a/kv/routers/__pycache__/objectvs.cpython-39.pyc b/kv/routers/__pycache__/objectvs.cpython-39.pyc index 83e0436..bdc0f09 100644 Binary files a/kv/routers/__pycache__/objectvs.cpython-39.pyc and b/kv/routers/__pycache__/objectvs.cpython-39.pyc differ diff --git a/kv/routers/__pycache__/payment.cpython-39.pyc b/kv/routers/__pycache__/payment.cpython-39.pyc index 82c853b..f967ef9 100644 Binary files a/kv/routers/__pycache__/payment.cpython-39.pyc and b/kv/routers/__pycache__/payment.cpython-39.pyc differ diff --git a/kv/routers/__pycache__/personalaccount.cpython-39.pyc b/kv/routers/__pycache__/personalaccount.cpython-39.pyc index a726248..d3b2e5a 100644 Binary files a/kv/routers/__pycache__/personalaccount.cpython-39.pyc and b/kv/routers/__pycache__/personalaccount.cpython-39.pyc differ diff --git a/kv/routers/__pycache__/recalculation.cpython-39.pyc b/kv/routers/__pycache__/recalculation.cpython-39.pyc index 7042a59..88b075a 100644 Binary files a/kv/routers/__pycache__/recalculation.cpython-39.pyc and b/kv/routers/__pycache__/recalculation.cpython-39.pyc differ diff --git a/kv/routers/__pycache__/reference.cpython-39.pyc b/kv/routers/__pycache__/reference.cpython-39.pyc index f28a1b3..650c784 100644 Binary files a/kv/routers/__pycache__/reference.cpython-39.pyc and b/kv/routers/__pycache__/reference.cpython-39.pyc differ diff --git a/kv/routers/__pycache__/report.cpython-39.pyc b/kv/routers/__pycache__/report.cpython-39.pyc index 91c357a..71e025b 100644 Binary files a/kv/routers/__pycache__/report.cpython-39.pyc and b/kv/routers/__pycache__/report.cpython-39.pyc differ diff --git a/kv/routers/address.py b/kv/routers/address.py index 4caaaf7..c3fc857 100644 --- a/kv/routers/address.py +++ b/kv/routers/address.py @@ -12,38 +12,38 @@ router = APIRouter() @router.get("/get_details/{id}", response_model=List[schemas.AddressDetailsSerializer]) async def get_details(id: int, db: Session = Depends(get_db)): - data = crud.AddressInfoViewSet.get_details(db, id) + data = crud.AddressViewSet.get_details(db, id) return data @router.get("/get_personal_accounts/{IDCity}", response_model=List[schemas.PersonalAccountSerializer]) async def get_personal_accounts(IDCity: int, db: Session = Depends(get_db)): - data = crud.AddressInfoViewSet.get_personal_accounts( + data = crud.AddressViewSet.get_personal_accounts( db, IDCity=IDCity) return data @router.get("/get_addresses/{IDCity}", response_model=List[schemas.AddressesSerializer]) async def get_addresses(IDCity: int, db: Session = Depends(get_db)): - data = crud.AddressInfoViewSet.get_addresses(db, IDCity) + data = crud.AddressViewSet.get_addresses(db, IDCity) return data @router.get("/get_address_personal_accounts/{IDAddress}", response_model=List[schemas.AddressPersonalAccounts]) async def get_address_personal_accounts(IDAddress: int, db: Session = Depends(get_db)): - data = crud.AddressInfoViewSet.get_address_personal_accounts(db, IDAddress) + data = crud.AddressViewSet.get_address_personal_accounts(db, IDAddress) return data @router.get("/get_address_object_details/{id}", response_model=List[schemas.AddressDetailInfoSerializer]) async def get_address_object_details(id: int, db: Session = Depends(get_db)): - data = crud.AddressInfoViewSet.get_address_object_details(db, id) + data = crud.AddressViewSet.get_address_object_details(db, id) return data @router.get("/get_metering_devices/{IDAddress}", response_model=List[schemas.AddressMeteringDevices]) async def get_metering_devices(IDAddress: int, db: Session = Depends(get_db)): - data = crud.AddressInfoViewSet.get_metering_devices(db, IDAddress) + data = crud.AddressViewSet.get_metering_devices(db, IDAddress) return data @@ -52,14 +52,8 @@ async def get_metering_devices(IDAddress: int, db: Session = Depends(get_db)): @router.post('/edit') async def edit(request: schemas.EditAdressInit, db: Session = Depends(get_db)): - return crud.AddressInfoViewSet.edit(db, request) + return crud.AddressViewSet.edit(db, request) -@router.post('/edit_personal_account') -async def edit_personal_account(request: schemas.PersonalAccountDetailsSerializer, db: Session = Depends(get_db)): - return crud.AddressInfoViewSet.edit_personal_account(db, request) -@router.post('/edit_personal_account') -async def edit_personal_account(request: schemas.PersonalAccountDetailsSerializer, db: Session = Depends(get_db)): - return crud.AddressInfoViewSet.edit_personal_account(db, request) diff --git a/kv/routers/objectvs.py b/kv/routers/objectvs.py index b31f544..055f8ca 100644 --- a/kv/routers/objectvs.py +++ b/kv/routers/objectvs.py @@ -43,7 +43,7 @@ async def get_metering_devices(IDObject: str, db: Session = Depends(get_db)): @router.post('/edit') -async def edit(request: schemas.ObjectDetailsSerializer, db: Session = Depends(get_db)): +async def edit(request: schemas.ObjectEditInit, db: Session = Depends(get_db)): return crud.ObjectViewSet.edit(db, request) diff --git a/kv/routers/personalaccount.py b/kv/routers/personalaccount.py index b6d4a79..3bab27a 100644 --- a/kv/routers/personalaccount.py +++ b/kv/routers/personalaccount.py @@ -48,3 +48,7 @@ async def get_debts(IDPersonalAccount: int, GetType: bool, db: Session = Depends @router.post("/get_financial_account", response_model=List[schemas.ReportTOFinancialAccount]) async def get_financial_account(request: schemas.ReportTOFinancialAccountInit, db: Session = Depends(get_db)): return crud.PersonalAccountViewSet.get_financial_account(db, request) + +@router.post('/edit') +async def edit(request: schemas.PersonalAccountDetailsInit, db: Session = Depends(get_db)): + return crud.PersonalAccountViewSet.edit(db, request) \ No newline at end of file diff --git a/kv/routers/reference.py b/kv/routers/reference.py index 25d1ea7..9990204 100644 --- a/kv/routers/reference.py +++ b/kv/routers/reference.py @@ -194,7 +194,7 @@ async def get_object_metering_device_addresses(request: schemas.AdvancedSearchIn @router.post('/get_object_water_system_volumes', response_model=List[schemas.CommonTypeSerializer]) -async def get_object_water_system_volumes(request: schemas.TariffsPopulationInit, db: Session = Depends(get_db)): +async def get_object_water_system_volumes(request: schemas.ObjectWaterSystemVolumesInit, db: Session = Depends(get_db)): return ReferenceViewSet.get_object_water_system_volumes(db, request) diff --git a/kv/schemas.py b/kv/schemas.py index e77a9bc..351fb31 100644 --- a/kv/schemas.py +++ b/kv/schemas.py @@ -142,11 +142,12 @@ class WithdrawingSave(PersonalAccountInit, WithdrawingCheckSerializer, DateInit) class RecalculationSave(BaseModel): IDUser: int - IDService: int + IDService: int = None IDType: int + IDRecalculationCode: int = None Percent: float = None - IDOldChange: str = None - IDNewChange: str = None + OldValue: str = None + NewValue: str = None DateBegin: str DateEnd: str @@ -156,10 +157,12 @@ class RepaymentInfoInit(BaseModel): IDMoneyType: int -class RepaymentInit(RepaymentInfoInit): +class RepaymentInit(BaseModel): + IDCashbox: int IDRepaymentType: int RepaymentNumber: int - RepaymentDate: date + RepaymentDate: str + IDMoneyType: int class RecieptCalculateInit(PersonalAccountInit): @@ -229,6 +232,22 @@ class PersonalAccountSerializer(BaseModel): IDAccount: int FullName: Optional[str] = None +class PersonalAccountDetailsInit(BaseModel): + ActionType: Optional[str] = None + ID: int = None + IDAddress: int = None + IDTenants: int = None + IDWorker: int = None + LastName: Optional[str] = None + FirstName: Optional[str] = None + Patronymic: Optional[str] = None + PassportSerialNumber: Optional[str] = None + PassportNumber: Optional[str] = None + PassportIssueBy: Optional[str] = None + PassportIssueDate: Optional[str] = None + PassportRegistrationPlace: Optional[str] = None + PassportRegistrationDate: Optional[str] = None + Note: Optional[str] = None class PersonalAccountDetailsSerializer(BaseModel): ID: int @@ -332,7 +351,7 @@ class AddressDetailsSerializer(BaseModel): IDImprovementDegree: int = None CadastralNumber: Optional[str] = None Number: Optional[str] = None - Privatization: bool = None + Privatization: float = None Area: float = None AreaOwned: float = None AreaAboveNormal: float = None @@ -353,10 +372,10 @@ class AddressDetailsSerializer(BaseModel): MeteringDeviceHeating: bool = None MeteringDeviceHotWater: bool = None MeteringDeviceColdWater: bool = None - ActAvailabilityMeteringDeviceInstallIDType: int = None + ActAvailabilityMeteringDeviceInstallIDType: bool = None ActAvailabilityMeteringDeviceInstallHeating: bool = None ActAvailabilityMeteringDeviceInstallWater: bool = None - + class EditAdressInit(AddressDetailsSerializer): ActionType: Optional[str] = None @@ -647,8 +666,9 @@ class AccrualsCanBeRecalculatedSerializer(BaseModel): Volume: float Amount: float -class ObjectDetailsSerializer(BaseModel): +class ObjectEditInit(BaseModel): IDObject: str = None + IDCIty: int = None IDFias: Optional[str] = None IDBoiler: str = None IDOwnershipType: int = None @@ -656,7 +676,53 @@ class ObjectDetailsSerializer(BaseModel): BuildDate: int = None FloorNumber: int = None Entrance: int = None - CommissDate: date = None + CommissDate: int = None + Volume: float = None + FullArea: float = None + IDBuildingType: Optional[str] = None + IDOverlappingType: int = None + IDWallMaterial: int = None + IDRoofType: int = None + IDFoundationType: int = None + WithdrawingDate: Optional[str] = None + WithdrawingReason: Optional[str] = None + IDSystemHotWater: int = None + IDSystemHotWaterPeriodType: int = None + IDSystemColdWater: int = None + IDSystemColdWaterPeriodType: int = None + IDSystemSewerage: int = None + IDStandartVolume: int = None + IDHeatingType: int = None + IDGasType: int = None + IDWiringType: int = None + IDImprovementDegree: int = None + Amount: float = None + Deterioration: float = None + AreaRoof: float = None + AreaFoundation: float = None + AreaFacade: float = None + AreaPlub: float = None + AreaAttic: float = None + AreaTechnicalFloor: float = None + AreaBuilding: float = None + AreaLk: float = None + AreaYardArea: float = None + AreaBoiler: float = None + ActAvailabilityCounterInstallObjectHeating: int = None + ActAvailabilityCounterInstallObjectWater: int = None + DirectControl: bool = None + +class ObjectDetailsSerializer(BaseModel): + IDObject: str = None + IDCIty: int = None + IDFias: Optional[str] = None + IDBoiler: str = None + IDOwnershipType: int = None + IDProviderUtilityServices: int = None + BuildDate: int = None + FloorNumber: int = None + Entrance: int = None + CommissDate: int = None Volume: float = None FullArea: float = None IDBuildingType: Optional[str] = None @@ -795,9 +861,9 @@ class ImprovementDegreeSerializer(BaseModel): class ObjectWaterSystemVolumesInit(BaseModel): - IDHotWater: int - IDColdWater: int - IDSewerage: int + IDPeriodTypeHotWater: int + IDPeriodTypeColdWater: int + IDPeriodTypeSewerage: int