CREATE TABLE dbo.Accruals ( ID BIGINT IDENTITY - ИД ,IDPersonalAccount BIGINT - ЛС ,IDAddressAddit BIGINT? - Код доп постройки ,IDParameterAddit TINYINT - Дополнительный параметр (=ParameterAddit.ID) ,IDOrgContract INT? - Код договора ,IDManagementCompany INT? - Код упр компании ,IDService INT - Код услуги ,IDBoiler BIGINT? - Котельная -- ,IDStandartVolume INT - Код благоустройства ,DateBegin DATE - Дата начисления с (диапазон в пределах кокретного месяца) ,DateEnd DATE - Дата начисления по -- ,Volume DECIMAL(18, 3) - Объем ,Tariff DECIMAL(18, 2) - Тарифы ,TariffEOT DECIMAL(18, 2) ,Amount DECIMAL(18, 2) - Сумма ,DateDel SMALLDATETIME - Пометка удаления записи ) ON [PRIMARY] Пояснения по IDParameterAddit: Сейчас в текущей Квартплате в зависимости от номера услуги следующая информация: (Коды услуг) - (Информация) 2,22,55 - этажность (основного помещения либо доп. постройки) 3,49,56,57 - вид г/воды spr..spr_gvoda (сначало берется с квартиры adres если null то с дома houses) 46,50 (одн) - вид г/воды spr..spr_gvoda (с дома houses) 5 - вид канализации (spr..spr_kan) Но по перерасчетам также меняются: Тарифы, объем услуги, площадь помещения, код благоустройства, кол-во проживающих, смена котельной, поставщика и управляющей компании. CREATE TABLE dbo.ParameterAddit ( ID BIGINT - ИД (=Accruals.IDParameterAddit или =Recalculation.IDParameterAddit) ,IDType TYNYINT - (=ParameterAdditType.ID) ,IDParameter VARCHAR(100) - Дополнительный параметр ) ON [PRIMARY] CREATE TABLE dbo.ParameterAdditType ( ID BIGINT IDENTITY - ИД Name VARCHAR(100) - Наименования дополнительного параметра ) ON [PRIMARY] Итого: 1) Добавляем новые таблицы 2) Добавляем IDParameterAddit, Tariff, TariffEOT, IDBoiler, IDOrgContract, IDManagementCompany в Recalculation 3) Убираем Volume из Accruals так как он расчитывается из значений что уже есть: Volume=round((Amount/tariff),6) 4) Убираем IDStandartVolume из Accruals. Теперь он будет в ParameterAddit. Итого в ParameterAddit следующие параметры: 1) Этажность 2) вид воды 3) вид канализации 4) площадь помещения 5) код благоустройства 6) кол-во проживающих 7) вид списания 8) номер списания (физического документа) 9) дата списания (физического документа) CREATE TABLE dbo.Recalculation ( ID BIGINT IDENTITY - ИД ,IDAccruals BIGINT - (=Accruals.ID) ,IDUser BIGINT(?) - код пользователя ,IDCashBox INT - код кассы ,IDOrgContract INT? - Код договора ,IDManagementCompany INT? - Код упр компании ,IDBoiler BIGINT? - Котельная ,IDTypeRecalculation SMALLINT - Тип перерасчета ,IDParameterAddit TINYINT - Дополнительный параметр (=ParameterAddit.ID) ,DateRecalculation DATE - Дата перерасчета ,Tariff DECIMAL(18, 2) - Тарифы ,TariffEOT DECIMAL(18, 2) ,Amount DECIMAL(18, 2) - Сумма ,DateDel SMALLDATETIME ) ON [PRIMARY] ------------------------------------------------------------------------------- CREATE TABLE dbo.Debt ( ID BIGINT IDENTITY - ИД ,IDAccruals BIGINT - (=Accruals.ID) ,IDDebtContract BIGINT - Код документа ПИР ,Proportion TINYINT - Доля в процентах ,DateDel SMALLDATETIME - Пометка удаления записи ) ON [PRIMARY] CREATE TABLE dbo.Balance ( (Записи этой таблицы обязательно должны присутствовать для каждой записи из Accruals) ID BIGINT UNIQUE - ИД (=Accruals.ID) ,Saldo DECIMAL(18, 2) - Сальдо на начало расчетного периода (перерасчитывается при корректировках) ,Saldo10 DECIMAL(18, 2) - Сальдо на 10-е число текущего месяца (он же кредит или аванс, не меняется, нужен для ФЗ54) ,AmountFine DECIMAL(18, 2) - Пени (Перерасчитываются каждое 10 число, при корректировках и операциях с оплатами. В случае ПИР перерасчитываются только при опалатх ПИР.) ) ON [PRIMARY] CREATE TABLE dbo.Receipts ( ID BIGINT IDENTITY ,IDPersonalAccount BIGINT - ЛС ,IDAddressAddit BIGINT - Код доп постройки ,IDDebtContract BIGINT - Код документа ПИР ,IDUser BIGINT(?) - код пользователя ,IDCashBox INT - код кассы ,IDOrgContract BIGINT - Аналог поставщика (ИД контракта привязанного к конкретному контрагенту с услугами) ,IDManagementCompany INT - Код управляющей организации ,IDService INT - Код услуги ,IDType INT - Вид платежа (приход, расход, перенос, сторно) ,IDMoneyType INT - Вид денег ,Number BIGINT - Номер квитанции ,PaymentDate DATETIME - Дата платежа ,DateBegin DATE - Периоды оплаты в пределах календарного месяца ,DateEnd DATE - ,RepaymentNumber BIGINT - Номер сторно или переноса (технически надежней RepaymentNumber=ID сторно или переноса) ,Amount DECIMAL(18, 2) - Сумма платежа ,AmountFine DECIMAL(18, 2) - Сума пени ,AmountStateDuty DECIMAL(18, 2) - Гос пошлина -- Поля необходимые по ФЗ54 ,DecOldSaldo DECIMAL(18, 2) - оплата старых долгов ,DecCredit DECIMAL(18, 2) - размер уменьшения кредита ,Prepayment DECIMAL(18, 2) - размер предоплаты (кредит не закрыт) ,Prepayment100 DECIMAL(18, 2) - размер предоплаты 100% (кредит закрыт полностью) ---------------- ,Note NVARCHAR(500) - Поле для примечаний ,DateDel SMALLDATETIME - Пометка удаления записи ) ON [PRIMARY] CREATE TABLE dbo.Clearance ( ID BIGINT IDENTITY - ИД ,IDReceipts BIGINT - (=Receipts.ID) ,DateOperation DATETIME - Дата гашения ,Number BIGINT - Номер гашения ,DateDel SMALLDATETIME - Пометка удаления записи ) ON [PRIMARY] Откуда можно взять свежие данные: начисления kv2024.dbo.otchet_nach code IDAddressAddit ,kod_Adres IDPersonalAccount ,kod_uslugi IDService ,kod_postav IDOrgContract ,self IDManagementCompany ,kot IDBoiler ,gvoda IDParameterAddit ,id_volume IDStandartVolume ,mes DateBegin DateEnd ,tarif Tariff ,eot TariffEOT ,volume Volume ,summa Amount kv2024.dbo.saldo_a code ,kod_adres ,kod_uslugi ,kod_postav ,self ,data_s ,summa Saldo ,mes kv2024.dbo.post_a ( no_kv Number ,code IDAddressAddit ,kod_adres IDPersonalAccount ,kod_uslugi IDService ,vid_deneg IDMoneyType ,kod_postav IDOrgContract ,self IDManagementCompany ,summa Amount ,peni AmountFine ,data_opl PaymentDate ,data_gash Clearance.DateOperation ,kod_operator IDUser ,kod_kassa IDCashBox ,mes_n DateBegin ,god_n ,mes_e DateEnd ,god_e ,no_gash Clearance.Number ,prim Note ,mes