/******************************************************************************/ /*** Generated by IBExpert 2019.6.4.1 04.08.2021 23:33:44 ***/ /******************************************************************************/ SET SQL DIALECT 3; SET NAMES WIN1251; CREATE DATABASE 'localhost:kh' USER 'SYSDBA' PASSWORD 'Masterkey' PAGE_SIZE 4096 DEFAULT CHARACTER SET WIN1251 COLLATION WIN1251; /******************************************************************************/ /*** Domains ***/ /******************************************************************************/ CREATE DOMAIN CRDS_DATETIME AS TIMESTAMP; CREATE DOMAIN CRDS_ID_FK AS INTEGER NOT NULL; CREATE DOMAIN CRDS_ID_PK AS INTEGER NOT NULL; CREATE DOMAIN CRDS_NUMBER AS DOUBLE PRECISION; CREATE DOMAIN CRDS_VARCHAR_LONG AS VARCHAR(255); CREATE DOMAIN CRDS_VARCHAR_SMALL AS VARCHAR(20); CREATE DOMAIN DMN_NBR AS VARCHAR(32) DEFAULT ''; CREATE DOMAIN D_RIGHT_CODE AS VARCHAR(40); /******************************************************************************/ /*** Generators ***/ /******************************************************************************/ CREATE GENERATOR ACCNDOC_ID; SET GENERATOR ACCNDOC_ID TO 0; CREATE GENERATOR ACCNOPER_ID; SET GENERATOR ACCNOPER_ID TO 0; CREATE GENERATOR ACCNPLAN_ID; SET GENERATOR ACCNPLAN_ID TO 329; CREATE GENERATOR ACCNPROV_ID; SET GENERATOR ACCNPROV_ID TO 5444825; CREATE GENERATOR ACOPRLST_ID; SET GENERATOR ACOPRLST_ID TO 950; CREATE GENERATOR BANKMFO_ID; SET GENERATOR BANKMFO_ID TO 5358; CREATE GENERATOR BOOKSLDTACCR_ID; SET GENERATOR BOOKSLDTACCR_ID TO 0; CREATE GENERATOR BOOKSLDTDAYS_ID; SET GENERATOR BOOKSLDTDAYS_ID TO 143; CREATE GENERATOR BOOKSLDT_ID; SET GENERATOR BOOKSLDT_ID TO 0; CREATE GENERATOR BOOKSLKTACCR_ID; SET GENERATOR BOOKSLKTACCR_ID TO 0; CREATE GENERATOR BOOKSLKTDAYS_ID; SET GENERATOR BOOKSLKTDAYS_ID TO 0; CREATE GENERATOR BOOKSLKT_ID; SET GENERATOR BOOKSLKT_ID TO 0; CREATE GENERATOR CONTACTS_ID; SET GENERATOR CONTACTS_ID TO 0; CREATE GENERATOR CSDTKTHB_ID; SET GENERATOR CSDTKTHB_ID TO 19; CREATE GENERATOR CSDTKT_ID; SET GENERATOR CSDTKT_ID TO 0; CREATE GENERATOR CURRDATA_ID; SET GENERATOR CURRDATA_ID TO 8; CREATE GENERATOR CURRSTORDAYSACCR_ID; SET GENERATOR CURRSTORDAYSACCR_ID TO 0; CREATE GENERATOR CURRSTORDAYS_ID; SET GENERATOR CURRSTORDAYS_ID TO 0; CREATE GENERATOR CURRSTORDTKT_ID; SET GENERATOR CURRSTORDTKT_ID TO 0; CREATE GENERATOR CURRSTOR_ID; SET GENERATOR CURRSTOR_ID TO 0; CREATE GENERATOR CURRTYP_ID; SET GENERATOR CURRTYP_ID TO 37; CREATE GENERATOR DGDTACCN_ID; SET GENERATOR DGDTACCN_ID TO 1732648; CREATE GENERATOR DGDUACCN_ID; SET GENERATOR DGDUACCN_ID TO 436; CREATE GENERATOR DGKTACCN_ID; SET GENERATOR DGKTACCN_ID TO 1253160; CREATE GENERATOR DGKUACCN_ID; SET GENERATOR DGKUACCN_ID TO 273; CREATE GENERATOR DGVDTKT_LOG_ID; SET GENERATOR DGVDTKT_LOG_ID TO 0; CREATE GENERATOR DGVDTUD_ID; SET GENERATOR DGVDTUD_ID TO 9; CREATE GENERATOR DGVDTU_ID; SET GENERATOR DGVDTU_ID TO 3443; CREATE GENERATOR DGVDT_ID; SET GENERATOR DGVDT_ID TO 7220132; CREATE GENERATOR DGVDT_TASK_ID; SET GENERATOR DGVDT_TASK_ID TO 0; CREATE GENERATOR DGVDUGRP_ID; SET GENERATOR DGVDUGRP_ID TO 7; CREATE GENERATOR DGVKTU_DGVDT_REF_ID; SET GENERATOR DGVKTU_DGVDT_REF_ID TO 0; CREATE GENERATOR DGVKTU_ID; SET GENERATOR DGVKTU_ID TO 57969; CREATE GENERATOR DGVKT_ID; SET GENERATOR DGVKT_ID TO 1578077; CREATE GENERATOR DGVWKG_ID; SET GENERATOR DGVWKG_ID TO 2419; CREATE GENERATOR DGVWK_ID; SET GENERATOR DGVWK_ID TO 0; CREATE GENERATOR DKBILLCOUNT_ID; SET GENERATOR DKBILLCOUNT_ID TO 9492; CREATE GENERATOR DKBILLGDS_ID; SET GENERATOR DKBILLGDS_ID TO 178368; CREATE GENERATOR DKBILLPRSN_ID; SET GENERATOR DKBILLPRSN_ID TO 27; CREATE GENERATOR DKBILL_ID; SET GENERATOR DKBILL_ID TO 6210; CREATE GENERATOR DK_ACCESSCOMMANDUSERREF_ID; SET GENERATOR DK_ACCESSCOMMANDUSERREF_ID TO 0; CREATE GENERATOR DK_ACCESSCOMMAND_ID; SET GENERATOR DK_ACCESSCOMMAND_ID TO 0; CREATE GENERATOR DK_ACCESSDATAUSERREF_ID; SET GENERATOR DK_ACCESSDATAUSERREF_ID TO 570; CREATE GENERATOR DK_ACCESSDATA_ID; SET GENERATOR DK_ACCESSDATA_ID TO 0; CREATE GENERATOR DK_BONUSACCRUAL_ID; SET GENERATOR DK_BONUSACCRUAL_ID TO 203; CREATE GENERATOR DK_COMMAND_ID; SET GENERATOR DK_COMMAND_ID TO 4; CREATE GENERATOR DK_DATA_ID; SET GENERATOR DK_DATA_ID TO 29; CREATE GENERATOR DK_GIFTCERTIFICATE_ID; SET GENERATOR DK_GIFTCERTIFICATE_ID TO 1512; CREATE GENERATOR DK_GODGODPAMLANREF_ID; SET GENERATOR DK_GODGODPAMLANREF_ID TO 397; CREATE GENERATOR DK_GODPAMLANREF_ID; SET GENERATOR DK_GODPAMLANREF_ID TO 0; CREATE GENERATOR DK_GODPAMVALLANREF_ID; SET GENERATOR DK_GODPAMVALLANREF_ID TO 0; CREATE GENERATOR DK_GOODSLANGUAGEREF_ID; SET GENERATOR DK_GOODSLANGUAGEREF_ID TO 411; CREATE GENERATOR DK_GOODSPACK_ID; SET GENERATOR DK_GOODSPACK_ID TO 28; CREATE GENERATOR DK_LANGUAGE_ID; SET GENERATOR DK_LANGUAGE_ID TO 2; CREATE GENERATOR DK_MAILINGTHEMES_ID; SET GENERATOR DK_MAILINGTHEMES_ID TO 2; CREATE GENERATOR DK_MAILINGTYPES_ID; SET GENERATOR DK_MAILINGTYPES_ID TO 0; CREATE GENERATOR DK_MAILTHEMETYPESORGNREF_ID; SET GENERATOR DK_MAILTHEMETYPESORGNREF_ID TO 16125; CREATE GENERATOR DK_MAILTYPEORGNREF_ID; SET GENERATOR DK_MAILTYPEORGNREF_ID TO 2379; CREATE GENERATOR DK_PENALPROITY_ID; SET GENERATOR DK_PENALPROITY_ID TO 15195; CREATE GENERATOR DK_PRSNGRPREF_ID; SET GENERATOR DK_PRSNGRPREF_ID TO 584; CREATE GENERATOR DK_PRSNGRP_ID; SET GENERATOR DK_PRSNGRP_ID TO 21; CREATE GENERATOR DOCCOMMENT_ID; SET GENERATOR DOCCOMMENT_ID TO 73; CREATE GENERATOR DOCMCATEGORY_ID; SET GENERATOR DOCMCATEGORY_ID TO 0; CREATE GENERATOR DOCMDOCDOCUMENT_ID; SET GENERATOR DOCMDOCDOCUMENT_ID TO 0; CREATE GENERATOR DOCMDOCFOLDER_ID; SET GENERATOR DOCMDOCFOLDER_ID TO 0; CREATE GENERATOR DOCMGROUPS_ID; SET GENERATOR DOCMGROUPS_ID TO 0; CREATE GENERATOR DOCMMSGFOLDER_ID; SET GENERATOR DOCMMSGFOLDER_ID TO 5; CREATE GENERATOR DOCMMSGRUSERS_ID; SET GENERATOR DOCMMSGRUSERS_ID TO 0; CREATE GENERATOR DOCMMSG_ID; SET GENERATOR DOCMMSG_ID TO 0; CREATE GENERATOR DOCMTASKATTACH_ID; SET GENERATOR DOCMTASKATTACH_ID TO 0; CREATE GENERATOR DOCMTASKCATEGORY_ID; SET GENERATOR DOCMTASKCATEGORY_ID TO 0; CREATE GENERATOR DOCMTASKFINANCE_ID; SET GENERATOR DOCMTASKFINANCE_ID TO 0; CREATE GENERATOR DOCMTASKHBCATEGORY_ID; SET GENERATOR DOCMTASKHBCATEGORY_ID TO 0; CREATE GENERATOR DOCMTASKHB_ID; SET GENERATOR DOCMTASKHB_ID TO 0; CREATE GENERATOR DOCMTASKSTAGE_ID; SET GENERATOR DOCMTASKSTAGE_ID TO 0; CREATE GENERATOR DOCMTASKSUSERS_ID; SET GENERATOR DOCMTASKSUSERS_ID TO 0; CREATE GENERATOR DOCMTASKSUWORK_ID; SET GENERATOR DOCMTASKSUWORK_ID TO 0; CREATE GENERATOR DOCMTASKWORK_ID; SET GENERATOR DOCMTASKWORK_ID TO 0; CREATE GENERATOR DOCMTASK_ID; SET GENERATOR DOCMTASK_ID TO 0; CREATE GENERATOR ECRGOODS_ID; SET GENERATOR ECRGOODS_ID TO 1235; CREATE GENERATOR EDUCATION_ID; SET GENERATOR EDUCATION_ID TO 0; CREATE GENERATOR FRREPORTTREEUSER_ID; SET GENERATOR FRREPORTTREEUSER_ID TO 170; CREATE GENERATOR FRREPORTTREE_ID; SET GENERATOR FRREPORTTREE_ID TO 6; CREATE GENERATOR FRREPORT_ID; SET GENERATOR FRREPORT_ID TO 3; CREATE GENERATOR GDDDTDDU_ID; SET GENERATOR GDDDTDDU_ID TO 11; CREATE GENERATOR GDDDTPARAM_ID; SET GENERATOR GDDDTPARAM_ID TO 12668; CREATE GENERATOR GDDDTUNL_ID; SET GENERATOR GDDDTUNL_ID TO 5; CREATE GENERATOR GDDDTU_ID; SET GENERATOR GDDDTU_ID TO 3445; CREATE GENERATOR GDDDT_ID; SET GENERATOR GDDDT_ID TO 19977367; CREATE GENERATOR GDDKTDDU_ID; SET GENERATOR GDDKTDDU_ID TO 1203; CREATE GENERATOR GDDKTPARAM_ID; SET GENERATOR GDDKTPARAM_ID TO 23; CREATE GENERATOR GDDKTU_ID; SET GENERATOR GDDKTU_ID TO 57998; CREATE GENERATOR GDDKTZKPARAMS_ID; SET GENERATOR GDDKTZKPARAMS_ID TO 0; CREATE GENERATOR GDDKT_ID; SET GENERATOR GDDKT_ID TO 6136800; CREATE GENERATOR GDSKTREQGDS_ID; SET GENERATOR GDSKTREQGDS_ID TO 11; CREATE GENERATOR GDSKTREQ_ID; SET GENERATOR GDSKTREQ_ID TO 1; CREATE GENERATOR GDSPARAMGDSREF_ID; SET GENERATOR GDSPARAMGDSREF_ID TO 28725; CREATE GENERATOR GDSPARAMGRPREF_ID; SET GENERATOR GDSPARAMGRPREF_ID TO 1329; CREATE GENERATOR GDSPARAMGRP_ID; SET GENERATOR GDSPARAMGRP_ID TO 7; CREATE GENERATOR GDSPARAMPRM_ID; SET GENERATOR GDSPARAMPRM_ID TO 26; CREATE GENERATOR GDSPARAMVAL_ID; SET GENERATOR GDSPARAMVAL_ID TO 113; CREATE GENERATOR GEN_BDG_ATTR_ID; SET GENERATOR GEN_BDG_ATTR_ID TO 0; CREATE GENERATOR GEN_BDG_ATTR_VAL_ID; SET GENERATOR GEN_BDG_ATTR_VAL_ID TO 0; CREATE GENERATOR GEN_BDG_BASIS_ID; SET GENERATOR GEN_BDG_BASIS_ID TO 1; CREATE GENERATOR GEN_BDG_BASIS_PORTION_ID; SET GENERATOR GEN_BDG_BASIS_PORTION_ID TO 0; CREATE GENERATOR GEN_BDG_CALC_DATA_ID; SET GENERATOR GEN_BDG_CALC_DATA_ID TO 0; CREATE GENERATOR GEN_BDG_CALC_GOODS_ID; SET GENERATOR GEN_BDG_CALC_GOODS_ID TO 0; CREATE GENERATOR GEN_BDG_CALC_ID; SET GENERATOR GEN_BDG_CALC_ID TO 1; CREATE GENERATOR GEN_BDG_CALC_ORDER_ID; SET GENERATOR GEN_BDG_CALC_ORDER_ID TO 0; CREATE GENERATOR GEN_BDG_CALC_WGOODS_ID; SET GENERATOR GEN_BDG_CALC_WGOODS_ID TO 0; CREATE GENERATOR GEN_BDG_CENTER_ID; SET GENERATOR GEN_BDG_CENTER_ID TO 64; CREATE GENERATOR GEN_BDG_DATA_STATE_ID; SET GENERATOR GEN_BDG_DATA_STATE_ID TO 0; CREATE GENERATOR GEN_BDG_DIRECTION_ID; SET GENERATOR GEN_BDG_DIRECTION_ID TO 3; CREATE GENERATOR GEN_BDG_DISTR_BASIS_ID; SET GENERATOR GEN_BDG_DISTR_BASIS_ID TO 0; CREATE GENERATOR GEN_BDG_DISTR_ID; SET GENERATOR GEN_BDG_DISTR_ID TO 0; CREATE GENERATOR GEN_BDG_DISTR_ORDER_ID; SET GENERATOR GEN_BDG_DISTR_ORDER_ID TO 0; CREATE GENERATOR GEN_BDG_DISTR_PORTION_ID; SET GENERATOR GEN_BDG_DISTR_PORTION_ID TO 0; CREATE GENERATOR GEN_BDG_DOC_ID; SET GENERATOR GEN_BDG_DOC_ID TO 0; CREATE GENERATOR GEN_BDG_GOODS_ID; SET GENERATOR GEN_BDG_GOODS_ID TO 8970704; CREATE GENERATOR GEN_BDG_INDICATOR_ID; SET GENERATOR GEN_BDG_INDICATOR_ID TO 1; CREATE GENERATOR GEN_BDG_IND_VAL_ID; SET GENERATOR GEN_BDG_IND_VAL_ID TO 0; CREATE GENERATOR GEN_BDG_ITEM_ID; SET GENERATOR GEN_BDG_ITEM_ID TO 323; CREATE GENERATOR GEN_BDG_LINK_ITEM_CENTER_ID; SET GENERATOR GEN_BDG_LINK_ITEM_CENTER_ID TO 6019; CREATE GENERATOR GEN_BDG_LINK_PAPER_ATTR_ID; SET GENERATOR GEN_BDG_LINK_PAPER_ATTR_ID TO 0; CREATE GENERATOR GEN_BDG_LINK_PAPER_ATTR_VAL_ID; SET GENERATOR GEN_BDG_LINK_PAPER_ATTR_VAL_ID TO 0; CREATE GENERATOR GEN_BDG_LINK_USER_CENTER_ID; SET GENERATOR GEN_BDG_LINK_USER_CENTER_ID TO 59; CREATE GENERATOR GEN_BDG_LINK_USER_DIRECTION_ID; SET GENERATOR GEN_BDG_LINK_USER_DIRECTION_ID TO 6; CREATE GENERATOR GEN_BDG_PAPER_ID; SET GENERATOR GEN_BDG_PAPER_ID TO 8226686; CREATE GENERATOR GEN_BDG_PERIOD_ID; SET GENERATOR GEN_BDG_PERIOD_ID TO 279; CREATE GENERATOR GEN_BDG_PLAN_ID; SET GENERATOR GEN_BDG_PLAN_ID TO 0; CREATE GENERATOR GEN_BDG_PRICE_GOODS_ID; SET GENERATOR GEN_BDG_PRICE_GOODS_ID TO 0; CREATE GENERATOR GEN_BDG_PRICE_ID; SET GENERATOR GEN_BDG_PRICE_ID TO 0; CREATE GENERATOR GEN_BDG_RDOC_ID; SET GENERATOR GEN_BDG_RDOC_ID TO 0; CREATE GENERATOR GEN_BDG_RGOODS_ID; SET GENERATOR GEN_BDG_RGOODS_ID TO 0; CREATE GENERATOR GEN_BDG_SCHEME_ID; SET GENERATOR GEN_BDG_SCHEME_ID TO 0; CREATE GENERATOR GEN_BDG_SCHEME_OPER_ID; SET GENERATOR GEN_BDG_SCHEME_OPER_ID TO 0; CREATE GENERATOR GEN_BDG_SCHEME_ORDER_ID; SET GENERATOR GEN_BDG_SCHEME_ORDER_ID TO 0; CREATE GENERATOR GEN_BDG_SERV_ID; SET GENERATOR GEN_BDG_SERV_ID TO 77; CREATE GENERATOR GEN_BDG_SHEDULE_ID; SET GENERATOR GEN_BDG_SHEDULE_ID TO 0; CREATE GENERATOR GEN_BDG_SHEDULE_SHIFT_ID; SET GENERATOR GEN_BDG_SHEDULE_SHIFT_ID TO 0; CREATE GENERATOR GEN_BDG_WGOODS_ID; SET GENERATOR GEN_BDG_WGOODS_ID TO 0; CREATE GENERATOR GEN_BDG_WPAPER_ID; SET GENERATOR GEN_BDG_WPAPER_ID TO 0; CREATE GENERATOR GEN_CRDS_AVLGOODS_ID; SET GENERATOR GEN_CRDS_AVLGOODS_ID TO 0; CREATE GENERATOR GEN_CRDS_DGVDT_ID; SET GENERATOR GEN_CRDS_DGVDT_ID TO 0; CREATE GENERATOR GEN_CRDS_DGVKT_ID; SET GENERATOR GEN_CRDS_DGVKT_ID TO 2; CREATE GENERATOR GEN_CRDS_GDDDT_ID; SET GENERATOR GEN_CRDS_GDDDT_ID TO 0; CREATE GENERATOR GEN_CRDS_GDDKT_ID; SET GENERATOR GEN_CRDS_GDDKT_ID TO 0; CREATE GENERATOR GEN_CTLGDISTR_ID; SET GENERATOR GEN_CTLGDISTR_ID TO 0; CREATE GENERATOR GEN_CTLGENTITY_ID; SET GENERATOR GEN_CTLGENTITY_ID TO 0; CREATE GENERATOR GEN_CTLGITEM_ID; SET GENERATOR GEN_CTLGITEM_ID TO 0; CREATE GENERATOR GEN_CTLGKIND_ID; SET GENERATOR GEN_CTLGKIND_ID TO 0; CREATE GENERATOR GEN_CTLGTHEME_ID; SET GENERATOR GEN_CTLGTHEME_ID TO 0; CREATE GENERATOR GEN_DISTR_PORTION_ID; SET GENERATOR GEN_DISTR_PORTION_ID TO 0; CREATE GENERATOR GEN_DK_BNS_ID; SET GENERATOR GEN_DK_BNS_ID TO 11; CREATE GENERATOR GEN_DK_BNS_ORGN_ID; SET GENERATOR GEN_DK_BNS_ORGN_ID TO 65077; CREATE GENERATOR GEN_DK_BNS_ORGN_LOG_ID; SET GENERATOR GEN_DK_BNS_ORGN_LOG_ID TO 1055457; CREATE GENERATOR GEN_DK_BNS_PRICEGOODS_ID; SET GENERATOR GEN_DK_BNS_PRICEGOODS_ID TO 14836; CREATE GENERATOR GEN_DK_DISCOUNTBONUSSETGOODS_ID; SET GENERATOR GEN_DK_DISCOUNTBONUSSETGOODS_ID TO 3331; CREATE GENERATOR GEN_DK_DISCOUNTBONUSSETORGN; SET GENERATOR GEN_DK_DISCOUNTBONUSSETORGN TO 740; CREATE GENERATOR GEN_DK_DISCOUNTBONUSSETSTORGRP; SET GENERATOR GEN_DK_DISCOUNTBONUSSETSTORGRP TO 1530; CREATE GENERATOR GEN_DK_DISCOUNTBONUSSETS_ID; SET GENERATOR GEN_DK_DISCOUNTBONUSSETS_ID TO 775; CREATE GENERATOR GEN_DK_DSCNT_ID; SET GENERATOR GEN_DK_DSCNT_ID TO 7; CREATE GENERATOR GEN_DOCMPROJECT_ID; SET GENERATOR GEN_DOCMPROJECT_ID TO 0; CREATE GENERATOR GEN_FUNCMANAGE_ID; SET GENERATOR GEN_FUNCMANAGE_ID TO 0; CREATE GENERATOR GEN_FUNCSUPPORT_ID; SET GENERATOR GEN_FUNCSUPPORT_ID TO 0; CREATE GENERATOR GEN_MANAGER_PALM_ID; SET GENERATOR GEN_MANAGER_PALM_ID TO 0; CREATE GENERATOR GEN_MANAGER_PRICE_ORG_ID; SET GENERATOR GEN_MANAGER_PRICE_ORG_ID TO 0; CREATE GENERATOR GEN_MDOCS_ID; SET GENERATOR GEN_MDOCS_ID TO 0; CREATE GENERATOR GEN_MDOC_GOODS_ID; SET GENERATOR GEN_MDOC_GOODS_ID TO 0; CREATE GENERATOR GEN_MOG_DISCOUNT_ID; SET GENERATOR GEN_MOG_DISCOUNT_ID TO 0; CREATE GENERATOR GEN_PALMS_ID; SET GENERATOR GEN_PALMS_ID TO 0; CREATE GENERATOR GEN_PALM_TRANSFER; SET GENERATOR GEN_PALM_TRANSFER TO 27; CREATE GENERATOR GEN_PODR_FUNCMANAGE_ID; SET GENERATOR GEN_PODR_FUNCMANAGE_ID TO 0; CREATE GENERATOR GEN_PODR_FUNCSUPPORT_ID; SET GENERATOR GEN_PODR_FUNCSUPPORT_ID TO 0; CREATE GENERATOR GEN_POST_FUNCMANAGE_ID; SET GENERATOR GEN_POST_FUNCMANAGE_ID TO 0; CREATE GENERATOR GEN_POST_FUNCSUPPORT_ID; SET GENERATOR GEN_POST_FUNCSUPPORT_ID TO 0; CREATE GENERATOR GEN_PRSNATTACH_ID; SET GENERATOR GEN_PRSNATTACH_ID TO 0; CREATE GENERATOR GEN_PRSNOPERTYPE_ID; SET GENERATOR GEN_PRSNOPERTYPE_ID TO 0; CREATE GENERATOR GEN_PRSNOPER_ID; SET GENERATOR GEN_PRSNOPER_ID TO 0; CREATE GENERATOR GEN_USERDCATEGORY_ID; SET GENERATOR GEN_USERDCATEGORY_ID TO 0; CREATE GENERATOR GEN_USERDDOCFOLDER_ID; SET GENERATOR GEN_USERDDOCFOLDER_ID TO 0; CREATE GENERATOR GEN_USER_RIGHT_ID; SET GENERATOR GEN_USER_RIGHT_ID TO 101; CREATE GENERATOR GOODSGROUPS_ID; SET GENERATOR GOODSGROUPS_ID TO 16509; CREATE GENERATOR GOODSGRP_ID; SET GENERATOR GOODSGRP_ID TO 0; CREATE GENERATOR GOODSPRICEPROC_ID; SET GENERATOR GOODSPRICEPROC_ID TO 0; CREATE GENERATOR GOODS_DECRNORM_ID; SET GENERATOR GOODS_DECRNORM_ID TO 0; CREATE GENERATOR GOODS_ID; SET GENERATOR GOODS_ID TO 19260; CREATE GENERATOR HBDTNL_ID; SET GENERATOR HBDTNL_ID TO 2; CREATE GENERATOR HBGDDDU_ID; SET GENERATOR HBGDDDU_ID TO 3; CREATE GENERATOR HBKTSU_ID; SET GENERATOR HBKTSU_ID TO 41; CREATE GENERATOR HBONE_ID; SET GENERATOR HBONE_ID TO 9; CREATE GENERATOR HBPRSNTEST_ID; SET GENERATOR HBPRSNTEST_ID TO 0; CREATE GENERATOR HBSERVU_ID; SET GENERATOR HBSERVU_ID TO 28; CREATE GENERATOR HB_VEHICLE_ID; SET GENERATOR HB_VEHICLE_ID TO 1; CREATE GENERATOR INFOSRC_ID; SET GENERATOR INFOSRC_ID TO 0; CREATE GENERATOR INTERVIEW_ID; SET GENERATOR INTERVIEW_ID TO 0; CREATE GENERATOR INVOPISDATA_ID; SET GENERATOR INVOPISDATA_ID TO 38460836; CREATE GENERATOR INVOPISHEADER_ID; SET GENERATOR INVOPISHEADER_ID TO 123275; CREATE GENERATOR KASSACCR_ID; SET GENERATOR KASSACCR_ID TO 2261066; CREATE GENERATOR KASSAVACCR_ID; SET GENERATOR KASSAVACCR_ID TO 0; CREATE GENERATOR KASSAVCR_ID; SET GENERATOR KASSAVCR_ID TO 1; CREATE GENERATOR KASSAVDATA_ID; SET GENERATOR KASSAVDATA_ID TO 1; CREATE GENERATOR KASSAVLIST_ID; SET GENERATOR KASSAVLIST_ID TO 1; CREATE GENERATOR KASSDATA_ID; SET GENERATOR KASSDATA_ID TO 979016; CREATE GENERATOR KASSDAYS_ID; SET GENERATOR KASSDAYS_ID TO 123960; CREATE GENERATOR KASSLIST_ID; SET GENERATOR KASSLIST_ID TO 90; CREATE GENERATOR LANG_ID; SET GENERATOR LANG_ID TO 0; CREATE GENERATOR LEV_ID; SET GENERATOR LEV_ID TO 17; CREATE GENERATOR MAINAMCR_ID; SET GENERATOR MAINAMCR_ID TO 0; CREATE GENERATOR MAINAMMST_ID; SET GENERATOR MAINAMMST_ID TO 0; CREATE GENERATOR MAINAMSLV_ID; SET GENERATOR MAINAMSLV_ID TO 0; CREATE GENERATOR MAINCRCH_ID; SET GENERATOR MAINCRCH_ID TO 2; CREATE GENERATOR MAINGRP_ID; SET GENERATOR MAINGRP_ID TO 36; CREATE GENERATOR MAININPAC_ID; SET GENERATOR MAININPAC_ID TO 2; CREATE GENERATOR MAINMEANSLV_ID; SET GENERATOR MAINMEANSLV_ID TO 0; CREATE GENERATOR MAINMEAN_ID; SET GENERATOR MAINMEAN_ID TO 514; CREATE GENERATOR MAINMOVE_ID; SET GENERATOR MAINMOVE_ID TO 4; CREATE GENERATOR MAINOUTAC_ID; SET GENERATOR MAINOUTAC_ID TO 0; CREATE GENERATOR MAINPRICE_ID; SET GENERATOR MAINPRICE_ID TO 4; CREATE GENERATOR MAINRPTINVMST_ID; SET GENERATOR MAINRPTINVMST_ID TO 0; CREATE GENERATOR MAINRPTINVSLV_ID; SET GENERATOR MAINRPTINVSLV_ID TO 0; CREATE GENERATOR MBPDGAC_ID; SET GENERATOR MBPDGAC_ID TO 0; CREATE GENERATOR MBPDGV_ID; SET GENERATOR MBPDGV_ID TO 10; CREATE GENERATOR MBPGDD_ID; SET GENERATOR MBPGDD_ID TO 15; CREATE GENERATOR MBPMEAN_ID; SET GENERATOR MBPMEAN_ID TO 13; CREATE GENERATOR OBJ_ATTACH_ID; SET GENERATOR OBJ_ATTACH_ID TO 0; CREATE GENERATOR OBJ_CLASS_ID; SET GENERATOR OBJ_CLASS_ID TO 34647192; CREATE GENERATOR OBJ_MSGREAD_ID; SET GENERATOR OBJ_MSGREAD_ID TO 1; CREATE GENERATOR OBJ_MSG_ID; SET GENERATOR OBJ_MSG_ID TO 1; CREATE GENERATOR OBJ_STAGEROUTESTD_ID; SET GENERATOR OBJ_STAGEROUTESTD_ID TO 0; CREATE GENERATOR OBJ_STAGESTD_ID; SET GENERATOR OBJ_STAGESTD_ID TO 0; CREATE GENERATOR OPERACT_ID; SET GENERATOR OPERACT_ID TO 0; CREATE GENERATOR OPERADD_ID; SET GENERATOR OPERADD_ID TO 0; CREATE GENERATOR OPERATTEST_ID; SET GENERATOR OPERATTEST_ID TO 0; CREATE GENERATOR OPERAWARD_ID; SET GENERATOR OPERAWARD_ID TO 0; CREATE GENERATOR OPERDELETE_ID; SET GENERATOR OPERDELETE_ID TO 0; CREATE GENERATOR OPERFIO_ID; SET GENERATOR OPERFIO_ID TO 0; CREATE GENERATOR OPERREMOVE_ID; SET GENERATOR OPERREMOVE_ID TO 0; CREATE GENERATOR OPERREST_ID; SET GENERATOR OPERREST_ID TO 0; CREATE GENERATOR OPERSTUDY_ID; SET GENERATOR OPERSTUDY_ID TO 0; CREATE GENERATOR OPERTRIP_ID; SET GENERATOR OPERTRIP_ID TO 0; CREATE GENERATOR ORGNACCN_ID; SET GENERATOR ORGNACCN_ID TO 0; CREATE GENERATOR ORGNBANKACCN_ID; SET GENERATOR ORGNBANKACCN_ID TO 2884; CREATE GENERATOR ORGNGRPOPEMAIL_ID; SET GENERATOR ORGNGRPOPEMAIL_ID TO 0; CREATE GENERATOR ORGNGRPREF_ID; SET GENERATOR ORGNGRPREF_ID TO 80192; CREATE GENERATOR ORGNINFO_ID; SET GENERATOR ORGNINFO_ID TO 1; CREATE GENERATOR ORGNPRICELIST_ID; SET GENERATOR ORGNPRICELIST_ID TO 47; CREATE GENERATOR ORGN_GRPHIDE_ID; SET GENERATOR ORGN_GRPHIDE_ID TO 0; CREATE GENERATOR ORGN_GRP_ID; SET GENERATOR ORGN_GRP_ID TO 67; CREATE GENERATOR ORGN_ID; SET GENERATOR ORGN_ID TO 55307; CREATE GENERATOR ORGN_MANAGER_ID; SET GENERATOR ORGN_MANAGER_ID TO 16; CREATE GENERATOR PERSONAL_ID; SET GENERATOR PERSONAL_ID TO 547; CREATE GENERATOR PODRLIST_ID; SET GENERATOR PODRLIST_ID TO 50; CREATE GENERATOR PODRPOST_ID; SET GENERATOR PODRPOST_ID TO 3; CREATE GENERATOR PRICEGOODS_ID; SET GENERATOR PRICEGOODS_ID TO 235887; CREATE GENERATOR PRICELIST_ID; SET GENERATOR PRICELIST_ID TO 226; CREATE GENERATOR PROFEXPERIENCE_ID; SET GENERATOR PROFEXPERIENCE_ID TO 0; CREATE GENERATOR PRSNCARD_ID; SET GENERATOR PRSNCARD_ID TO 447; CREATE GENERATOR PRSNMOVE_ID; SET GENERATOR PRSNMOVE_ID TO 4; CREATE GENERATOR PRSNOPEMAIL_ID; SET GENERATOR PRSNOPEMAIL_ID TO 0; CREATE GENERATOR PRSNORGN_ID; SET GENERATOR PRSNORGN_ID TO 0; CREATE GENERATOR PRSNPOSTPROF_ID; SET GENERATOR PRSNPOSTPROF_ID TO 0; CREATE GENERATOR PRSNPOST_ID; SET GENERATOR PRSNPOST_ID TO 10; CREATE GENERATOR PRSNTEST_ID; SET GENERATOR PRSNTEST_ID TO 0; CREATE GENERATOR PTANSW_ID; SET GENERATOR PTANSW_ID TO 0; CREATE GENERATOR PTQUEST_ID; SET GENERATOR PTQUEST_ID TO 0; CREATE GENERATOR RBPRODOC_ID; SET GENERATOR RBPRODOC_ID TO 38; CREATE GENERATOR REGION_ID; SET GENERATOR REGION_ID TO 210; CREATE GENERATOR REPLICATIONLOGFLD_ID; SET GENERATOR REPLICATIONLOGFLD_ID TO 0; CREATE GENERATOR REPLICATIONLOGREC_ID; SET GENERATOR REPLICATIONLOGREC_ID TO 0; CREATE GENERATOR REPLICATIONLOG_ID; SET GENERATOR REPLICATIONLOG_ID TO 0; CREATE GENERATOR REPLICATIONOFFICE_ID; SET GENERATOR REPLICATIONOFFICE_ID TO 0; CREATE GENERATOR RESERVLOG_ID; SET GENERATOR RESERVLOG_ID TO 0; CREATE GENERATOR SALEACCN_ID; SET GENERATOR SALEACCN_ID TO 1931; CREATE GENERATOR SALECROS_ID; SET GENERATOR SALECROS_ID TO 2463728; CREATE GENERATOR SALEDTDATA_ID; SET GENERATOR SALEDTDATA_ID TO 1; CREATE GENERATOR SALEDTVKCR_ID; SET GENERATOR SALEDTVKCR_ID TO 0; CREATE GENERATOR SALEDUCR_ID; SET GENERATOR SALEDUCR_ID TO 8492; CREATE GENERATOR SALEKTAC_ID; SET GENERATOR SALEKTAC_ID TO 390652; CREATE GENERATOR SALEKTCR_ID; SET GENERATOR SALEKTCR_ID TO 125180; CREATE GENERATOR SALEKTDATA_ID; SET GENERATOR SALEKTDATA_ID TO 0; CREATE GENERATOR SALEKTVKCR_ID; SET GENERATOR SALEKTVKCR_ID TO 0; CREATE GENERATOR SALEKT_ID; SET GENERATOR SALEKT_ID TO 150123; CREATE GENERATOR SALEKUCR_ID; SET GENERATOR SALEKUCR_ID TO 137316; CREATE GENERATOR SALE_ID; SET GENERATOR SALE_ID TO 1043190; CREATE GENERATOR SC_CARDS_ID; SET GENERATOR SC_CARDS_ID TO 0; CREATE GENERATOR SC_CARDT_ID; SET GENERATOR SC_CARDT_ID TO 10116; CREATE GENERATOR SC_REMONT1_ID; SET GENERATOR SC_REMONT1_ID TO 0; CREATE GENERATOR SC_REMONT_ID; SET GENERATOR SC_REMONT_ID TO 0; CREATE GENERATOR SC_REMO_ID; SET GENERATOR SC_REMO_ID TO 0; CREATE GENERATOR SC_REMO_TYPE_ID; SET GENERATOR SC_REMO_TYPE_ID TO 0; CREATE GENERATOR SC_REMO_TYPE_PARAMS_ID; SET GENERATOR SC_REMO_TYPE_PARAMS_ID TO 0; CREATE GENERATOR SC_REMZAP1_ID; SET GENERATOR SC_REMZAP1_ID TO 0; CREATE GENERATOR SC_REMZAP_ID; SET GENERATOR SC_REMZAP_ID TO 0; CREATE GENERATOR SERVICESVD_ID; SET GENERATOR SERVICESVD_ID TO 0; CREATE GENERATOR SLDTCRAC_ID; SET GENERATOR SLDTCRAC_ID TO 0; CREATE GENERATOR SLKTCRAC_ID; SET GENERATOR SLKTCRAC_ID TO 75; CREATE GENERATOR SRORGRP_ID; SET GENERATOR SRORGRP_ID TO 0; CREATE GENERATOR STORACCN_ID; SET GENERATOR STORACCN_ID TO 4669; CREATE GENERATOR STORGRPREF_ID; SET GENERATOR STORGRPREF_ID TO 1444; CREATE GENERATOR STORGRP_ID; SET GENERATOR STORGRP_ID TO 71; CREATE GENERATOR STORGRP_NCOST_ID; SET GENERATOR STORGRP_NCOST_ID TO 0; CREATE GENERATOR STORLIST_ID; SET GENERATOR STORLIST_ID TO 158; CREATE GENERATOR STOROPER_ID; SET GENERATOR STOROPER_ID TO 0; CREATE GENERATOR STORZAKAZDT_ID; SET GENERATOR STORZAKAZDT_ID TO 5282241; CREATE GENERATOR STORZDTGDS_ID; SET GENERATOR STORZDTGDS_ID TO 12995313; CREATE GENERATOR SUB_ID; SET GENERATOR SUB_ID TO 0; CREATE GENERATOR SYSCONST_ID; SET GENERATOR SYSCONST_ID TO 3789; CREATE GENERATOR SYSLOGLOGIN_ID; SET GENERATOR SYSLOGLOGIN_ID TO 181346; CREATE GENERATOR SYSLOGPROV_ID; SET GENERATOR SYSLOGPROV_ID TO 3; CREATE GENERATOR SYSLOG_ID; SET GENERATOR SYSLOG_ID TO 676994; CREATE GENERATOR SZDTCR_ID; SET GENERATOR SZDTCR_ID TO 2160039; CREATE GENERATOR TRADEPOINT_ID; SET GENERATOR TRADEPOINT_ID TO 5; CREATE GENERATOR USERDGRP_ID; SET GENERATOR USERDGRP_ID TO 0; CREATE GENERATOR USERGGRP_ID; SET GENERATOR USERGGRP_ID TO 68740; CREATE GENERATOR USERKASS_ID; SET GENERATOR USERKASS_ID TO 9767; CREATE GENERATOR USERLIST_ID; SET GENERATOR USERLIST_ID TO 124; CREATE GENERATOR USERORGN_ID; SET GENERATOR USERORGN_ID TO 278; CREATE GENERATOR USERPODR_ID; SET GENERATOR USERPODR_ID TO 0; CREATE GENERATOR USERPRLS_ID; SET GENERATOR USERPRLS_ID TO 872; CREATE GENERATOR USERSTOR_ID; SET GENERATOR USERSTOR_ID TO 13923; CREATE GENERATOR USER_GRPREF_ID; SET GENERATOR USER_GRPREF_ID TO 0; CREATE GENERATOR USER_GRP_ID; SET GENERATOR USER_GRP_ID TO 0; CREATE GENERATOR VENDORNAME_ID; SET GENERATOR VENDORNAME_ID TO 82; CREATE GENERATOR VKSLACCR_ID; SET GENERATOR VKSLACCR_ID TO 0; CREATE GENERATOR VKSL_ID; SET GENERATOR VKSL_ID TO 0; CREATE GENERATOR WORKCALCMST_ID; SET GENERATOR WORKCALCMST_ID TO 697; CREATE GENERATOR WORKCALCNKPRM_ID; SET GENERATOR WORKCALCNKPRM_ID TO 2469; CREATE GENERATOR WORKCALCNK_ID; SET GENERATOR WORKCALCNK_ID TO 1293; CREATE GENERATOR WORKCALCPODR_ID; SET GENERATOR WORKCALCPODR_ID TO 6487; CREATE GENERATOR WORKCALCPROV_ID; SET GENERATOR WORKCALCPROV_ID TO 815; CREATE GENERATOR WORKGODSTEMP_ID; SET GENERATOR WORKGODSTEMP_ID TO 0; CREATE GENERATOR WORKGOODSGDS_ID; SET GENERATOR WORKGOODSGDS_ID TO 0; CREATE GENERATOR WORKGOODSLINK_ID; SET GENERATOR WORKGOODSLINK_ID TO 0; CREATE GENERATOR WORKGOODS_ID; SET GENERATOR WORKGOODS_ID TO 0; CREATE GENERATOR WORKHBLN_ID; SET GENERATOR WORKHBLN_ID TO 2945; CREATE GENERATOR WORKHBNK_ID; SET GENERATOR WORKHBNK_ID TO 57; CREATE GENERATOR WORKLINK_ID; SET GENERATOR WORKLINK_ID TO 27689; CREATE GENERATOR WORKMAINTOOL_ID; SET GENERATOR WORKMAINTOOL_ID TO 0; CREATE GENERATOR WORKMAIN_ID; SET GENERATOR WORKMAIN_ID TO 3620; CREATE GENERATOR WORKMODELDTL_ID; SET GENERATOR WORKMODELDTL_ID TO 0; CREATE GENERATOR WORKMODELGDS_ID; SET GENERATOR WORKMODELGDS_ID TO 0; CREATE GENERATOR WORKMODEL_ID; SET GENERATOR WORKMODEL_ID TO 3; CREATE GENERATOR WORKNKDG_ID; SET GENERATOR WORKNKDG_ID TO 0; CREATE GENERATOR WORKOPERATION_ID; SET GENERATOR WORKOPERATION_ID TO 0; CREATE GENERATOR WORKOPER_ID; SET GENERATOR WORKOPER_ID TO 0; CREATE GENERATOR WORKPLANMST_ID; SET GENERATOR WORKPLANMST_ID TO 0; CREATE GENERATOR WORKPLANSLV_ID; SET GENERATOR WORKPLANSLV_ID TO 0; CREATE GENERATOR WORKREQUESTGDS_ID; SET GENERATOR WORKREQUESTGDS_ID TO 514885; CREATE GENERATOR WORKREQUEST_ID; SET GENERATOR WORKREQUEST_ID TO 51649; CREATE GENERATOR WORKTOOLTYP_ID; SET GENERATOR WORKTOOLTYP_ID TO 0; CREATE GENERATOR WORKTOOL_ID; SET GENERATOR WORKTOOL_ID TO 0; CREATE GENERATOR WORKZAKAZ_ID; SET GENERATOR WORKZAKAZ_ID TO 230504; CREATE GENERATOR WORKZCUTTING_ID; SET GENERATOR WORKZCUTTING_ID TO 0; CREATE GENERATOR WORKZMST_ID; SET GENERATOR WORKZMST_ID TO 2044484; CREATE GENERATOR WORKZNK_ID; SET GENERATOR WORKZNK_ID TO 1569680; CREATE GENERATOR WORKZPARAM_ID; SET GENERATOR WORKZPARAM_ID TO 68; CREATE GENERATOR WORKZREF_ID; SET GENERATOR WORKZREF_ID TO 76650; CREATE GENERATOR WORKZSLV_ID; SET GENERATOR WORKZSLV_ID TO 4822097; CREATE GENERATOR WORKZTOOL_ID; SET GENERATOR WORKZTOOL_ID TO 0; CREATE GENERATOR ZPLTCALCCRAC_ID; SET GENERATOR ZPLTCALCCRAC_ID TO 0; CREATE GENERATOR ZPLTCALCDECR_ID; SET GENERATOR ZPLTCALCDECR_ID TO 0; CREATE GENERATOR ZPLTCALCFOT_ID; SET GENERATOR ZPLTCALCFOT_ID TO 0; CREATE GENERATOR ZPLTCALCINCR_ID; SET GENERATOR ZPLTCALCINCR_ID TO 0; CREATE GENERATOR ZPLTCALCMST_ID; SET GENERATOR ZPLTCALCMST_ID TO 0; CREATE GENERATOR ZPLTCALCSLVFOT_ID; SET GENERATOR ZPLTCALCSLVFOT_ID TO 0; CREATE GENERATOR ZPLTCALCSLV_ID; SET GENERATOR ZPLTCALCSLV_ID TO 0; CREATE GENERATOR ZPLTCALENDARBASE_ID; SET GENERATOR ZPLTCALENDARBASE_ID TO 3; CREATE GENERATOR ZPLTDECRFOT_ID; SET GENERATOR ZPLTDECRFOT_ID TO 11; CREATE GENERATOR ZPLTDECRINCR_ID; SET GENERATOR ZPLTDECRINCR_ID TO 379; CREATE GENERATOR ZPLTDECRPRSN_ID; SET GENERATOR ZPLTDECRPRSN_ID TO 0; CREATE GENERATOR ZPLTDECR_ID; SET GENERATOR ZPLTDECR_ID TO 25; CREATE GENERATOR ZPLTFOTGRPREF_ID; SET GENERATOR ZPLTFOTGRPREF_ID TO 13; CREATE GENERATOR ZPLTFOTGRP_ID; SET GENERATOR ZPLTFOTGRP_ID TO 2; CREATE GENERATOR ZPLTGRPPRSNMST_ID; SET GENERATOR ZPLTGRPPRSNMST_ID TO 0; CREATE GENERATOR ZPLTGRPPRSNSLV_ID; SET GENERATOR ZPLTGRPPRSNSLV_ID TO 0; CREATE GENERATOR ZPLTINCRFOT_ID; SET GENERATOR ZPLTINCRFOT_ID TO 103; CREATE GENERATOR ZPLTINCRINCR_ID; SET GENERATOR ZPLTINCRINCR_ID TO 0; CREATE GENERATOR ZPLTINCRPRSN_ID; SET GENERATOR ZPLTINCRPRSN_ID TO 0; CREATE GENERATOR ZPLTINCR_ID; SET GENERATOR ZPLTINCR_ID TO 23; CREATE GENERATOR ZPLTJOBGRPJOB_ID; SET GENERATOR ZPLTJOBGRPJOB_ID TO 0; CREATE GENERATOR ZPLTJOBGRPMST_ID; SET GENERATOR ZPLTJOBGRPMST_ID TO 0; CREATE GENERATOR ZPLTJOBGRPPRSN_ID; SET GENERATOR ZPLTJOBGRPPRSN_ID TO 0; CREATE GENERATOR ZPLTJOBPRSNMST_ID; SET GENERATOR ZPLTJOBPRSNMST_ID TO 0; CREATE GENERATOR ZPLTJOBPRSNSLV_ID; SET GENERATOR ZPLTJOBPRSNSLV_ID TO 0; CREATE GENERATOR ZPLTJOBSLIST_ID; SET GENERATOR ZPLTJOBSLIST_ID TO 0; CREATE GENERATOR ZPLTPLATACCR_ID; SET GENERATOR ZPLTPLATACCR_ID TO 0; CREATE GENERATOR ZPLTPLATMST_ID; SET GENERATOR ZPLTPLATMST_ID TO 0; CREATE GENERATOR ZPLTPLATSLV_ID; SET GENERATOR ZPLTPLATSLV_ID TO 0; CREATE GENERATOR ZPLTPRSNDPN_ID; SET GENERATOR ZPLTPRSNDPN_ID TO 0; CREATE GENERATOR ZPLTSERTMEDIC_ID; SET GENERATOR ZPLTSERTMEDIC_ID TO 0; CREATE GENERATOR ZPLTSERTVACAT_ID; SET GENERATOR ZPLTSERTVACAT_ID TO 0; CREATE GENERATOR ZPLTSLVDAYCOMMENT_ID; SET GENERATOR ZPLTSLVDAYCOMMENT_ID TO 0; CREATE GENERATOR ZPLTTABELPLAN_ID; SET GENERATOR ZPLTTABELPLAN_ID TO 0; CREATE GENERATOR ZPLTTABEL_ID; SET GENERATOR ZPLTTABEL_ID TO 1; /******************************************************************************/ /*** Exceptions ***/ /******************************************************************************/ CREATE EXCEPTION BDG_BAD_PAPER_ITEM_TYPE 'Несовпадение типов "Документа" и "Статьи"'; CREATE EXCEPTION BDG_BAD_SP_PARAM 'Неверно заданы параметры'; CREATE EXCEPTION BDG_BAD_TYPE_CHANGE 'Недопустимое изменение типа записи'; CREATE EXCEPTION BDG_CLOSED_DATA 'Данные периода "закрыты" для изменений'; CREATE EXCEPTION BDG_CLOSED_PERIOD 'Период "закрыт" для изменений'; CREATE EXCEPTION BDG_DOC_LINK_INCORRECT 'Некорректное создание распределяемого документа'; CREATE EXCEPTION BDG_DOC_PAPER_INCORRECT 'Некорректная привязка распределяемого документа'; CREATE EXCEPTION BDG_PAPER_OBJ_CHANGE 'Нельзя перепривязывать документ к другому объекту'; CREATE EXCEPTION BDG_PERIOD_DATE_REVERSE 'Окончание периода не может быть раньше начала периода'; CREATE EXCEPTION BDG_UNIQUE 'Повторяющееся значение поля'; CREATE EXCEPTION COMMON_EXCEPTION 'Hello'; CREATE EXCEPTION DGVKT_QUANTSOURCE 'Из приходной накладной выдавался товар !!!'; CREATE EXCEPTION E_CTLG_DISTR 'Этот объект на руках, его нельзя выдать!'; CREATE EXCEPTION GDDDT_RETNKT 'По удаляемой позиции товара есть возврат !!!'; CREATE EXCEPTION IS_USE_PALM 'Данный объект передавался на КПК'; CREATE EXCEPTION ITS_NO_MANAGER 'Этот сотрудник не является менеджером'; CREATE EXCEPTION WORKGOODSGDS_EXCEPT 'Материал используется в изделиях по модели !!!'; CREATE EXCEPTION WORKZMST_STORZDTGDS 'Изделие уже передано в производство'; /******************************************************************************/ /*** Stored procedures ***/ /******************************************************************************/ SET TERM ^ ; CREATE PROCEDURE ACCNPLAN_ANNAME ( ACCN VARCHAR(5), ANID INTEGER) RETURNS ( ANNAME VARCHAR(40)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ACCNPLAN_CALCAN ( ORGNID INTEGER, ACCN VARCHAR(5), AN INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, BS DOUBLE PRECISION, OD DOUBLE PRECISION, OK DOUBLE PRECISION, ES DOUBLE PRECISION, NAME VARCHAR(40)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ACCNPLAN_CALCSALDO ( ORGNID INTEGER, ACCN VARCHAR(5), BDATE TIMESTAMP) RETURNS ( DT DOUBLE PRECISION, KT DOUBLE PRECISION, CDT DOUBLE PRECISION, CKT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ACCNPLAN_CALCSALDOCURR ( ORGNID INTEGER, ACCN VARCHAR(5), BDATE TIMESTAMP, CURRTYP INTEGER) RETURNS ( DT DOUBLE PRECISION, KT DOUBLE PRECISION, SALDO DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ACCNPLAN_RECALC ( ORGNID INTEGER, ACCN VARCHAR(5), OWNER INTEGER, AN INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE BANKMFO_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLDT_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE BOOKSLDT_IMPORT ( ORGNID INTEGER, ADATE TIMESTAMP) RETURNS ( DOCTYP INTEGER, DOCID INTEGER, NBR VARCHAR(20), NAMEID INTEGER, SUMMA DOUBLE PRECISION, NDS DOUBLE PRECISION, NDSPROC DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, KNDS DOUBLE PRECISION, NNBR VARCHAR(20), NDATE TIMESTAMP, DATECALC TIMESTAMP, FORMSTR VARCHAR(255)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLDT_JOURNAL ( ID INTEGER) RETURNS ( S6 DOUBLE PRECISION, S7 DOUBLE PRECISION, S8 DOUBLE PRECISION, S9 DOUBLE PRECISION, S10 DOUBLE PRECISION, S11 DOUBLE PRECISION, S12 DOUBLE PRECISION, S13 DOUBLE PRECISION, S14 DOUBLE PRECISION, S15 DOUBLE PRECISION, S16 DOUBLE PRECISION, S17 DOUBLE PRECISION, S18 DOUBLE PRECISION, S19 DOUBLE PRECISION, S20 DOUBLE PRECISION, S21 DOUBLE PRECISION, S22 DOUBLE PRECISION, S23 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLDT_JOURNAL1 ( ID INTEGER) RETURNS ( RECALC INTEGER, S7 DOUBLE PRECISION, S8 DOUBLE PRECISION, S9 DOUBLE PRECISION, S10 DOUBLE PRECISION, S11 DOUBLE PRECISION, S12 DOUBLE PRECISION, S13 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLDTDAYS_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLKT_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE BOOKSLKT_IMPORT ( ORGNID INTEGER, ADATE TIMESTAMP) RETURNS ( DOCTYP INTEGER, DOCID INTEGER, NBR VARCHAR(32), NAMEID INTEGER, SUMMA DOUBLE PRECISION, NDS DOUBLE PRECISION, NDSPROC DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, KNDS DOUBLE PRECISION, NNBR VARCHAR(32), NDATE TIMESTAMP, DATECALC TIMESTAMP, FORMSTR VARCHAR(255), CBNDS INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLKT_JOURNAL ( ID INTEGER) RETURNS ( S6 DOUBLE PRECISION, S7 DOUBLE PRECISION, S8 DOUBLE PRECISION, S9 DOUBLE PRECISION, S10 DOUBLE PRECISION, S11 DOUBLE PRECISION, S12 DOUBLE PRECISION, S13 DOUBLE PRECISION, S14 DOUBLE PRECISION, S15 DOUBLE PRECISION, S16 DOUBLE PRECISION, S17 DOUBLE PRECISION, S18 DOUBLE PRECISION, S19 DOUBLE PRECISION, S20 DOUBLE PRECISION, S21 DOUBLE PRECISION, S22 DOUBLE PRECISION, S23 DOUBLE PRECISION, S24 DOUBLE PRECISION, S25 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLKT_JOURNAL1 ( ID INTEGER) RETURNS ( RECALC INTEGER, NK1 INTEGER, S8 DOUBLE PRECISION, S9 DOUBLE PRECISION, S10 DOUBLE PRECISION, S11 DOUBLE PRECISION, S12 DOUBLE PRECISION, S13 DOUBLE PRECISION, S14 DOUBLE PRECISION, S15 DOUBLE PRECISION, S16 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLKT_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE BOOKSLKTDAYS_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE CHECK_DB_VERSION AS BEGIN EXIT; END^ CREATE PROCEDURE CHECK_DB_VERSION_630 AS BEGIN EXIT; END^ CREATE PROCEDURE CHECK_DB_VERSION_631 AS BEGIN EXIT; END^ CREATE PROCEDURE CHECK_DB_VERSION_632 AS BEGIN EXIT; END^ CREATE PROCEDURE CHECK_DB_VERSION_633 AS BEGIN EXIT; END^ CREATE PROCEDURE CHECK_DB_VERSION_634 AS BEGIN EXIT; END^ CREATE PROCEDURE CHECK_DB_VERSION_635 AS BEGIN EXIT; END^ CREATE PROCEDURE CSDTKT_NEWQUARTER ( OURORGNID INTEGER, EDATE TIMESTAMP, USERNAME VARCHAR(20)) AS BEGIN EXIT; END^ CREATE PROCEDURE CTLG_ENT_THM_NAME ( ENTITY_ID INTEGER) RETURNS ( THEME_ID INTEGER, THEME_NAME VARCHAR(250)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE CTLG_THEME_CNT ( OWNER INTEGER) RETURNS ( THEME_ID INTEGER, THEME_NAME VARCHAR(150), THEME_OWNER INTEGER, CHILD_COUNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE CTLG_THEME_NAME ( THEME_ID INTEGER) RETURNS ( NAME VARCHAR(250)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE CURRENCY_GETVALUE ( TYP INTEGER, DAT_ TIMESTAMP) RETURNS ( VAL DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE CURRSTORDAYS_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE CURTYP_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGV_SUM AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_CONCAT ( ID1 INTEGER, ID2 INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_CONCAT0 ( ID1 INTEGER, ID2 INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_CRECALC ( ID INTEGER) RETURNS ( DGVID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_CRECALC1 ( ID INTEGER) RETURNS ( DGVID INTEGER, GDDDTID INTEGER, SALEID INTEGER, SALECROSID INTEGER, TPRICE DOUBLE PRECISION, PRICE DOUBLE PRECISION, NEWPRICE DOUBLE PRECISION, DCURS DOUBLE PRECISION, SCURS DOUBLE PRECISION, SCSUMMA DOUBLE PRECISION, DCSUMMA2 DOUBLE PRECISION, KS DOUBLE PRECISION, KD DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_ECRSUMMA ( ID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_GENACCN AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_GENACCNRECINP ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_GENACCNRECKRB ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_GENACCNRECKTU ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) RETURNS ( ACCNPROVID INTEGER, DCURRTYP INTEGER, SCURRTYP INTEGER, SDATE TIMESTAMP, SCURS DOUBLE PRECISION, SCSUMMA DOUBLE PRECISION, DCSUMMA DOUBLE PRECISION, DDATE TIMESTAMP, DCURS DOUBLE PRECISION, SUMMA DOUBLE PRECISION, CURS DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_GENACCNRECSUMMARY ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_GENDGVKT ( ID INTEGER, STOR INTEGER, ADATE TIMESTAMP) RETURNS ( DGVKEY INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_GENMAINMEAN ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_GENMBPMEANLIST ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_KRBSELECT ( ID INTEGER) RETURNS ( KDATE TIMESTAMP, KSUMMA DOUBLE PRECISION, KDELTA DOUBLE PRECISION, KCURS DOUBLE PRECISION, CURS DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_MOVETOSTOR ( ID INTEGER, STORID INTEGER, MOVEDATE TIMESTAMP, USERNAME VARCHAR(20)) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_RESERVLOG ( ID INTEGER, MANAGER INTEGER, BDT TIMESTAMP, EDT TIMESTAMP) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_RETURN ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_SALE ( ID INTEGER, SALEID INTEGER, SZDTCRID INTEGER, SM DOUBLE PRECISION, USERNAME VARCHAR(20)) RETURNS ( CRID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_SALESUMMA AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_STORID AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDT_TASK_HAS ( ID INTEGER, REQUEST INTEGER) RETURNS ( TASKID INTEGER, BFDATE TIMESTAMP, EFDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDT_ZSALE ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDTBLNS_ORGN ( CURORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, BS DOUBLE PRECISION, OD DOUBLE PRECISION, OK DOUBLE PRECISION, ES DOUBLE PRECISION, MANAGERID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDTBLNS_ORGNDGV ( ORGNID INTEGER, BDATE TIMESTAMP) RETURNS ( NAMEID INTEGER, SALDO DOUBLE PRECISION, MANAGERID INTEGER, ORGNINFOID INTEGER, DTKTID INTEGER, MAXTIME INTEGER, OUT_DATE TIMESTAMP, DAYS INTEGER, INTERVAL INTEGER, S0 DOUBLE PRECISION, S1 DOUBLE PRECISION, S2 DOUBLE PRECISION, S3 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDTBLNS_ORGNDGV1 ( ORGNID INTEGER, BDATE TIMESTAMP, DTKTID INTEGER, MANAGERID INTEGER) RETURNS ( NAMEID INTEGER, ORGNINFOID INTEGER, MAXTIME INTEGER, SALDO DOUBLE PRECISION, S0 DOUBLE PRECISION, S1 DOUBLE PRECISION, S2 DOUBLE PRECISION, S3 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDTBLNS_ORGNDGV2 ( ORGNID INTEGER, BDATE TIMESTAMP, DTKTID INTEGER, MANAGERID INTEGER) RETURNS ( DOCID INTEGER, NAMEID INTEGER, ORGNINFOID INTEGER, MAXTIME INTEGER, SALDO DOUBLE PRECISION, S0 DOUBLE PRECISION, S1 DOUBLE PRECISION, S2 DOUBLE PRECISION, S3 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDTU_CRECALC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDTU_CSALE ( ID INTEGER, SALEID INTEGER, SM DOUBLE PRECISION, USERNAME VARCHAR(20)) RETURNS ( CRID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDTU_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDTU_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDTU_GENACCNRECKRB ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDTU_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVDTU_KRBSELECT ( ID INTEGER) RETURNS ( KDATE TIMESTAMP, KSUMMA DOUBLE PRECISION, KDELTA DOUBLE PRECISION, KCURS DOUBLE PRECISION, CURS DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDTU_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDTU_SALE ( ID INTEGER, SALEID INTEGER, SM DOUBLE PRECISION, USERNAME VARCHAR(20)) RETURNS ( CRID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVDTUD_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVEMPTTOREAL ( ID INTEGER, PART INTEGER = 1, OUTDATE TIMESTAMP = null) RETURNS ( DGVID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVKT_CRECALC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_CRECALC1 ( ID INTEGER, TRNTYP INTEGER = null) RETURNS ( KID INTEGER, QUANT DOUBLE PRECISION, TRNGTYP INTEGER, FKTPRICE DOUBLE PRECISION, TRNPRICE DOUBLE PRECISION, INPPRICE DOUBLE PRECISION, TAMPRICE DOUBLE PRECISION, POSPRICE DOUBLE PRECISION, TSBPRICE DOUBLE PRECISION, PROPRICE DOUBLE PRECISION, BAKPRICE DOUBLE PRECISION, AKCPRICE DOUBLE PRECISION, BNDPRICE DOUBLE PRECISION, NDSPRICE DOUBLE PRECISION, UPGPRICE DOUBLE PRECISION, UNGPRICE DOUBLE PRECISION, VHNPRICE DOUBLE PRECISION, VHDPRICE DOUBLE PRECISION, VHPPRICE DOUBLE PRECISION, TRNSSUMM DOUBLE PRECISION, TRNG DOUBLE PRECISION, NDSG DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVKT_CRECALC2 ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_GENACCN AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_GENACCNRECINP ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_GENACCNRECKRB ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_GENACCNRECU ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_KRBSELECT ( ID INTEGER) RETURNS ( KDATE TIMESTAMP, KSUMMA DOUBLE PRECISION, KDELTA DOUBLE PRECISION, KCURS DOUBLE PRECISION, CURS DOUBLE PRECISION, KRBTYP INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVKT_LOGCHECKDELTA ( ID INTEGER, V_DGVKTID INTEGER = null, V_DGVDTID INTEGER = null) RETURNS ( NO_VALID INTEGER, DIFF DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVKT_MAKEDGVDTWORK ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVKT_OUTDT ( ID INTEGER) RETURNS ( KTID INTEGER, DTID INTEGER, DTYP INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVKT_RETURN ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_SALE ( ID INTEGER, SALEID INTEGER, SM DOUBLE PRECISION, CSM DOUBLE PRECISION, USERNAME VARCHAR(20)) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_STORID AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKT_WZRECALC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKTU_CRECALC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKTU_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKTU_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKTU_GENACCNRECKRB ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKTU_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKTU_KRBSELECT ( ID INTEGER) RETURNS ( KDATE TIMESTAMP, KSUMMA DOUBLE PRECISION, KDELTA DOUBLE PRECISION, KCURS DOUBLE PRECISION, CURS DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVKTU_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVKTUGDDKTU_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVKTUGDDKTU_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVWK_MAKEDGVKT ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVWK_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVWKG_CALCTPRICE1 RETURNS ( DGVKTID INTEGER, DGVDTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DGVWKG_INP_OUT_DATE AS BEGIN EXIT; END^ CREATE PROCEDURE DGVWKG_MAKEDGVKT ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DGVWKG_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DKBILL_MAKEDGV ( BILLID INTEGER) RETURNS ( ID INTEGER, GODSID INTEGER, QNTINP DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DOCMDOCDOCUMENT_GETPARENTS ( OBJID INTEGER, OBJTYP INTEGER) RETURNS ( ID INTEGER, TYP INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DOCMTASK_COPY ( SRCID INTEGER, GRPID INTEGER, TSKID INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DOCMTASK_GENMSG ( TASKID INTEGER, SUSERID INTEGER, RUSERID INTEGER, TYP INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DOCMTASK_GETCHILDREN ( TASK_ID INTEGER, SELF_INCLUDE INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DOCMTASK_GETPARENTS ( ID INTEGER, OTYPE INTEGER) RETURNS ( CID INTEGER, TID INTEGER, OBJTYPE INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DOCMTASK_ROOT ( ID INTEGER) RETURNS ( ROOTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE DOCMTASK_UPDATE_BY_CHILDREN ( TASKID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DOCMTASK_WORKCALC ( TASKID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE DOCMTASKHB_COPY ( SRCID INTEGER, GRPID INTEGER, TSKID INTEGER, IUSERID INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_ADDMONTH ( ADATE TIMESTAMP, AMONTH INTEGER) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_COUNT_DATASET ( N INTEGER) RETURNS ( I INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_COUNT_MONTHS ( FIRST_DATE DATE, SECOND_DATE DATE) RETURNS ( COUNT_MONTHS INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_DAY ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_DAYOFWEEK ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_DAYOFYEAR ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_DAYS_DATASET ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_DAYSOFMONTH ( AYEAR INTEGER, AMONTH INTEGER) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_DECODEDATE ( ADATE TIMESTAMP) RETURNS ( AYEAR INTEGER, AMONTH INTEGER, ADAY INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_ELAPSEDDAYS ( DATE1 TIMESTAMP, DATE2 TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_ENCODEDATE ( AYEAR INTEGER, AMONTH INTEGER, ADAY INTEGER) RETURNS ( RESULT TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_MODULUS ( DIVIDEND INTEGER, DIVISOR INTEGER) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_MONTH ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_MONTHFIRSTDAY ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_MONTHFIRSTWORKDAY ( SLVID INTEGER, ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_MONTHLASTDAY ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_MONTHLASTWORKDAY ( SLVID INTEGER, ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_MONTHS_DATASET ( BPERIOD TIMESTAMP, EPERIOD TIMESTAMP) RETURNS ( BDATE TIMESTAMP, EDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_PERIODS_DATASET ( BDATE TIMESTAMP, EDATE TIMESTAMP, PERIOD_DURATION INTEGER, REST_MODE INTEGER) RETURNS ( PERIOD_BDATE TIMESTAMP, PERIOD_EDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_QUARTER_BEG ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_QUARTER_DATASET ( BPERIOD TIMESTAMP, EPERIOD TIMESTAMP) RETURNS ( BDATE TIMESTAMP, EDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_QUARTER_END ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_TIME ( ADATE TIMESTAMP) RETURNS ( AHOUR INTEGER, AMINUTE INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_WEEK_DATASET ( BDATE TIMESTAMP, EDATE TIMESTAMP, WEEK_START INTEGER, REST_MODE INTEGER) RETURNS ( NBR INTEGER, PERIOD_BDATE TIMESTAMP, PERIOD_EDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_YEAR ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_YEAR_BEG ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE F_YEAR_END ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE FRREPORT_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE FRREPORTTREE_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE FRREPORTTREEUSER_GRANT ( USERID INTEGER, FRRPID INTEGER, CURORGNID INTEGER, USERNAME VARCHAR(20), TO_PARENT INTEGER, TO_CHILD INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE FRREPORTTREEUSER_REVOKE ( USERID INTEGER, FRRPID INTEGER, CURORGNID INTEGER, USERNAME VARCHAR(20), TO_PARENT INTEGER, TO_CHILD INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE GDDDT_LOSSPOS ( BPERIOD TIMESTAMP, EPERIOD TIMESTAMP, GRPSTORID INTEGER) RETURNS ( BCDATE TIMESTAMP, ECDATE TIMESTAMP, GNAME VARCHAR(80), DELTA DOUBLE PRECISION, KNK DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEGOODS ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEGOODS_GRP ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GID INTEGER, GRPID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEGOODS_SGRP ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP, STORGRPID INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, STOR INTEGER, KTYP INTEGER, DTYP INTEGER, DID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEGOODSALL ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, STOR INTEGER, KTYP INTEGER, DTYP INTEGER, DID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEGOODSGRP ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER, GRPID INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEGOODSINP ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, TPRICE DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEGOODSONE ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER, GDSID INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEQENDORGN ( ORGNID INTEGER, EDATE TIMESTAMP, IORGNID INTEGER, ALLGOODS INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QEND DOUBLE PRECISION, STOR INTEGER, KTYP INTEGER, DTYP INTEGER, DID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_MOVEREALGOODSALL ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, RQNT DOUBLE PRECISION, STOR INTEGER, KTYP INTEGER, DTYP INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_OUTCURRLIST ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURRTYP INTEGER) RETURNS ( DID INTEGER, GID INTEGER, KSID INTEGER, TYP INTEGER, QUANT DOUBLE PRECISION, KDATE TIMESTAMP, DDATE TIMESTAMP, KCURS DOUBLE PRECISION, DCURS DOUBLE PRECISION, KPRICE DOUBLE PRECISION, DPRICE DOUBLE PRECISION, KNDS DOUBLE PRECISION, DNDS DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_OUTSALE ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( GRID INTEGER, GID INTEGER, QUANT DOUBLE PRECISION, DSUMMA DOUBLE PRECISION, DNDS DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, KNDS DOUBLE PRECISION, KID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_OUTWORKCURRLIST ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURRTYP INTEGER) RETURNS ( DID INTEGER, GID INTEGER, QUANT DOUBLE PRECISION, KSID INTEGER, DSUMMA DOUBLE PRECISION, DNDS DOUBLE PRECISION, DCSUMMA DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, KNDS DOUBLE PRECISION, KCSUMMA DOUBLE PRECISION, NSUMMA DOUBLE PRECISION, NNDS DOUBLE PRECISION, NCSUMMA DOUBLE PRECISION, DTYP INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_SRCKTID ( ID INTEGER) RETURNS ( KTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_WORKMOVEGOODS ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, DPRICE DOUBLE PRECISION, DNDS DOUBLE PRECISION, NPRICE DOUBLE PRECISION, NNDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, KSID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDT_WORKMOVEGOODSSTOR ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, DPRICE DOUBLE PRECISION, DNDS DOUBLE PRECISION, NPRICE DOUBLE PRECISION, NNDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, KSID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDTU_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDDTU_PRICE ( ID INTEGER) RETURNS ( PRICE DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDKT_DECRNORM_QNT ( STOR INTEGER, ADATE TIMESTAMP = null) RETURNS ( ID INTEGER, DNID INTEGER, NORM DOUBLE PRECISION, QNT DOUBLE PRECISION, SRC DOUBLE PRECISION, NORM_QNT DOUBLE PRECISION, IS_DECRNORM INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDKT_DELTOSRC ( ID INTEGER, ADATE TIMESTAMP, QUANT DOUBLE PRECISION) RETURNS ( KID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDKT_DSTDTID ( ID INTEGER) RETURNS ( DTID INTEGER, DTYP INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDKT_DSTSELECT ( RECLEVEL INTEGER, PARENTID INTEGER, ID INTEGER) RETURNS ( OUTLEVEL INTEGER, PARENTOUT INTEGER, IDOUT INTEGER, KID INTEGER, DID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDKT_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDDKT_SRCKTID ( ID INTEGER) RETURNS ( KTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GDSPARAM_UPDATE ( GOODSID INTEGER, PARAMID INTEGER, FIXVAL INTEGER, INTVAL INTEGER, DBLVAL DOUBLE PRECISION, STRVAL VARCHAR(255)) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GET_MEGA_GROOP ( AGROOP_ID INTEGER) RETURNS ( ID INTEGER, NAME VARCHAR(50)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GODSLOST AS BEGIN EXIT; END^ CREATE PROCEDURE GODSLOST_RESTORE AS BEGIN EXIT; END^ CREATE PROCEDURE GOODS_CODASSIGN ( ID INTEGER, PARENTID INTEGER) RETURNS ( COD VARCHAR(20)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODS_DECRNORM_CALC ( KTID INTEGER, DATE_OUT TIMESTAMP = null) RETURNS ( NORM DOUBLE PRECISION, DNID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODS_LASTINPDATE ( GODSID INTEGER, OURORGNID INTEGER, STORID INTEGER, ORGNID INTEGER) RETURNS ( INPDATE DATE) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODS_LASTINPNAMEID ( ORGNID INTEGER, STORID INTEGER, GODSID INTEGER) RETURNS ( NAMEID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODS_LASTINPPRICE ( ORGNID INTEGER, STORID INTEGER, GODSID INTEGER) RETURNS ( KID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, INP_DATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODS_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODS_REPLACEANDREMOVE ( KEEPID INTEGER, DELID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE GOODSGROUPS_PATH ( ID INTEGER) RETURNS ( PATH VARCHAR(1024)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODSGRP_FREE ( STOR INTEGER, PARENTID INTEGER, SZID INTEGER) RETURNS ( ID INTEGER, GR INTEGER, GDSCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODSGRP_GETCHILDREN ( PARENT_ID INTEGER, INCLUDE_PARENT INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODSGRP_GETPARENTS ( ID INTEGER) RETURNS ( DID INTEGER, OID INTEGER, NAME VARCHAR(40)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODSGRP_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODSGRP_SELECTWORKGRP RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODSGRP_SELECTWORKGRPPARENT ( PARENTID INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE GOODSPRICEPROCGEN AS BEGIN EXIT; END^ CREATE PROCEDURE HBDTNL_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE HBGDDDU_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE HBKTSU_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE HBSERVU_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE INIT_RIGHT_LIST AS BEGIN EXIT; END^ CREATE PROCEDURE INVOPISDATA_GDDDT ( OPISID INTEGER, DGVDTID INTEGER, HASMAIN INTEGER = 1) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE INVOPISDATA_RECALC ( OPISID INTEGER, SUMMARY INTEGER = 1) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE KASSAVDATA_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE KASSAVDATA_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE KASSAVLIST_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE KASSAVLIST_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE KASSAVLIST_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE KASSAVLIST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE KASSDATA_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE KASSDATA_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE KASSDATA_GENSALEDT ( ID INTEGER) RETURNS ( SALEID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE KASSDATA_GENSALEKT ( ID INTEGER) RETURNS ( SALEID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE KASSDATA_MAKEAO ( ID INTEGER) RETURNS ( AVID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE KASSDATA_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE KASSDATA_RENBR ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE KASSDAYS_NEWDAY ( DAT TIMESTAMP, KASSID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE KASSLIST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE LEV_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE LEV_PUTGET ( GR INTEGER, NAME VARCHAR(40)) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE LIST_ACOPER_TYPE RETURNS ( ID INTEGER, NAME VARCHAR(80)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINAM_NL_UPDATE AS BEGIN EXIT; END^ CREATE PROCEDURE MAINAM_NLPRICE_UPDATE ( CURORGNID INTEGER, ADATE TIMESTAMP) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINAMMST_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINAMMST_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINAMMST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINAMSLV_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINCHNG_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINCHNG_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINGRP_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_AMMOVE ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( GRPID INTEGER, BSUMMA DOUBLE PRECISION, ESUMMA DOUBLE PRECISION, INPSUM1 DOUBLE PRECISION, INPSUM2 DOUBLE PRECISION, INPSUM3 DOUBLE PRECISION, CHGSUM1 DOUBLE PRECISION, CHGSUM2 DOUBLE PRECISION, CHGSUM3 DOUBLE PRECISION, OUTSUM1 DOUBLE PRECISION, OUTSUM2 DOUBLE PRECISION, OUTSUM3 DOUBLE PRECISION, AM_SUM DOUBLE PRECISION, BDATE1 TIMESTAMP, EDATE1 TIMESTAMP, BDATE2 TIMESTAMP, EDATE2 TIMESTAMP, BDATE3 TIMESTAMP, EDATE3 TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_BYPERIOD ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_CALCAM ( ID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINMEAN_CALCAM00 ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINMEAN_CALCAM1 ( ID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINMEAN_CLCAM0 ( MAINID INTEGER, GRPTYP INTEGER, MID INTEGER) RETURNS ( BPRICE DOUBLE PRECISION, AMNORM DOUBLE PRECISION, ASUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_CLCAM1 ( MAINID INTEGER, GRPTYP INTEGER, MID INTEGER) RETURNS ( BPRICE DOUBLE PRECISION, AMNORM DOUBLE PRECISION, ASUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_CLCAM2 ( MAINID INTEGER, GRPTYP INTEGER, MID INTEGER) RETURNS ( BPRICE DOUBLE PRECISION, AMNORM DOUBLE PRECISION, ASUMMA DOUBLE PRECISION, ASUMMA1 DOUBLE PRECISION, OLDBSUMMA DOUBLE PRECISION, USE_PERIOD INTEGER, M1 INTEGER, M2 INTEGER, OLDTYP INTEGER, BMDATE TIMESTAMP, EMDATE TIMESTAMP, BPDATE DATE, EPDATE DATE, LPRICE DOUBLE PRECISION, CSUMMA DOUBLE PRECISION, OLDPERIOD INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINMEAN_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MAINMEAN_GRPONDATE ( ID INTEGER, GRPTYP INTEGER, ADATE TIMESTAMP) RETURNS ( GRPID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_MOVE ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, QNTB INTEGER, QNTI INTEGER, QNTO INTEGER, QNTE INTEGER, PODRID INTEGER, GROUPID0 INTEGER, GROUPID1 INTEGER, INP_DATE TIMESTAMP, OUT_DATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_MOVE_DETAIL ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, QNTB INTEGER, QNTI INTEGER, QNTO INTEGER, QNTE INTEGER, PODRID INTEGER, GROUPID0 INTEGER, GROUPID1 INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINMEAN_PODRONDATE ( ID INTEGER, ADATE TIMESTAMP) RETURNS ( PODRID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MAINPRICE_CALCDELPART ( ID INTEGER) RETURNS ( SUMM0 DOUBLE PRECISION, SUMM1 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MBPDGV_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MBPDGV_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE MBPDGV_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE MBPMEAN_MOVEGOODS ( PODRID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( MBPID INTEGER, PRICE DOUBLE PRECISION, QBEG DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QEND DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE NBR_GEN_NBR ( NAME VARCHAR(20), ORGNID INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ORGN_BLNS_KREDIT ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP, DAYS INTEGER) RETURNS ( ORGID INTEGER, MGRID INTEGER, PRSID INTEGER, DGVID INTEGER, BI DOUBLE PRECISION, BS DOUBLE PRECISION, SI DOUBLE PRECISION, SS DOUBLE PRECISION, CALCDAYS INTEGER, CDAYS INTEGER, BCDATE TIMESTAMP, SDATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ORGN_GRP_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ORGN_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ORGN_REPLACEANDREMOVE ( KEEPID INTEGER, DELID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ORGNACCN_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ORGNBANKACCN_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ORGNGRPREF_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ORGNINFO_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE PODRLIST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE PRICEGOODS_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE PRICELIST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE PRICELIST_ORGN_PRICE ( GODSID INTEGER, ORGNID INTEGER, STORID INTEGER, IDKT INTEGER) RETURNS ( PRICE DOUBLE PRECISION, PRICEID INTEGER, PRCODE VARCHAR(230)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE PRSN_INIT_OPERTYPE AS BEGIN EXIT; END^ CREATE PROCEDURE PRSNMOVE_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE PRSNMOVE_UPDATEPRSN ( PRSNID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PRSNPOST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE RDB$CHECK_METADATA RETURNS ( TABLE_NAME CHAR(31) CHARACTER SET UNICODE_FSS, FIELD_NAME CHAR(31) CHARACTER SET UNICODE_FSS, NAME1 CHAR(31) CHARACTER SET UNICODE_FSS, NAME2 CHAR(31) CHARACTER SET UNICODE_FSS) AS BEGIN SUSPEND; END^ CREATE PROCEDURE RDB$FIX_METADATA ( CHARSET VARCHAR(31) CHARACTER SET ASCII) RETURNS ( TABLE_NAME CHAR(31) CHARACTER SET UNICODE_FSS, FIELD_NAME CHAR(31) CHARACTER SET UNICODE_FSS, NAME1 CHAR(31) CHARACTER SET UNICODE_FSS, NAME2 CHAR(31) CHARACTER SET UNICODE_FSS) AS BEGIN SUSPEND; END^ CREATE PROCEDURE REGION_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SALE_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SALE_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SALE_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SALE_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SALEACCN_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SALEDTDATA_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SALEKT_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SALEKT_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SALEKT_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SALEKT_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SALEKTDATA_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SELECT_MOVEGOODS ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, NAME VARCHAR(40), CODE VARCHAR(20), PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, AKCIZ DOUBLE PRECISION, QB DOUBLE PRECISION, QI DOUBLE PRECISION, QO DOUBLE PRECISION, QE DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SELECT_MOVEGOODSDGV ( DGVID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, NAME VARCHAR(40), CODE VARCHAR(20), PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, AKCIZ DOUBLE PRECISION, QB DOUBLE PRECISION, QI DOUBLE PRECISION, QO DOUBLE PRECISION, QE DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SELECT_WORKGODSFREE ( MSTID INTEGER) RETURNS ( ID INTEGER, QUANT DOUBLE PRECISION, QUANTN DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SERVICESVD_IMPORT ( ORGNID INTEGER, USERID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SERVICESVD_SUBDETAIL ( WORKMAINID INTEGER, QUANT DOUBLE PRECISION) RETURNS ( ID INTEGER, QNT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_BDG_APPLY_CALC_PRICE ( CALC_ID INTEGER, USERID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_CHECK_PAPER_DATA_STATE ( PAPER_DAT_ TIMESTAMP, PAPER_PLAN_ID INTEGER, PAPER_ITEM_ID INTEGER, PAPER_ATYPE INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_CLEAR_DISTR ( PLAN_ID INTEGER, PERIOD_ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_DO_CALC ( CALC_ID INTEGER) RETURNS ( NBR INTEGER, ORDER_NBR INTEGER, ORDER_NAME VARCHAR(255)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_BDG_DO_CALC_ORDER_OPER ( C_ID INTEGER, SO_ID INTEGER, SO_GROU_ INTEGER, CO_ID INTEGER, CO_GOODS_CENTER_ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_DO_CALC_ORDER_STEP ( SCHEME_ORDER_ID INTEGER, CALC_ORDER_ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_DO_DISTR ( DISTR_ID INTEGER, PLAN_ID INTEGER, PERIOD_ID INTEGER) RETURNS ( DISTR_ORDER_ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_BDG_DO_DISTR_ITEM ( CENTER_ID INTEGER, PLAN_ID INTEGER, ITEM_ID INTEGER, DISTR_BASIS_ID INTEGER, PERIOD_ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_FACT_REG_SALE ( OBJ_ID INTEGER, DAT_ TIMESTAMP, CENTER_ID INTEGER, DIRECTION_ID INTEGER, GSALE_ITEM_ID INTEGER, GCOST_ITEM_ID INTEGER, WSALE_ITEM_ID INTEGER, REASON VARCHAR(255), COMMENT VARCHAR(255), USERID INTEGER, ORGN_ID INTEGER, ORGNINFO_ID INTEGER, WPRICE_BY_CALC INTEGER, WORK_AS_GOODS INTEGER, NDS INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_FACT_REG_SALE_PRM ( OBJ_ID INTEGER, DAT_ TIMESTAMP, CENTER_ID INTEGER, DIRECTION_ID INTEGER, GSALE_ITEM_ID INTEGER, GCOST_ITEM_ID INTEGER, WSALE_ITEM_ID INTEGER, REASON VARCHAR(255), COMMENT VARCHAR(255), USERID INTEGER, ORGN_ID INTEGER, ORGNINFO_ID INTEGER, WPRICE_BY_CALC INTEGER, WORK_AS_GOODS INTEGER, NDS INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_FACT_REG_SALE_RET ( OBJ_ID INTEGER, DAT_ TIMESTAMP, CENTER_ID INTEGER, DIRECTION_ID INTEGER, GSALE_ITEM_ID INTEGER, GCOST_ITEM_ID INTEGER, WSALE_ITEM_ID INTEGER, REASON VARCHAR(255), COMMENT VARCHAR(254), USERID INTEGER, ORGN_ID INTEGER, ORGNINFO_ID INTEGER, WPRICE_BY_CALC INTEGER, WORK_AS_GOODS INTEGER, NDS INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_FACT_REG_WORK ( OBJ_ID INTEGER, DAT_ TIMESTAMP, CENTER_ID INTEGER, DIRECTION_ID INTEGER, ITEM_ID INTEGER, REASON VARCHAR(255), COMMENT VARCHAR(255), USERID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_BDG_ITEM_CHILDREN ( ITEM_ID INTEGER, SELF_INCLUDE INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_BDG_ITEM_PARENTS ( ID INTEGER) RETURNS ( OWNER INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_BDG_PERIOD_GETCHILDREN ( PERIOD_ID INTEGER, SELF_INCLUDE INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_BDG_PERIOD_PAPER_COPY ( SOURCE_PLAN_ID INTEGER, TARGET_PLAN_ID INTEGER, SOURCE_BDATE TIMESTAMP, SOURCE_EDATE TIMESTAMP, TARGET_BDATE TIMESTAMP, TARGET_EDATE TIMESTAMP, ITEM_KIND INTEGER, ITEM_RESULT_TYPE INTEGER, PAPER_ATYPE INTEGER, PAPER_SOURCE_TYPE INTEGER, PAPER_CENTER_ID INTEGER, PAPER_DIRECTION_ID INTEGER, USERID INTEGER) RETURNS ( S_ID INTEGER, T_ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_BDG_SET_DATA_STATE ( PERIOD_ID INTEGER, PLAN_ID INTEGER, ATYPE INTEGER, ASTATE INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_CRDS_AVLGOODS_RECALCULATE AS BEGIN EXIT; END^ CREATE PROCEDURE SP_CRDS_CARD ( I_GOODS_ID INTEGER, I_STORE_ID INTEGER) RETURNS ( DGV_DATE TIMESTAMP, DGV_NBR VARCHAR(20), GOODS_QUANT_IN DOUBLE PRECISION, GOODS_QUANT_OUT DOUBLE PRECISION, GOODS_REST DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_DGVDT_COPY ( I_DGVDTID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_CRDS_DGVDT_TO_DGVKT ( I_DGVDT_ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_CRDS_DGVKT_COPY ( I_DGVKTID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_CRDS_DGVKT_TO_DGVDT ( I_DGVKT_ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_CRDS_MATCHING_DGVDT ( I_STOR_DGV_ID INTEGER, I_CRDS_DGV_ID INTEGER) RETURNS ( O_DGV_ID INTEGER, O_DGV_NBR VARCHAR(20), O_DGV_DATE TIMESTAMP, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_MATCHING_DGVKT ( I_DGV_ID INTEGER) RETURNS ( DGV_ID INTEGER, DGV_NBR VARCHAR(20), DGV_DATE TIMESTAMP, TYPE_PRG INTEGER, TYPE_DIFF INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_MATCHING_DT ( I_START_DATE TIMESTAMP, I_END_DATE TIMESTAMP, I_STOR_ID INTEGER, I_PRECISION DOUBLE PRECISION) RETURNS ( O_DGV_ID INTEGER, O_NBR VARCHAR(20), O_DATE TIMESTAMP, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_MATCHING_GOODS_DT ( I_STOR_DGV_ID INTEGER, I_CRDS_DGV_ID INTEGER, I_PRECISION INTEGER) RETURNS ( O_GOODS_ID INTEGER, O_GOODS_QUANT DOUBLE PRECISION, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_MATCHING_GOODS_KT ( I_STOR_DGV_ID INTEGER, I_CRDS_DGV_ID INTEGER, I_PRECISION INTEGER) RETURNS ( O_GOODS_ID INTEGER, O_GOODS_QUANT DOUBLE PRECISION, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_MATCHING_KT ( I_START_DATE TIMESTAMP, I_END_DATE TIMESTAMP, I_STOR_ID INTEGER, I_PRECISION DOUBLE PRECISION) RETURNS ( O_DGV_ID INTEGER, O_NBR VARCHAR(20), O_DATE TIMESTAMP, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_MOVEGOODS ( I_GROUP_ID INTEGER, I_STORE_ID INTEGER, I_DATE_BEGIN TIMESTAMP, I_DATE_END TIMESTAMP) RETURNS ( GOODS_ID INTEGER, GOODS_NAME VARCHAR(40), GOODS_CODE VARCHAR(20), QUANT_BEGIN DOUBLE PRECISION, QUANT_IN DOUBLE PRECISION, QUANT_OUT DOUBLE PRECISION, QUANT_END DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_MOVEGOODS_GOODS ( I_GOODS_ID INTEGER, I_STORE_ID INTEGER, I_DATE_BEGIN TIMESTAMP, I_DATE_END TIMESTAMP) RETURNS ( QUANT_BEGIN DOUBLE PRECISION, QUANT_IN DOUBLE PRECISION, QUANT_OUT DOUBLE PRECISION, QUANT_END DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_CRDS_SET_GDSAVL ( I_GOODS_ID INTEGER, I_STORE_ID INTEGER, I_QUANT DOUBLE PRECISION) AS BEGIN EXIT; END^ CREATE PROCEDURE SP_GEN_PRSNOPERTYPE_ID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_GET_USER_RIGHT ( RIGHT_CODE VARCHAR(40), USER_ID INTEGER, ORGN_ID INTEGER) RETURNS ( RIGHT_VAL INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SP_ZPLT_DAYTYPE RETURNS ( ID INTEGER, NAME VARCHAR(40)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STOR_SQNT ( STOR1 INTEGER, STOR2 INTEGER, SMALLSQNT INTEGER = 0) RETURNS ( GDSID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORGRP_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORLIST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STOROPER_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_BLNS ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ZSID INTEGER, BS DOUBLE PRECISION, DT DOUBLE PRECISION, KT DOUBLE PRECISION, ES DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_CHECKSTATE ( ID INTEGER) RETURNS ( STATE INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_FORCECLOSE ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE STORZAKAZDT_GDDDT ( SZID INTEGER, DGVDTID INTEGER, ADATE TIMESTAMP = null) RETURNS ( GODSID INTEGER, SZGDSID INTEGER, LINKID INTEGER, EQID INTEGER, MAINID INTEGER, GDDDTID INTEGER, GDDKTID INTEGER, QUANT DOUBLE PRECISION, QNTNORM DOUBLE PRECISION, ZMSTID INTEGER, ZSLVID INTEGER, ZID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_GDDDT_RETNKT ( SZID INTEGER, STOR INTEGER, USERID INTEGER = null, ADATE TIMESTAMP = null, OUT_DATE TIMESTAMP = null) RETURNS ( GODSID INTEGER, SZGDSID INTEGER, GDDDTID INTEGER, GDDKTID INTEGER, DGVDTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_GDSSELECT ( ID INTEGER) RETURNS ( SZGDSID INTEGER, SOURCE DOUBLE PRECISION, QNTOUTRSV DOUBLE PRECISION, QNTOUTOUT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_RESALE RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_SALECHECK RETURNS ( TYP INTEGER, SUBTYP INTEGER, ID INTEGER, DAT_ TIMESTAMP, NBR VARCHAR(20), DELTA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_SLSUMMA ( ID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZAKAZDT_WORKMAINGDS_SEL ( SZID INTEGER, STOR INTEGER, ADATE TIMESTAMP = null) RETURNS ( GODSID INTEGER, QNTNEED DOUBLE PRECISION, QNTHAS DOUBLE PRECISION, LINKID INTEGER, EQID INTEGER, MAINID INTEGER, QNTNORM DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE STORZDTGDS_SELECT ( SZID INTEGER) RETURNS ( ID INTEGER, GODSID INTEGER, FQUANT DOUBLE PRECISION, WQUANT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SUB_DELETE ( ACCN VARCHAR(5), SUBKEY INTEGER, AN INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE SYSCONST_GETORGNUSERBLOB ( ORGNID INTEGER, USERID INTEGER, NAME VARCHAR(255)) RETURNS ( BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SYSCONST_GETORGNUSERVALUE ( ORGNID INTEGER, USERID INTEGER, NAME VARCHAR(255)) RETURNS ( VAL VARCHAR(255)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SYSCONST_GETUSERBLOB ( USERID INTEGER, NAME VARCHAR(255)) RETURNS ( BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SYSCONST_GETUSERVALUE ( USERID INTEGER, NAME VARCHAR(255)) RETURNS ( VAL VARCHAR(255)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SYSCONST_GETVALUE ( ORGNID INTEGER, NAME VARCHAR(255)) RETURNS ( VAL VARCHAR(255)) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SYSCONST_SETORGNUSERBLOB ( ORGNID INTEGER, USERID INTEGER, NAME VARCHAR(255), BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80, DESCRIPTION VARCHAR(1024) = null) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SYSCONST_SETORGNUSERVALUE ( ORGNID INTEGER, USERID INTEGER, NAME VARCHAR(255), VAL VARCHAR(255), DESCRIPTION VARCHAR(1024) = null) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE SYSCONST_SETUSERBLOB ( USERID INTEGER, NAME VARCHAR(255), BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80) AS BEGIN EXIT; END^ CREATE PROCEDURE SYSCONST_SETUSERVALUE ( USERID INTEGER, NAME VARCHAR(255), VAL VARCHAR(255), DESCRIPTION VARCHAR(1024) = null) AS BEGIN EXIT; END^ CREATE PROCEDURE SYSCONST_SETVALUE ( ORGNID INTEGER, NAME VARCHAR(255), VAL VARCHAR(255), DESCRIPTION VARCHAR(1024) = null) AS BEGIN EXIT; END^ CREATE PROCEDURE THROW_EXCEPTION ( EXCEPTION_TEXT VARCHAR(100)) AS BEGIN EXIT; END^ CREATE PROCEDURE USERLIST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE VKSL_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE VKSL_GENACCNREC ( ID INTEGER, TYP INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE VKSL_GENACCNRECSALEDT ( ID INTEGER, OPID INTEGER, TYP INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE VKSL_GENACCNRECSALEKT ( ID INTEGER, OPID INTEGER, TYP INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKCALCMST_COPY ( OLDID INTEGER, NEWID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKCALCMST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKCALCNK_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKCALCPODR_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKGOODS_GETCHILDS ( GRPID INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKGOODS_GETPARENTS ( ID INTEGER) RETURNS ( CID INTEGER, PARENTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKHBNK_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKLINK_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKLINK_PRICE ( GID INTEGER) RETURNS ( GDSKEY INTEGER, QUANT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKMAIN_COPY ( M1ID INTEGER, M2ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKMAIN_GETPARENTS ( ID INTEGER, OTYPE INTEGER) RETURNS ( OID INTEGER, OBJTYPE INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKMAIN_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKMAINGDS_CHECK ( GODSID INTEGER, CURMAINID INTEGER, CURLINKID INTEGER, CUREQID INTEGER, EXCEPT INTEGER = 1) RETURNS ( ALREADYUSE INTEGER, MAINID INTEGER, LINKID INTEGER, EQID INTEGER, LINKID1 INTEGER, EQID1 INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKMODEL_DELETE ( ID INTEGER, PARENT INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKMODEL_GETPARENTS ( ID INTEGER) RETURNS ( CID INTEGER, PARENTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKMODEL_RECALCNW ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKMODEL_SELECTMATERIAL ( ID INTEGER) RETURNS ( MODELGDSID INTEGER, DETAILQUANT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKMODEL_USEDPARENTS ( ID INTEGER) RETURNS ( PARENTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKMODELGDS_CALCQUANT ( QUANTS DOUBLE PRECISION, CALCTYPE INTEGER, SIZEX DOUBLE PRECISION, SIZEY DOUBLE PRECISION, SIZEZ DOUBLE PRECISION, DELTAX DOUBLE PRECISION, DELTAY DOUBLE PRECISION, DELTAZ DOUBLE PRECISION, KX DOUBLE PRECISION, KY DOUBLE PRECISION, KZ DOUBLE PRECISION, KNORM DOUBLE PRECISION, RND DOUBLE PRECISION, QNT DOUBLE PRECISION) RETURNS ( QUANT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC_GDD_SUM ( ZKID INTEGER) RETURNS ( SUM1 DOUBLE PRECISION, SUM2 DOUBLE PRECISION, SUM3 DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC_KNK ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC_NEW ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC1 ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC1_KNK ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC1_KNK_PHASE2 ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC1_KNK_UPDDZ ( ID INTEGER) RETURNS ( RECCUR INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC1_KNK_UPDPZ ( ID INTEGER) RETURNS ( RECCUR INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_CALC2 ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKNK_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKNK_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKNKDG_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKOPERATION_GETPARENTS ( ID INTEGER) RETURNS ( CID INTEGER, PARENTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKPLANMST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKPLANSLV_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKREQUESTADDKT ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURORGNID INTEGER, STORGRP INTEGER, WSTOR INTEGER, GPSTOR INTEGER, NOTINZAKAZ INTEGER = 0, NOTINVENT INTEGER = 0) RETURNS ( WZID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKREQUESTADDWR ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURORGNID INTEGER, STORGRP INTEGER, USERNAME VARCHAR(20)) RETURNS ( SZID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_CHECK_CLOSE ( ZID INTEGER, MST INTEGER = 1, GDD INTEGER = 1) RETURNS ( MGDSID INTEGER, MTGDSID INTEGER, REALQUANT DOUBLE PRECISION, CALCQUANT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_DGVDT ( DGVKTID INTEGER, DGVDTID INTEGER, USERNAME VARCHAR(20)) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKZ_DGVDT_REFRESH_ALL ( ZID INTEGER, USERNAME VARCHAR(20)) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKZ_DGVDT_RESERV ( ZID INTEGER, STOR INTEGER, ADATE TIMESTAMP, USERID INTEGER, PF_ALLQNT INTEGER = 0) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_DGVDT_SELECT ( DGVKTID INTEGER, DGVDTID INTEGER, USERNAME VARCHAR(20)) RETURNS ( GDDKTID INTEGER, GDDDTID INTEGER, PARAMID INTEGER, EQUSE INTEGER, EQUSESMALL INTEGER, EQUSEMAIN INTEGER, EQUSENOZRESERV INTEGER, EQUSERECALCNORM INTEGER, EQUSEPARALLEL INTEGER, DQUANT DOUBLE PRECISION, DQ DOUBLE PRECISION, DSOURCE DOUBLE PRECISION, SIZEX DOUBLE PRECISION, GSIZEX DOUBLE PRECISION, FIXVAL INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_DGVDT_SELECT_P ( DGVKTID INTEGER, DGVDTID INTEGER, USERNAME VARCHAR(20)) RETURNS ( GDDKTID INTEGER, GDDDTID INTEGER, PARAMID INTEGER, FIXVAL INTEGER, EQUSE INTEGER, EQUSESMALL INTEGER, EQUSEMAIN INTEGER, EQUSENOZRESERV INTEGER, EQUSERECALCNORM INTEGER, EQUSEPARALLEL INTEGER, DQUANT DOUBLE PRECISION, DQ DOUBLE PRECISION, DSOURCE DOUBLE PRECISION, SIZEX DOUBLE PRECISION, GSIZEX DOUBLE PRECISION, SUMQUANT DOUBLE PRECISION, ZID INTEGER, SGODSID INTEGER, MQ DOUBLE PRECISION, MSUM DOUBLE PRECISION, QNT DOUBLE PRECISION, KSQUANT DOUBLE PRECISION, MULSIZE DOUBLE PRECISION, MUL DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_DGVKTRECALC ( ID INTEGER) RETURNS ( KID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_DIFF ( STORID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ZID INTEGER, MSTID INTEGER, KQUANT DOUBLE PRECISION, MQUANT DOUBLE PRECISION, GDDKTID INTEGER, SGODSID INTEGER, IX INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_DTL_MSTRECS ( ID INTEGER) RETURNS ( PARENTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_EQ_AVG ( ZID INTEGER, ADATE TIMESTAMP, NOCHECKDATE INTEGER, DGVDTID INTEGER, MQUANT DOUBLE PRECISION, SSOURCE DOUBLE PRECISION, MID INTEGER, ZSID INTEGER, ZKID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKZ_EQ_DGVDT ( DGVKTID INTEGER, DGVDTID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKZ_GROUPBYGOODS ( ZID INTEGER) RETURNS ( GODSID INTEGER, NOZRESERV INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_LGOODSSELECT ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GDSKEY INTEGER, SRCQNT DOUBLE PRECISION, RTNQNT DOUBLE PRECISION, QNTQNT DOUBLE PRECISION, DLTQNT DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_MAKEDETAILS ( IDS VARCHAR(1024), ADATE TIMESTAMP, NBR_SUF VARCHAR(32), OPTIONS INTEGER, USERNAME VARCHAR(20)) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKZ_MAKEDOCRTN ( ZID INTEGER, ADATE TIMESTAMP, USERNAME VARCHAR(20)) RETURNS ( DGVDTID INTEGER, DGVKTID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_NORMSELECT1 ( BDATE TIMESTAMP, EDATE TIMESTAMP, WSTORID INTEGER) RETURNS ( ZMGDSID INTEGER, ZSGDSID INTEGER, ZMQUANT DOUBLE PRECISION, ZSQUANT DOUBLE PRECISION, ZSTRQUANT DOUBLE PRECISION, ZSHBNORM DOUBLE PRECISION, ZSZKNORM DOUBLE PRECISION, ZSZKDELTA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_TRASHADD ( ZID INTEGER) RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZ_TRASHDEL ( ZID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKZAKAZ_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZAKAZADDWR ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURORGNID INTEGER, STOR INTEGER, GDSPARAMID INTEGER, USERNAME VARCHAR(20), FORPF INTEGER = 0) RETURNS ( ZID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZAKAZADDWR1 ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURORGNID INTEGER, STOR INTEGER, GDSPARAMID INTEGER, USERNAME VARCHAR(20), FORPF INTEGER = 0) RETURNS ( ZID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZMAIN_DIFF ( ID INTEGER) RETURNS ( RESULT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZMST_CALCSLV ( MID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE WORKZMST_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE WORKZSLV_NEWID RETURNS ( ID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE XXX_BDG_TMP AS BEGIN EXIT; END^ CREATE PROCEDURE XXX_WORKMODEL_UPDATE AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCAVGACC ( OURORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( VAL DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCAVGACC_ADDTIME ( PRSNID INTEGER, INPDATE TIMESTAMP, OUTDATE TIMESTAMP, YEAR_MONTH TIMESTAMP, DAYNUM INTEGER, ACTUAL_TIME_IN_DAY DOUBLE PRECISION, PLAN_TIME_IN_DAY DOUBLE PRECISION, WTIMESTACK DOUBLE PRECISION) RETURNS ( WTIME DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCAVGEPZ ( OURORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( VAL DOUBLE PRECISION, KVAL DOUBLE PRECISION, PDAYS DOUBLE PRECISION, WDAYS DOUBLE PRECISION, NAME VARCHAR(40), IDATE TIMESTAMP, ODATE TIMESTAMP) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCDECRMST ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCDECRPRSN ( SID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCFOTMST ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCGRIDNALOG ( ID INTEGER, CDECRID INTEGER, S DOUBLE PRECISION, BLS DOUBLE PRECISION, DS DOUBLE PRECISION) RETURNS ( CSUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCGRIDNALOGSUM ( ID INTEGER, CDECRID INTEGER, S DOUBLE PRECISION, BLS DOUBLE PRECISION, DS DOUBLE PRECISION) RETURNS ( CSUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCINCRMST ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCINCRPRSN ( ID INTEGER, WINCRMUL DOUBLE PRECISION, HINCRMUL DOUBLE PRECISION, WEEKENDINCRID INTEGER, HOLIDAYINCRID INTEGER, WINCRINCL INTEGER, HINCRINCL INTEGER, TIMEW DOUBLE PRECISION, TABELPLANID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCINCRPRSN14 ( ID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCINCRPRSN16 ( ID INTEGER, SLVID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCINCRPRSNAVGDAYS ( ID INTEGER, TABELPLANID INTEGER, WINCRMUL DOUBLE PRECISION, HINCRMUL DOUBLE PRECISION, WINCRINCL INTEGER, HINCRINCL INTEGER) RETURNS ( SUMMAWRK DOUBLE PRECISION, SUMMAWKN DOUBLE PRECISION, SUMMAHLD DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCINCRPRSNPROC ( ID INTEGER, WINCRID INTEGER, HINCRID INTEGER, WINCRINCL INTEGER, HINCRINCL INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCJOB1BRIGADE ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCJOB2BRIGADE ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCJOBGRP ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCJOBPRSN ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCMST ( ID INTEGER) RETURNS ( MID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCMSTDELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCMSTGENACCNREC ( ID INTEGER) RETURNS ( MID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCPRSNUNDIRECT ( ID INTEGER, CINCRID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_CALCRELIDX ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( CURDATE TIMESTAMP, CURIDX DOUBLE PRECISION, RELIDX DOUBLE PRECISION, CALCIDX DOUBLE PRECISION, PREVIDX DOUBLE PRECISION, PREV1IDX DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCSLVBL ( SIID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION, BDATE TIMESTAMP, EDATE TIMESTAMP, ISUMMA DOUBLE PRECISION, SUMMA1 DOUBLE PRECISION, ALLDAYS INTEGER, WRKDAYS INTEGER, HLDDAYS INTEGER, WKNDAYS INTEGER, FCTDAYS INTEGER, CLCDAYS INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCSLVIDX ( SIID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CALCSLVO ( SIID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION, BDATE TIMESTAMP, EDATE TIMESTAMP, BCDATE TIMESTAMP, ECDATE TIMESTAMP, MCNT INTEGER, ISUMMA DOUBLE PRECISION, SUMMA1 DOUBLE PRECISION, DAYS INTEGER, HLDDAYS INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_CREATESLVLIST ( ORGNID INTEGER, BID INTEGER, MID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_HLDDAYS ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( DAYS INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_IMPORTAVANS ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_NFL_RECALC ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( PRSNID INTEGER, ISUMMA DOUBLE PRECISION, DSUMMA DOUBLE PRECISION, LSUMMA DOUBLE PRECISION, SSUMMA DOUBLE PRECISION, MCNT INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_PRSNPARAMS ( ORGNID INTEGER, PRSNID INTEGER, ADATE TIMESTAMP) RETURNS ( STATUS INTEGER, WTYP INTEGER, PODRID INTEGER, STORID INTEGER, POSTID INTEGER, PODRPOSTID INTEGER, DAYWTIME DOUBLE PRECISION, FOTGRPID INTEGER, TABELID INTEGER, TABELPLANID INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_REPORT_ESV ( PRSNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( PID INTEGER, CODE INTEGER, ISUMALL DOUBLE PRECISION, ISUMMA DOUBLE PRECISION, DSUMALL DOUBLE PRECISION, DSUMMA DOUBLE PRECISION, FSUMALL DOUBLE PRECISION, FSUMMA DOUBLE PRECISION, SUMM_DIFF DOUBLE PRECISION, M INTEGER, Y INTEGER, PAY_TP INTEGER, NRC INTEGER, KD_PTV INTEGER, KD_NP INTEGER, KD_NZP INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_SETTYPICALCALENDAR ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLT_SLVDAYSSELECT ( ID INTEGER) RETURNS ( DAYNO INTEGER, WTIME DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_SLVWDAYS ( ID INTEGER) RETURNS ( DAYS INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLT_TABELDAYSSELECT ( ID INTEGER) RETURNS ( DAYNO INTEGER, WTIME DOUBLE PRECISION) AS BEGIN SUSPEND; END^ CREATE PROCEDURE ZPLTPLATMST_DELACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE ZPLTPLATMST_GENACCNREC ( ID INTEGER) AS BEGIN EXIT; END^ SET TERM ; ^ /******************************************************************************/ /*** Tables ***/ /******************************************************************************/ CREATE TABLE ACCNDOC ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_timeStamp ); CREATE TABLE ACCNPLAN ( ID INTEGER NOT NULL, ACCN VARCHAR(5) NOT NULL, NAME VARCHAR(60), DT DOUBLE PRECISION, KT DOUBLE PRECISION, GROUP0 INTEGER, GROUP1 INTEGER, A1 INTEGER, A2 INTEGER, A3 INTEGER, A4 INTEGER, A5 INTEGER, A6 INTEGER, A7 INTEGER, A8 INTEGER, A9 INTEGER, NBLNS INTEGER DEFAULT 0, CURRTYP INTEGER, CDT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CKT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ACCNPROV ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, DT VARCHAR(5), KT VARCHAR(5), SUMMA DOUBLE PRECISION, DOCUMENT DMN_NBR, COMMENT VARCHAR(255), DTPRT INTEGER, DTOBJ INTEGER, KTPRT INTEGER, KTOBJ INTEGER, DT1 INTEGER, KT1 INTEGER, DT2 INTEGER, KT2 INTEGER, DT3 INTEGER, KT3 INTEGER, DT4 INTEGER, KT4 INTEGER, DT5 INTEGER, KT5 INTEGER, DT6 INTEGER, KT6 INTEGER, DT7 INTEGER, KT7 INTEGER, DT8 INTEGER, KT8 INTEGER, DT9 INTEGER, KT9 INTEGER, CURRTYP INTEGER, CURS DOUBLE PRECISION DEFAULT 1.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, OPER INTEGER, OPERID INTEGER, DOCID INTEGER, ACCNDOCID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ACOPRLST ( ID INTEGER NOT NULL, NAME VARCHAR(255), OPER INTEGER, OPERID INTEGER, VL1 INTEGER, VL2 INTEGER, BLNS INTEGER, NOTIFY_OPTIONS INTEGER DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, BDGT_ITEM1_ID INTEGER, BDGT_ITEM2_ID INTEGER ); CREATE TABLE BANKMFO ( ID INTEGER NOT NULL, NAME VARCHAR(255), MFO VARCHAR(30), SWIFT VARCHAR(30), ADDRESS VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE BDG_ATTR ( ID INTEGER NOT NULL, ATYPE INTEGER DEFAULT -1 NOT NULL, CODE VARCHAR(40), NAME VARCHAR(255), COMMENT VARCHAR(255), IS_REQUIRED INTEGER DEFAULT 0 NOT NULL, IS_UNIQUE INTEGER DEFAULT 1 NOT NULL, REC_DISABLED INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE BDG_ATTR_VAL ( ID INTEGER NOT NULL, ATTR_ID INTEGER NOT NULL, CODE VARCHAR(40), NAME VARCHAR(255), COMMENT VARCHAR(255), REC_DISABLED INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE BDG_BASIS ( ID INTEGER NOT NULL, NAME VARCHAR(255), MEASURE VARCHAR(40), COMMENT VARCHAR(255), USERID INTEGER ); CREATE TABLE BDG_BASIS_PORTION ( ID INTEGER NOT NULL, GOODS_ID INTEGER NOT NULL, PORTION DOUBLE PRECISION NOT NULL, BASIS_ID INTEGER NOT NULL, USERID INTEGER ); CREATE TABLE BDG_CALC ( ID INTEGER NOT NULL, PLAN_ID INTEGER, PERIOD_ID INTEGER NOT NULL, SCHEME_ID INTEGER, SCHEME_NAME VARCHAR(255), SCHEME_ATYPE INTEGER NOT NULL, NBR VARCHAR(80), COMMENT VARCHAR(255), USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT current_timestamp NOT NULL, ADEFAULT INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE BDG_CALC_DATA ( ID INTEGER NOT NULL, CALC_ORDER_ID INTEGER NOT NULL, CALC_GOODS_ID INTEGER NOT NULL, AMOUNT DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE BDG_CALC_GOODS ( ID INTEGER NOT NULL, CALC_ID INTEGER NOT NULL, GOODS_ID INTEGER NOT NULL, CENTER_ID INTEGER NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, ATYPE INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE BDG_CALC_ORDER ( ID INTEGER NOT NULL, CALC_ID INTEGER NOT NULL, ITEM_ID INTEGER, CENTER_ID INTEGER, GROU_ INTEGER NOT NULL, NAME VARCHAR(255), NBR INTEGER NOT NULL, OWNER INTEGER, GOODS_CENTER_ID INTEGER, GOODS_ATYPE INTEGER, ATYPE INTEGER DEFAULT 0 NOT NULL, COMMENT VARCHAR(255) ); CREATE TABLE BDG_CENTER ( ID INTEGER NOT NULL, CODE VARCHAR(40), TYP INTEGER DEFAULT 0 NOT NULL, OWNER INTEGER, NAME VARCHAR(255) COLLATE PXW_CYRL, REC_DISABLED INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE BDG_DATA_STATE ( ID INTEGER NOT NULL, PERIOD_ID INTEGER NOT NULL, PLAN_ID INTEGER, ATYPE INTEGER NOT NULL, ASTATE INTEGER DEFAULT 0 NOT NULL, USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE BDG_DIRECTION ( ID INTEGER NOT NULL, CODE VARCHAR(40), NAME VARCHAR(255), REC_DISABLED INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE BDG_DISTR ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(40), COMMENT VARCHAR(255), LASTEDIT TIMESTAMP, USERID INTEGER ); CREATE TABLE BDG_DISTR_BASIS ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(40), MEASURE VARCHAR(40), LASTEDIT TIMESTAMP, USERID INTEGER, REC_DISABLED INTEGER DEFAULT 0 NOT NULL, COMMENT VARCHAR(255) ); CREATE TABLE BDG_DISTR_ORDER ( ID INTEGER NOT NULL, DISTR_ID INTEGER NOT NULL, NBR INTEGER NOT NULL, ITEM_ID INTEGER, CENTER_ID INTEGER NOT NULL, DISTR_BASIS_ID INTEGER NOT NULL ); CREATE TABLE BDG_DISTR_PORTION ( ID INTEGER NOT NULL, DISTR_BASIS_ID INTEGER NOT NULL, CENTER_ID INTEGER NOT NULL, PORTION DOUBLE PRECISION NOT NULL, PERIOD_ID INTEGER ); CREATE TABLE BDG_DOC ( ID INTEGER NOT NULL, DIRECTION_ID INTEGER, PERIOD_ID INTEGER NOT NULL, CENTER_ID INTEGER NOT NULL, PLAN_ID INTEGER, ITEM_ID INTEGER NOT NULL, DOC_TYPE INTEGER DEFAULT 0 NOT NULL, AMOUNT DOUBLE PRECISION DEFAULT 0 NOT NULL, LASTEDIT TIMESTAMP, USER_ID INTEGER ); CREATE TABLE BDG_GOODS ( ID INTEGER NOT NULL, GOODS_ID INTEGER NOT NULL, PAPER_ID INTEGER, QUANT DOUBLE PRECISION DEFAULT 0, PRICE DOUBLE PRECISION DEFAULT 0, SRC_PRICE DOUBLE PRECISION, USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT current_timestamp, LINK_TO INTEGER, OBJ_GDD_ID INTEGER ); CREATE TABLE BDG_IND_VAL ( ID INTEGER NOT NULL, PLAN_ID INTEGER, PERIOD_ID INTEGER NOT NULL, INDICATOR_ID INTEGER NOT NULL, VAL_DBL INTEGER, VAL_INT INTEGER, VAL_STR INTEGER, VAL_DAT INTEGER ); CREATE TABLE BDG_INDICATOR ( ID INTEGER NOT NULL, READONLY INTEGER DEFAULT 0 NOT NULL, NAME VARCHAR(40) NOT NULL, FULLNAME VARCHAR(255), VAL_TYPE INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE BDG_ITEM ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(40), GROU_ INTEGER DEFAULT 0 NOT NULL, OWNER INTEGER, CHILD_COUNT INTEGER DEFAULT 0 NOT NULL, KIND INTEGER DEFAULT 0 NOT NULL, RESULT_TYPE INTEGER DEFAULT 1 NOT NULL, COSTS_TYPE INTEGER, WORK_TYPE INTEGER, COMMENT VARCHAR(255), REC_DISABLED INTEGER DEFAULT 0 NOT NULL, ATYPE INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE BDG_LINK_ITEM_CENTER ( ID INTEGER NOT NULL, ITEM_ID INTEGER NOT NULL, CENTER_ID INTEGER NOT NULL ); CREATE TABLE BDG_LINK_PAPER_ATTR_VAL ( ID INTEGER NOT NULL, PAPER_ID INTEGER NOT NULL, ATTR_VAL_ID INTEGER NOT NULL ); CREATE TABLE BDG_LINK_USER_CENTER ( ID INTEGER NOT NULL, USER_ID INTEGER NOT NULL, CENTER_ID INTEGER NOT NULL ); CREATE TABLE BDG_LINK_USER_DIRECTION ( ID INTEGER NOT NULL, USER_ID INTEGER NOT NULL, DIRECTION_ID INTEGER NOT NULL ); CREATE TABLE BDG_PAPER ( ID INTEGER NOT NULL, OURORGNID INTEGER, ATYPE INTEGER NOT NULL, PLAN_ID INTEGER, ITEM_ID INTEGER, CENTER_ID INTEGER NOT NULL, DIRECTION_ID INTEGER, DAT_ TIMESTAMP DEFAULT current_date NOT NULL, AMOUNT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, REASON VARCHAR(255), COMMENT VARCHAR(255), OBJ_ID INTEGER, USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT current_timestamp NOT NULL, SOURCE_TYPE INTEGER DEFAULT 0 NOT NULL, LINK_TO INTEGER, LINK_KOEF DOUBLE PRECISION, INP_TYPE INTEGER DEFAULT 0 NOT NULL, ORGN_ID INTEGER, ORGNINFO_ID INTEGER, IS_INNER INTEGER DEFAULT 0 NOT NULL, IMPORT_KEY VARCHAR(60) ); CREATE TABLE BDG_PERIOD ( ID INTEGER NOT NULL, GROU_ INTEGER DEFAULT 0 NOT NULL, OWNER INTEGER, BDATE TIMESTAMP DEFAULT current_timestamp NOT NULL, EDATE TIMESTAMP DEFAULT current_timestamp NOT NULL, NAME VARCHAR(40), COMMENT VARCHAR(255), ASTATE INTEGER DEFAULT 0 NOT NULL, LASTEDIT TIMESTAMP DEFAULT current_timestamp, USERID INTEGER, PLAN_ID INTEGER, OBJID INTEGER, P_DISTR_ID INTEGER, F_DISTR_ID INTEGER ); CREATE TABLE BDG_PLAN ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(40), COMMENT VARCHAR(255), PLAN_STATE INTEGER DEFAULT 0 NOT NULL, DISABLED INTEGER ); CREATE TABLE BDG_PRICE ( ID INTEGER NOT NULL, ATYPE INTEGER, NAME VARCHAR(255), COMMENT VARCHAR(255) ); CREATE TABLE BDG_PRICE_GOODS ( ID INTEGER NOT NULL, PRICE_ID INTEGER NOT NULL, GOODS_ID INTEGER NOT NULL, PERIOD_ID INTEGER NOT NULL, PRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE BDG_SCHEME ( ID INTEGER NOT NULL, CODE VARCHAR(40), NAME VARCHAR(255), COMMENT VARCHAR(255), ATYPE INTEGER NOT NULL ); CREATE TABLE BDG_SCHEME_OPER ( ID INTEGER NOT NULL, ORDER_ID INTEGER NOT NULL, NBR INTEGER NOT NULL, OPER_TYPE INTEGER NOT NULL, VAL_TYPE INTEGER NOT NULL, VAL_FLOAT DOUBLE PRECISION, VAL_BASIS_ID INTEGER, VAL_ORDER_ID INTEGER ); CREATE TABLE BDG_SCHEME_ORDER ( ID INTEGER NOT NULL, SCHEME_ID INTEGER NOT NULL, OWNER INTEGER, GROU_ INTEGER NOT NULL, NBR INTEGER NOT NULL, GOODS_CENTER_ID INTEGER, GOODS_ATYPE INTEGER, ATYPE INTEGER DEFAULT 0 NOT NULL, ITEM_ID INTEGER, CENTER_ID INTEGER, NAME VARCHAR(255), COMMENT VARCHAR(255) ); CREATE TABLE BDG_SERV ( ID INTEGER NOT NULL, SERV_ID INTEGER NOT NULL, PAPER_ID INTEGER, QUANT DOUBLE PRECISION, PRICE DOUBLE PRECISION, LASTEDIT TIMESTAMP, USERID INTEGER, OBJ_SRV_ID INTEGER ); CREATE TABLE BDG_SHEDULE ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(40), ATYPE INTEGER NOT NULL, LASTEDIT TIMESTAMP, USERID INTEGER, COMMENT VARCHAR(255) ); CREATE TABLE BDG_SHEDULE_SHIFT ( ID INTEGER NOT NULL, SHEDULE_ID INTEGER, DAYS INTEGER, KOEF DOUBLE PRECISION, LASTEDIT TIMESTAMP, USERID INTEGER ); CREATE TABLE BDG_WGOODS ( ID INTEGER NOT NULL, WPAPER_ID INTEGER, GOODS_ID INTEGER NOT NULL, QUANT DOUBLE PRECISION NOT NULL, LASTEDIT TIMESTAMP NOT NULL, USERID INTEGER ); CREATE TABLE BDG_WPAPER ( ID INTEGER NOT NULL, PLAN_ID INTEGER, DIRECTION_ID INTEGER NOT NULL, CENTER_ID INTEGER NOT NULL, ITEM_ID INTEGER NOT NULL, PERIOD_ID INTEGER NOT NULL, LASTEDIT INTEGER NOT NULL, USERID INTEGER ); CREATE TABLE BOOKSLDT ( ID INTEGER NOT NULL, BOOKDAYSID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR VARCHAR(32), NAMEID INTEGER, SUMMA DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, NDSPROC DOUBLE PRECISION DEFAULT 0.0, NDS DOUBLE PRECISION, DOCTIP INTEGER, DOCID INTEGER, NSUMMA DOUBLE PRECISION, FORMSTR VARCHAR(255), TYP INTEGER, RNBR VARCHAR(32), SALENDS INTEGER, KNDS INTEGER, KNBR VARCHAR(32), KNNBR VARCHAR(32), KCOMMENT VARCHAR(255), DATECALC TIMESTAMP, KBN INTEGER, SBN INTEGER, SNN INTEGER, D5 SMALLINT, OPERID INTEGER, EDITED INTEGER DEFAULT 0 NOT NULL, RECALC SMALLINT, SUMCODE SMALLINT, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE BOOKSLDTACCR ( ID INTEGER NOT NULL, BOOKSLDTID INTEGER NOT NULL, ACCNPROVID INTEGER ); CREATE TABLE BOOKSLDTDAYS ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, SUMMA DOUBLE PRECISION, NBR DMN_NBR, KSUMMA DOUBLE PRECISION ); CREATE TABLE BOOKSLKT ( ID INTEGER NOT NULL, BOOKDAYSID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR VARCHAR(32), NAMEID INTEGER, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, KSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NDSPROC DOUBLE PRECISION DEFAULT 0.0, NDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CBNDS SMALLINT, DOCTIP INTEGER, DOCID INTEGER, NSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SALEDATE TIMESTAMP, FORMSTR VARCHAR(255), TYP INTEGER, RNBR VARCHAR(32), KNBR VARCHAR(32), KNDATE TIMESTAMP, KNNBR VARCHAR(32), KCOMMENT VARCHAR(255), KNDS DOUBLE PRECISION DEFAULT 0.0, NNDS INTEGER, FNDS INTEGER, FFNDS INTEGER, D5 SMALLINT, OPERID INTEGER, EDITED INTEGER DEFAULT 0 NOT NULL, NEW_CHECK INTEGER DEFAULT 0, AONBR VARCHAR(32), RECALC SMALLINT, NK1 INTEGER DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE BOOKSLKTACCR ( ID INTEGER NOT NULL, BOOKSLKTID INTEGER NOT NULL, ACCNPROVID INTEGER ); CREATE TABLE BOOKSLKTDAYS ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR ); CREATE TABLE CONTACTS ( ID INTEGER NOT NULL, NAME VARCHAR(255), POST VARCHAR(255), EMAIL VARCHAR(255), WEBSITE VARCHAR(255), BUSINESSPHONE VARCHAR(255), HOMEPHONE VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 0 SEGMENT SIZE 80, ORGNID INTEGER, BIRTHDAY TIMESTAMP, HOMEADDRESS VARCHAR(255), MOBILEPHONE VARCHAR(255), DRDOCNBR VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE CRDS_AVLGOODS ( ID CRDS_ID_PK NOT NULL, GOODS_ID CRDS_ID_FK NOT NULL, STORE_ID CRDS_ID_FK NOT NULL, AVLGOODS_QUANT DOUBLE PRECISION, LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE CRDS_DGVDT ( ID CRDS_ID_PK NOT NULL, STOR_ID CRDS_ID_FK, DGVDT_DATE CRDS_DATETIME NOT NULL, DGVDT_NBR DMN_NBR NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, COMMENT VARCHAR(255) COLLATE PXW_CYRL ); CREATE TABLE CRDS_DGVKT ( ID CRDS_ID_PK NOT NULL, STOR_ID CRDS_ID_FK, DGVKT_DATE CRDS_DATETIME, DGVKT_NBR DMN_NBR, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, COMMENT VARCHAR(255) COLLATE PXW_CYRL ); CREATE TABLE CRDS_GDDDT ( ID CRDS_ID_PK NOT NULL, DGVDT_ID CRDS_ID_FK, GOODS_ID CRDS_ID_FK, GOODS_QUANT CRDS_NUMBER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE CRDS_GDDKT ( ID CRDS_ID_PK NOT NULL, DGVKT_ID CRDS_ID_FK, GOODS_ID CRDS_ID_FK, GOODS_QUANT CRDS_NUMBER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE CSDTKT ( ID INTEGER NOT NULL, DAT_ TIMESTAMP NOT NULL, NAMEID INTEGER NOT NULL, CURRTYP INTEGER NOT NULL, BCSUMMA DOUBLE PRECISION DEFAULT 0.0, ECSUMMA DOUBLE PRECISION DEFAULT 0.0, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, USERNAME VARCHAR(20), OURORGNID INTEGER NOT NULL, CSDTKTHBID INTEGER NOT NULL, ORGNINFOID INTEGER NOT NULL ); CREATE TABLE CSDTKTHB ( ID INTEGER NOT NULL, NAME VARCHAR(255) ); CREATE TABLE CTLGDISTR ( ITEM_ID INTEGER NOT NULL, DISTR_CLIENT VARCHAR(255) NOT NULL COLLATE PXW_CYRL, PERSONAL_ID INTEGER, ORGN_ID INTEGER, DISTR_DATE TIMESTAMP, DISTR_PERIOD INTEGER, DISTR_RETURN TIMESTAMP, DISTR_INFO VARCHAR(255) COLLATE PXW_CYRL ); CREATE TABLE CTLGENTITY ( ENTITY_ID INTEGER NOT NULL, ENTITY_NAME VARCHAR(250) NOT NULL, ENTITY_POSITION INTEGER, ENTITY_AUTHOR VARCHAR(120), ITEM_ID INTEGER NOT NULL, KIND_ID INTEGER, ENTITY_INFO BLOB SUB_TYPE 1 SEGMENT SIZE 4096 ); CREATE TABLE CTLGGOODS ( GOODS_ID INTEGER NOT NULL ); CREATE TABLE CTLGITEM ( ITEM_ID INTEGER NOT NULL, ITEM_NUMBER INTEGER NOT NULL, ITEM_DATE TIMESTAMP, ITEM_TYPE INTEGER, GOODS_ID INTEGER NOT NULL, ITEM_INFO VARCHAR(250) COLLATE PXW_CYRL, ITEM_CODE VARCHAR(30) COLLATE PXW_CYRL ); CREATE TABLE CTLGKIND ( KIND_ID INTEGER NOT NULL, KIND_NAME VARCHAR(120) NOT NULL COLLATE PXW_CYRL ); CREATE TABLE CTLGLINK ( ENTITY_ID INTEGER NOT NULL, THEME_ID INTEGER NOT NULL ); CREATE TABLE CTLGTHEME ( THEME_ID INTEGER NOT NULL, THEME_NAME VARCHAR(150) COLLATE PXW_CYRL, THEME_OWNER INTEGER ); CREATE TABLE CURRDATA ( ID INTEGER NOT NULL, TYP INTEGER NOT NULL, DAT_ TIMESTAMP NOT NULL, NBANK DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE CURRSTOR ( ID INTEGER NOT NULL, DAYID INTEGER NOT NULL, ACCNID INTEGER, DAT_ TIMESTAMP DEFAULT Current_Date, TYP INTEGER DEFAULT 0, CURRTYP INTEGER, ORGNID INTEGER, CSUMMA DOUBLE PRECISION DEFAULT 0.0, CURS DOUBLE PRECISION DEFAULT 0.0, SUMMA DOUBLE PRECISION DEFAULT 0.0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE CURRSTORDAYS ( ID INTEGER NOT NULL, ACCNID INTEGER NOT NULL, DAT_ TIMESTAMP DEFAULT Current_Date NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0, CURS DOUBLE PRECISION DEFAULT 0.0, SUMM DOUBLE PRECISION DEFAULT 0.0, SUMMA DOUBLE PRECISION DEFAULT 0.0, OPERID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE CURRSTORDAYSACCR ( ID INTEGER NOT NULL, DAYID INTEGER NOT NULL, ACCNID INTEGER NOT NULL ); CREATE TABLE CURRSTORDTKT ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP DEFAULT Current_Date, CURRTYP INTEGER NOT NULL, CURS DOUBLE PRECISION DEFAULT 0.0, NAMEID INTEGER NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0, CSUMM DOUBLE PRECISION DEFAULT 0.0, DOCTYP INTEGER, DOCID INTEGER, CSID INTEGER, CSMID INTEGER, EDATE TIMESTAMP NOT NULL, ORGNINFOID INTEGER, CSDTKTHBID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE CURRTYP ( ID INTEGER NOT NULL, NAME VARCHAR(255), COD VARCHAR(10), CODE VARCHAR(10), FMT VARCHAR(10), C1 VARCHAR(30), C2 VARCHAR(30), C5 VARCHAR(30), CK1 VARCHAR(30), CK2 VARCHAR(30), CK5 VARCHAR(30), MFK INTEGER, MF INTEGER, IKOP INTEGER, SYS_FLAG INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DGDTACCN ( ID INTEGER NOT NULL, DGVKEY INTEGER, ACCNKEY INTEGER ); CREATE TABLE DGDUACCN ( ID INTEGER NOT NULL, DGVKEY INTEGER, ACCNKEY INTEGER ); CREATE TABLE DGKTACCN ( ID INTEGER NOT NULL, DGVKEY INTEGER, ACCNKEY INTEGER ); CREATE TABLE DGKUACCN ( ID INTEGER NOT NULL, DGVKEY INTEGER NOT NULL, ACCNKEY INTEGER NOT NULL ); CREATE TABLE DGVDT ( ID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR VARCHAR(32), SALEDATE TIMESTAMP, OUT_DATE TIMESTAMP, REALDATE TIMESTAMP, SALESUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, STOR INTEGER, TYP INTEGER, SUBTYP INTEGER, REALTYP INTEGER DEFAULT 0, PROCNDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, MANAGER INTEGER, NDSTYP INTEGER DEFAULT 1, DGVKEY INTEGER, NAMEID INTEGER, CLOSED INTEGER, STORID INTEGER, PRSNID INTEGER, UDATE TIMESTAMP, COMMENT VARCHAR(255), PODRID INTEGER, OPERID INTEGER, SALEFORM VARCHAR(255), SALECOND VARCHAR(255), RNBR VARCHAR(32), NNBR VARCHAR(32), NDATE TIMESTAMP, DNBR VARCHAR(32), DDATE TIMESTAMP, DLASTDATE TIMESTAMP, DPRSN VARCHAR(255), DDOC VARCHAR(255), SUBSCRIBE INTEGER, CURRTYP INTEGER, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SCSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SNAMEID INTEGER, CURS DOUBLE PRECISION DEFAULT 1.0 NOT NULL, OURACCNID INTEGER, ACCNORGID INTEGER, ZID INTEGER, DCRDNBR VARCHAR(32), SALEKTID INTEGER, STOROUT INTEGER DEFAULT 0, STORMOD INTEGER DEFAULT 0, STORSUB SMALLINT DEFAULT 0, ORGNINFOID INTEGER, TRDPID INTEGER, CSDTKTHBID INTEGER, MDOCSOURCE_ID INTEGER, SZID INTEGER, OBJID INTEGER, VL1 INTEGER, VL2 INTEGER, SKIDKATYP INTEGER DEFAULT 0, SKIDKAPROC DOUBLE PRECISION DEFAULT 0.0, SKIDKASUMMA DOUBLE PRECISION DEFAULT 0.0, SC_REMO SMALLINT, MARK INTEGER DEFAULT 0 NOT NULL, KUSERID INTEGER, KLASTEDIT TIMESTAMP, STATE INTEGER DEFAULT 0, TRANSFER VARCHAR(255), CODE VARCHAR(32), TRANSORGNID INTEGER, TRANSDOCNBR VARCHAR(255), DRDOCNBR VARCHAR(255), TRANSSUMMA DOUBLE PRECISION, DRIVER_NAME VARCHAR(255), VEHICLE_NAME VARCHAR(80), VEHICLE1_NAME VARCHAR(80), VEHICLE2_NAME VARCHAR(80), VEHICLE_NBR VARCHAR(40), VEHICLE1_NBR VARCHAR(40), VEHICLE2_NBR VARCHAR(40), EGRNN SMALLINT, ROUNDNDS SMALLINT, KNNNBR VARCHAR(32), KNNDATE TIMESTAMP, KEGRNN SMALLINT, BONUSPROC DOUBLE PRECISION, NO_LASTEDIT SMALLINT DEFAULT 0, NO_VALID SMALLINT DEFAULT 0, EMAIL_STATE SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE DGVDT_TASK ( ID INTEGER NOT NULL, DGVDTID INTEGER NOT NULL, TASKID INTEGER NOT NULL ); CREATE TABLE DGVDTKT_LOG ( ID INTEGER NOT NULL, DGVTYP SMALLINT DEFAULT 0 NOT NULL, GDDKTID INTEGER, GDDDTID INTEGER, RNUMB DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE DGVDTU ( ID INTEGER NOT NULL, DGVID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR DMN_NBR, BSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SALESUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SCSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CURRTYP INTEGER, CURS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NAMEID INTEGER NOT NULL, SALEDATE TIMESTAMP, COMMENT VARCHAR(255), PRSNID INTEGER, OPERID INTEGER, OUT_DATE TIMESTAMP, BDATE TIMESTAMP, EDATE TIMESTAMP, NNBR DMN_NBR, NDATE TIMESTAMP, ANBR DMN_NBR, SALEFORM VARCHAR(255), SALECOND VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 1 SEGMENT SIZE 80, CSDTKTHBID INTEGER, ORGNINFOID INTEGER, OBJID INTEGER, VL1 INTEGER, VL2 INTEGER, MANAGER INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, CODE VARCHAR(20), NO_LASTEDIT SMALLINT DEFAULT 0 ); CREATE TABLE DGVDTUD ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, ORGNID INTEGER NOT NULL, BDATE TIMESTAMP, EDATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, GRPID INTEGER ); CREATE TABLE DGVDUGRP ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, NAME VARCHAR(255), PARENTID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DGVKT ( ID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR VARCHAR(32), SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, STOR INTEGER, TYP INTEGER, NBRC VARCHAR(32), DAT_C TIMESTAMP, CURRTYP INTEGER, TRNS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DGVKEY INTEGER, NAMEID INTEGER, STORID INTEGER, TAMP DOUBLE PRECISION DEFAULT 0.0 NOT NULL, COMMENT VARCHAR(255), SALESUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SALEDATE TIMESTAMP, PRSNID INTEGER, OPERID INTEGER, PODRID INTEGER, SALEDTID INTEGER, TAMS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TAMSG DOUBLE PRECISION DEFAULT 0.0, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SCSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TNDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TRNG DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CURS DOUBLE PRECISION DEFAULT 1.0 NOT NULL, TRNGTYP INTEGER, TPRICETYP INTEGER DEFAULT 0, ZID INTEGER, TORGNID INTEGER, NDATE TIMESTAMP, NNBR VARCHAR(32), STOROUT INTEGER DEFAULT 0, STORMOD INTEGER DEFAULT 0, STORSUB SMALLINT DEFAULT 0, ORGNINFOID INTEGER, CSDTKTHBID INTEGER, MARK INTEGER DEFAULT 0 NOT NULL, OBJID INTEGER, VL1 INTEGER, VL2 INTEGER, CALCNDS INTEGER DEFAULT 1 NOT NULL, PROCNDS DOUBLE PRECISION, SKIDKATYP INTEGER DEFAULT 0 NOT NULL, SKIDKASUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SKIDKAPROC DOUBLE PRECISION DEFAULT 0.0 NOT NULL, KUSERID INTEGER, KLASTEDIT TIMESTAMP, CODE VARCHAR(32), NO_LASTEDIT SMALLINT DEFAULT 0, NO_VALID SMALLINT DEFAULT 0, V_DGVDTID INTEGER, V_DGVKTID INTEGER, ZPOSNO INTEGER, TRANSFER VARCHAR(255), EMAIL_STATE SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DGVKTU ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NAMEID INTEGER NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, COMMENT VARCHAR(255), SALEDATE TIMESTAMP, SALESUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, IN_DATE TIMESTAMP, NBR DMN_NBR, OPERID INTEGER, PRSNID INTEGER, CTYP INTEGER DEFAULT 0 NOT NULL, SERVID INTEGER, CURS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CURRTYP INTEGER, SCSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, STORID INTEGER, NDATE TIMESTAMP, NNBR DMN_NBR, ORGNINFOID INTEGER, CSDTKTHBID INTEGER, OBJID INTEGER, VL1 INTEGER, VL2 INTEGER, CALCNDS SMALLINT DEFAULT 1, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, CODE VARCHAR(20), NO_LASTEDIT SMALLINT DEFAULT 0 ); CREATE TABLE DGVKTU_DGVDT_REF ( ID INTEGER NOT NULL, DGVKTUID INTEGER NOT NULL, DGVDTID INTEGER, DGVKTID INTEGER ); CREATE TABLE DGVSUM ( ID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, SUMMA DOUBLE PRECISION, SUMM DOUBLE PRECISION, NAME VARCHAR(40) ); CREATE TABLE DGVWK ( ID INTEGER NOT NULL, MSTGDSID INTEGER, STOR INTEGER, STORID INTEGER, DGVDTID INTEGER, DGVKTID INTEGER, OPERID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, COMMENT VARCHAR(255), INP_DATE TIMESTAMP, OUT_DATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DGVWKG ( ID INTEGER NOT NULL, MSTGDSID INTEGER, STOR INTEGER, STORID INTEGER, DGVDTID INTEGER, DGVKTID INTEGER, OPERID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, COMMENT VARCHAR(255), INP_DATE TIMESTAMP, OUT_DATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DK_ACCESSCOMMAND ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DK_ACCESSCOMMANDUSERREF ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, ACCESSID INTEGER NOT NULL, COMMANDID INTEGER NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DK_ACCESSDATA ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DK_ACCESSDATAUSERREF ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, ACCESSID INTEGER NOT NULL, DATAID INTEGER NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DK_BNS ( ID INTEGER NOT NULL, NAME VARCHAR(20) NOT NULL, VAL INTEGER NOT NULL, CURRTYPID INTEGER, "TYPE" SMALLINT DEFAULT 0 NOT NULL, EXTERNALID INTEGER ); CREATE TABLE DK_BNS_ORGN ( ID INTEGER NOT NULL, DK_BNS_ID INTEGER NOT NULL, ORGN_ID INTEGER NOT NULL, CNT DOUBLE PRECISION NOT NULL ); CREATE TABLE DK_BNS_ORGN_LOG ( ID INTEGER NOT NULL, DK_BNS_ORGN_ID INTEGER NOT NULL, SZID INTEGER, VAL DOUBLE PRECISION NOT NULL, USERNAME VARCHAR(20) NOT NULL, LASTEDIT TIMESTAMP NOT NULL, COMMENT VARCHAR(255) ); CREATE TABLE DK_BNS_PRICEGOODS ( ID INTEGER NOT NULL, DK_BNS_ID INTEGER NOT NULL, PRICEGOODS_ID INTEGER NOT NULL, TYP SMALLINT NOT NULL, BNS_CNT DOUBLE PRECISION NOT NULL, PRICEGOODS_CNT DOUBLE PRECISION NOT NULL, ENDTIME TIMESTAMP, BEGINTIME TIMESTAMP ); CREATE TABLE DK_BONUSACCRUAL ( ID INTEGER NOT NULL, BONUSID INTEGER NOT NULL, VAL DOUBLE PRECISION NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, CREATED TIMESTAMP DEFAULT Current_TimeStamp, DAT TIMESTAMP DEFAULT Current_TimeStamp NOT NULL, ORGANID INTEGER NOT NULL, ORDERID INTEGER ); CREATE TABLE DK_COMMAND ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp, DISCRIPTION VARCHAR(255) ); CREATE TABLE DK_DATA ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp, DISCRIPTION VARCHAR(255) ); CREATE TABLE DK_DISCOUNTBONUSSETGOODS ( ID INTEGER NOT NULL, DISCOUNTBONUSSETID INTEGER NOT NULL, GOODSGROUPID INTEGER, GOODSCATEGORYID INTEGER, GOODSSETID INTEGER, GOODSID INTEGER, PRICELISTID INTEGER ); CREATE TABLE DK_DISCOUNTBONUSSETORGN ( ID INTEGER NOT NULL, DISCOUNTBONUSSETID INTEGER NOT NULL, ORGANIZATIONGROUPID INTEGER, ORGANIZATIONID INTEGER ); CREATE TABLE DK_DISCOUNTBONUSSETS ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, DAYSOFWEEK VARCHAR(7), PERIODBEGIN TIMESTAMP, PERIODEND TIMESTAMP, FROMTIME TIME, TOTIME TIME, GOAL BLOB SUB_TYPE 1 SEGMENT SIZE 4096, "TYPE" SMALLINT DEFAULT 0 NOT NULL, VAL DOUBLE PRECISION NOT NULL, STATE SMALLINT DEFAULT 1 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, QUANTITY DOUBLE PRECISION, PARENTID INTEGER, ISMARKUP SMALLINT DEFAULT 0 NOT NULL, ISBONUSACCRUALALLOWED SMALLINT DEFAULT 0 NOT NULL, ORDERMINSUM DOUBLE PRECISION, ORDERMAXSUM DOUBLE PRECISION ); CREATE TABLE DK_DISCOUNTBONUSSETSTORGRP ( ID INTEGER NOT NULL, DISCOUNTBONUSSETID INTEGER NOT NULL, STOREGROUPID INTEGER NOT NULL ); CREATE TABLE DK_DSCNT ( ID INTEGER NOT NULL, NAME VARCHAR(40) NOT NULL, VAL DOUBLE PRECISION NOT NULL, TYP SMALLINT DEFAULT 0 NOT NULL, GDS_CTGR_FROM_ID INTEGER, GDS_CNT DOUBLE PRECISION, GDS_CTGR_TO_ID SMALLINT ); CREATE TABLE DK_GIFTCERTIFICATE ( ID INTEGER NOT NULL, GDSID INTEGER NOT NULL, SZID INTEGER, TYP SMALLINT DEFAULT 0 NOT NULL, BARCODE VARCHAR(20) NOT NULL, PRICE DOUBLE PRECISION NOT NULL, MONTHWORK INTEGER default 6, SALEDATE TIMESTAMP default current_date, VALIDITY TIMESTAMP ); CREATE TABLE DK_GODGODPAMLANREF ( ID INTEGER NOT NULL, GOODPARAMID INTEGER NOT NULL, GOODID INTEGER NOT NULL, LANGUAGEID INTEGER NOT NULL, STRVAL VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP default current_timestamp, CREATED TIMESTAMP default current_timestamp ); CREATE TABLE DK_GODPAMLANREF ( ID INTEGER NOT NULL, GOODPARAMID INTEGER NOT NULL, LANGUAGEID INTEGER NOT NULL, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP default current_timestamp, CREATED TIMESTAMP default current_timestamp ); CREATE TABLE DK_GODPAMVALLANREF ( ID INTEGER NOT NULL, GOODPARAMVALID INTEGER NOT NULL, LANGUAGEID INTEGER NOT NULL, STRVAL VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP default current_timestamp, CREATED TIMESTAMP default current_timestamp ); CREATE TABLE DK_GOODSLANGUAGEREF ( ID INTEGER NOT NULL, GOODSID INTEGER NOT NULL, LANGUAGEID INTEGER NOT NULL, NAME VARCHAR(40), FULLNAME VARCHAR(255), INFO BLOB SUB_TYPE 1 SEGMENT SIZE 80, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP default current_timestamp, CREATED TIMESTAMP default current_timestamp ); CREATE TABLE DK_GOODSPACK ( ID INTEGER NOT NULL, GDSID INTEGER NOT NULL, COD VARCHAR(20) DEFAULT '', NAME VARCHAR(40) NOT NULL, QNT DOUBLE PRECISION NOT NULL, BARCODE VARCHAR(20) NOT NULL, DESCRIPTION VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DK_LANGUAGE ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, CULTURE VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP default current_timestamp, CREATED TIMESTAMP default current_timestamp ); CREATE TABLE DK_MAILINGTHEMES ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DK_MAILINGTYPES ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DK_MAILTHEMETYPESORGNREF ( ID INTEGER NOT NULL, ORGNID INTEGER NOT NULL, THEMEID INTEGER NOT NULL, SUBSCRIPTION SMALLINT default 1 NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp, TYPEID INTEGER NOT NULL, LASTSEND TIMESTAMP ); CREATE TABLE DK_MAILTYPEORGNREF ( ID INTEGER NOT NULL, ORGNID INTEGER NOT NULL, TYPEID INTEGER NOT NULL, SUBSCRIPTION SMALLINT default 1 NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DK_PENALPROITY ( ID INTEGER NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp, BEGINTIME TIMESTAMP NOT NULL, ENDTIME TIMESTAMP, PERSONALID INTEGER, STOREGROUPID INTEGER ); CREATE TABLE DK_PRSNGRP ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DK_PRSNGRPREF ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, PRSNGRPID INTEGER NOT NULL, USERNAME VARCHAR(20), CREATED TIMESTAMP default current_timestamp, LASTEDIT TIMESTAMP default current_timestamp ); CREATE TABLE DKBILL ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, DAT_ TIMESTAMP, STOR INTEGER NOT NULL, STORINPID INTEGER, CNTSUM INTEGER DEFAULT 0 NOT NULL, CRDCNTBEG INTEGER DEFAULT 0 NOT NULL, CRDCNTINP INTEGER DEFAULT 0 NOT NULL, CRDCNTRET INTEGER DEFAULT 0 NOT NULL, CRDCNTOUT INTEGER DEFAULT 0 NOT NULL, CRDCNTEND INTEGER DEFAULT 0 NOT NULL, DGVDTINTRID INTEGER, DGVDTREALID INTEGER, DGVDT_TMCID INTEGER, ORGNID INTEGER, OPERINTRID INTEGER, OPERREALID INTEGER, OPER_TMCID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DKBILLCOUNT ( ID INTEGER NOT NULL, BILLID INTEGER NOT NULL, CNTNAME VARCHAR(20), CNTBEG INTEGER DEFAULT 0 NOT NULL, CNTEND INTEGER DEFAULT 0 NOT NULL, CNT INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE DKBILLGDS ( ID INTEGER NOT NULL, BILLID INTEGER NOT NULL, GODSID INTEGER NOT NULL, QUANTINP DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT1 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT2 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT3 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT4 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT5 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT6 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT7 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CALC INTEGER DEFAULT 0 NOT NULL, QNTBEG DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QNTEND DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NORMINP DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NORMCALC DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTDECOR DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DKBILLPRSN ( ID INTEGER NOT NULL, BILLID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, WTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE DOCCOMMENT ( ID INTEGER NOT NULL, TYP INTEGER DEFAULT 0 NOT NULL, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DOCMCATEGORY ( ID INTEGER NOT NULL, OURORGNID INTEGER, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, CHECK_ACT INTEGER DEFAULT 0 ); CREATE TABLE DOCMDOCDOCUMENT ( ID INTEGER NOT NULL, OURORGNID INTEGER, FOLDERID INTEGER, NAME VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 0 SEGMENT SIZE 80, COMMENT VARCHAR(255), DAT_ TIMESTAMP, NBR VARCHAR(32), ORGNID INTEGER, STATE INTEGER, BODY BLOB SUB_TYPE 0 SEGMENT SIZE 80, FILESIZE INTEGER DEFAULT 0 NOT NULL, PACKSIZE INTEGER DEFAULT 0 NOT NULL, PACKTYPE INTEGER DEFAULT 0 NOT NULL, FILECREATE TIMESTAMP DEFAULT Current_TimeStamp, FILEMODIFY TIMESTAMP, CREUSERID INTEGER NOT NULL, MODUSERID INTEGER, FILENAME VARCHAR(255), FILETYPE VARCHAR(255), ORIGINFILENAME BLOB SUB_TYPE 0 SEGMENT SIZE 80, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, PARENTID INTEGER ); CREATE TABLE DOCMDOCFOLDER ( ID INTEGER NOT NULL, OURORGNID INTEGER, PARENTID INTEGER, NAME VARCHAR(255), SYSTEM_FLAG INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DOCMGROUPS ( ID INTEGER NOT NULL, OURORGNID INTEGER, NAME VARCHAR(255), PARENTID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, CHECK_ACT INTEGER DEFAULT 0 ); CREATE TABLE DOCMMSG ( ID INTEGER NOT NULL, SUBJECT VARCHAR(255), BODY BLOB SUB_TYPE 0 SEGMENT SIZE 80, SENDADDR VARCHAR(255), SENDNAME VARCHAR(255), SENDUSERID INTEGER, SENDDATETIME TIMESTAMP DEFAULT Current_TimeStamp, TASKID INTEGER, RECVCOUNT INTEGER DEFAULT 0, ATYPE INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE DOCMMSGFOLDER ( ID INTEGER NOT NULL, PARENTID INTEGER, NAME VARCHAR(255), USERID INTEGER, SYSTEM_FLAG INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE DOCMMSGRUSERS ( ID INTEGER NOT NULL, FOLDERID INTEGER, MSGID INTEGER, PARENTID INTEGER, RUSERID INTEGER, SENDDATETIME TIMESTAMP DEFAULT Current_TimeStamp, RECVDATETIME TIMESTAMP, READDATETIME TIMESTAMP, RECVADDR VARCHAR(255), RECVNAME VARCHAR(255) ); CREATE TABLE DOCMTASK ( ID INTEGER NOT NULL, TYP SMALLINT, OURORGNID INTEGER, GRPID INTEGER, TASKID INTEGER, SUBJECT VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 1 SEGMENT SIZE 80, PRIORITY INTEGER DEFAULT 0, STATE INTEGER DEFAULT 0 NOT NULL, IUSERID INTEGER, IPRSNID INTEGER, MUSERID INTEGER, BDATE TIMESTAMP, SDATE TIMESTAMP, EDATE TIMESTAMP, WTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, FPROC DOUBLE PRECISION DEFAULT 0.0 NOT NULL, BFDATE TIMESTAMP, EFDATE TIMESTAMP, EFEDATE TIMESTAMP, EFMDATE TIMESTAMP, EFMEDITDATE TIMESTAMP, FTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PPRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PUNITS INTEGER DEFAULT 0, PSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TASKCOLOR INTEGER, COMMENT VARCHAR(255), ORGNID INTEGER, CONTACTID INTEGER, OBJID INTEGER, ORGNINFOID INTEGER, IS_ACCEPTED INTEGER DEFAULT 0 NOT NULL, GROU_ INTEGER DEFAULT 0 NOT NULL, SOURCE_TYPE INTEGER DEFAULT 0, MUSER_CLOSE SMALLINT, PSUMCOSTS DOUBLE PRECISION, CYCLE INTEGER DEFAULT 0, CYCLEID INTEGER DEFAULT 0, RESULT_OK VARCHAR(255), RESULT_REFUSED VARCHAR(255), SENDORGNID INTEGER, TRANSORGNID INTEGER, SALEORGNID INTEGER, RECEIVER VARCHAR(255), TRANSTPOINTID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, CITYID INTEGER, FORCE_SALE SMALLINT, DOCSINCL SMALLINT ); CREATE TABLE DOCMTASKATTACH ( ID INTEGER NOT NULL, NAME VARCHAR(255), ATTACHBODY BLOB SUB_TYPE 0 SEGMENT SIZE 80, TASKID INTEGER, ATTACHSIZE INTEGER DEFAULT 0, USERID INTEGER, ADATE TIMESTAMP DEFAULT Current_TimeStamp, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DOCMTASKCATEGORY ( ID INTEGER NOT NULL, TASKID INTEGER NOT NULL, CATEGORYID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DOCMTASKCYCLE ( ID INTEGER NOT NULL, STAGE INTEGER DEFAULT 0, STAGEWEEKREPEAT INTEGER DEFAULT 1, SDATE TIMESTAMP, EDATE TIMESTAMP, REPEAT INTEGER DEFAULT 0, STAGEOVER INTEGER DEFAULT 0, GENTASK INTEGER DEFAULT 0, TASKSTAGE INTEGER DEFAULT 0, CR_DATE TIMESTAMP, CYCLE_ACT INTEGER DEFAULT 0 ); CREATE TABLE DOCMTASKFINANCE ( ID INTEGER NOT NULL, TASKID INTEGER NOT NULL, DAT_ TIMESTAMP DEFAULT 'TODAY', SUMMA DOUBLE PRECISION DEFAULT 0.0, ORGNID INTEGER, USERID INTEGER, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DOCMTASKHB ( ID INTEGER NOT NULL, GRPID INTEGER, TASKID INTEGER, SUBJECT VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 0 SEGMENT SIZE 80, MUSERID INTEGER, PRIORITY INTEGER DEFAULT 1, TASKCOLOR INTEGER, COMMENT VARCHAR(255), WTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, PTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PPRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PUNITS INTEGER DEFAULT 0 NOT NULL, PSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE DOCMTASKHBCATEGORY ( ID INTEGER NOT NULL, TASKID INTEGER NOT NULL, CATEGORYID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE DOCMTASKSTAGE ( ID INTEGER NOT NULL, TASKID INTEGER NOT NULL, NAME VARCHAR(255), IUSERID INTEGER NOT NULL, RUSERID INTEGER NOT NULL, SENDDATETIME TIMESTAMP DEFAULT Current_TimeStamp, READDATETIME TIMESTAMP, CLOSEDATETIME TIMESTAMP, COMMITDATETIME TIMESTAMP, ICOMMENT BLOB SUB_TYPE 0 SEGMENT SIZE 80, RCOMMENT BLOB SUB_TYPE 0 SEGMENT SIZE 80, STAGEREAD INTEGER DEFAULT 0 NOT NULL, STAGECLOSE INTEGER DEFAULT 0 NOT NULL, STAGEABORT INTEGER DEFAULT 0 NOT NULL, STAGECOMMIT INTEGER DEFAULT 0 NOT NULL, IPRIORITY INTEGER DEFAULT 0 NOT NULL, RPRIORITY INTEGER DEFAULT 0 NOT NULL, WTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE DOCMTASKWORK ( ID INTEGER NOT NULL, TASKID INTEGER NOT NULL, EUSERID INTEGER, BDATETIME TIMESTAMP, EDATETIME TIMESTAMP, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ECRGOODS ( ID INTEGER NOT NULL, GODSID INTEGER NOT NULL, ECCRID INTEGER, NAME1 VARCHAR(255), NAME2 VARCHAR(255), TYPQNT INTEGER DEFAULT 0 NOT NULL, PROCNDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE EDUCATION ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, FACULTY VARCHAR(255), BDATE TIMESTAMP, EDATE TIMESTAMP, SPECIALITY VARCHAR(255), QUALIFICATION VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, AVERAGEGRADE DOUBLE PRECISION, NAME VARCHAR(255) ); CREATE TABLE FRREPORT ( ID INTEGER NOT NULL, PARENTID INTEGER, FOLDER SMALLINT, NAME VARCHAR(255), TEMPLATE BLOB SUB_TYPE 0 SEGMENT SIZE 80, TYP INTEGER, FRVER SMALLINT, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE FRREPORTTREE ( ID INTEGER NOT NULL, PARENTID INTEGER, TEMPLATE BLOB SUB_TYPE 0 SEGMENT SIZE 80, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE FRREPORTTREEUSER ( ID INTEGER NOT NULL, OURORGNID INTEGER, FRRPID INTEGER NOT NULL, USERID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE FUNCMANAGE ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(40), GROU_ INTEGER NOT NULL, OWNER INTEGER ); CREATE TABLE FUNCSUPPORT ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(40), GROU_ INTEGER NOT NULL, OWNER INTEGER ); CREATE TABLE GDDDT ( ID INTEGER NOT NULL, GDSKEY INTEGER, DGVKEY INTEGER, GDDKEY INTEGER, GDDID INTEGER, ZID INTEGER, ZKID INTEGER, SZGDSID INTEGER, PRICEID INTEGER, PRICE DOUBLE PRECISION DEFAULT 0.0, NDS DOUBLE PRECISION DEFAULT 0.0, PRICEN DOUBLE PRECISION DEFAULT 0.0, TPRICE DOUBLE PRECISION DEFAULT 0.0, QUANT DOUBLE PRECISION DEFAULT 0.0, SOURCE DOUBLE PRECISION DEFAULT 0.0, QNT_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PPRICE DOUBLE PRECISION DEFAULT 0.0, LOSS DOUBLE PRECISION DEFAULT 0.0, PRPROC DOUBLE PRECISION DEFAULT 0.0, SPRICE DOUBLE PRECISION, SNDS DOUBLE PRECISION, SNPRICE DOUBLE PRECISION, REMZAPID INTEGER ); CREATE TABLE GDDDTDDU ( ID INTEGER NOT NULL, DGVKEY INTEGER NOT NULL, NAMEID INTEGER NOT NULL, QUANT DOUBLE PRECISION, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, TPRICE DOUBLE PRECISION ); CREATE TABLE GDDDTPARAM ( ID INTEGER NOT NULL, GDDID INTEGER NOT NULL, SC_CARDT_ID INTEGER, SNBR VARCHAR(32), ZNBR VARCHAR(32), COMMENT VARCHAR(255), GUARANTEE VARCHAR(255), DAT_GUARANT VARCHAR(40) ); CREATE TABLE GDDDTU ( ID INTEGER NOT NULL, DGVKEY INTEGER NOT NULL, SERVUID INTEGER NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CPRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE GDDDTUNL ( ID INTEGER NOT NULL, DGVID INTEGER, DTNLID INTEGER, PRIORITY INTEGER, PROC DOUBLE PRECISION ); CREATE TABLE WORKREQUEST ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, SZID INTEGER, PRSNID INTEGER, OBJID INTEGER, DAT_ TIMESTAMP DEFAULT Current_date, PDATE TIMESTAMP, NBR DMN_NBR, COMMENT VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 0 SEGMENT SIZE 80, CLOSED SMALLINT DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE WORKREQUESTGDS ( ID INTEGER NOT NULL, WRID INTEGER NOT NULL, GODSID INTEGER NOT NULL, WMID INTEGER, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QNT_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, WQUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, WQNT_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DESCRIPTION BLOB SUB_TYPE 0 SEGMENT SIZE 80, OBJID INTEGER ); CREATE TABLE GDDKT ( ID INTEGER NOT NULL, DGVKEY INTEGER, GDSKEY INTEGER, GDDKTID INTEGER, GDDKEY INTEGER, ZID INTEGER, ZMID INTEGER, WRGDSID INTEGER, VENDORNAMEID INTEGER, SPRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SNDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TPRICE DOUBLE PRECISION DEFAULT 0.0, TNDS DOUBLE PRECISION DEFAULT 0.0, KPRICE DOUBLE PRECISION DEFAULT 0.0, KNDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PRICE DOUBLE PRECISION DEFAULT 0.0, PRICENS DOUBLE PRECISION DEFAULT 0.0, NDS DOUBLE PRECISION DEFAULT 0.0, AKCIZ DOUBLE PRECISION DEFAULT 0.0, SOURCE DOUBLE PRECISION DEFAULT 0.0, QUANT DOUBLE PRECISION DEFAULT 0.0, SKIDKAPROC DOUBLE PRECISION DEFAULT 0.0, AKCIZPROC DOUBLE PRECISION DEFAULT 0.0, NDSPROC DOUBLE PRECISION DEFAULT 0.0, TAMP DOUBLE PRECISION DEFAULT 0.0, NW DOUBLE PRECISION DEFAULT 0.0, GW DOUBLE PRECISION DEFAULT 0.0, ZNBR DMN_NBR, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SRC_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QNT_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DATEREAL TIMESTAMP, DATE_REG TIMESTAMP, SERTNBR VARCHAR(255), BARCODE VARCHAR(20), TGRPCODE VARCHAR(20), SZID COMPUTED BY ((select WR.SZID from WorkRequestGds wg, WorkRequest wr where (GddKt.WrGdsID is not Null) and wg.ID = GddKt.WrGdsID and Wr.ID = wg.WrID)), POSNO INTEGER, GTDDATE TIMESTAMP, GTDNBR DMN_NBR, IMP SMALLINT DEFAULT 0 ); CREATE TABLE GDDKTDDU ( ID INTEGER NOT NULL, DGVKEY INTEGER NOT NULL, UID INTEGER NOT NULL, ORGNID INTEGER, TYP INTEGER DEFAULT 0, QUANT DOUBLE PRECISION DEFAULT 0.0, TPRICE DOUBLE PRECISION DEFAULT 0.0, PRICE DOUBLE PRECISION DEFAULT 0.0, NDS DOUBLE PRECISION DEFAULT 0.0 ); CREATE TABLE GDDKTPARAM ( ID INTEGER NOT NULL, GDDID INTEGER NOT NULL, SC_CARDT_ID INTEGER, SNBR DMN_NBR, ZNBR DMN_NBR, COMMENT VARCHAR(255), GUARANTEE VARCHAR(255), DAT_GUARANT VARCHAR(40) ); CREATE TABLE GDDKTQNT ( ID INTEGER NOT NULL, STOR INTEGER NOT NULL ); CREATE TABLE GDDKTU ( ID INTEGER NOT NULL, DOCID INTEGER NOT NULL, UID INTEGER NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CPRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, OPERID INTEGER ); CREATE TABLE GDDKTZKPARAMS ( ID INTEGER NOT NULL, GDDKTID INTEGER NOT NULL, BDATE TIMESTAMP, EDATE TIMESTAMP, PRSNID INTEGER, COUNT_B INTEGER DEFAULT 0, COUNT_E INTEGER DEFAULT 0, P_LENGTH_ALL INTEGER DEFAULT 0, P_LENGTH_OK INTEGER DEFAULT 0, CLOSED INTEGER DEFAULT 0, COMMENT VARCHAR(255), CREATED TIMESTAMP DEFAULT Current_Timestamp NOT NULL, UPDATED TIMESTAMP DEFAULT Current_timestamp NOT NULL, CUSERID INTEGER, USERID INTEGER, OPERCOUNT INTEGER ); CREATE TABLE GDSKTREQ ( ID INTEGER NOT NULL, OBJID INTEGER, OURORGNID INTEGER, SZID INTEGER, ORGNID INTEGER, PRSNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, PDATE TIMESTAMP, CLOSED SMALLINT DEFAULT 0, COMMENT VARCHAR(255), USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_Timestamp, DESCRIPTION BLOB SUB_TYPE 1 SEGMENT SIZE 80 ); CREATE TABLE GDSKTREQGDS ( ID INTEGER NOT NULL, OBJID INTEGER, GKID INTEGER, GODSID INTEGER, QUANT DOUBLE PRECISION DEFAULT 0.0 ); CREATE TABLE GDSPARAMGDSREF ( ID INTEGER NOT NULL, GOODSID INTEGER NOT NULL, PARAMID INTEGER NOT NULL, FIXVAL INTEGER, INTVAL INTEGER, DBLVAL DOUBLE PRECISION, STRVAL VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE GDSPARAMGRP ( ID INTEGER NOT NULL, PARENTID INTEGER, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE GDSPARAMGRPREF ( ID INTEGER NOT NULL, GROUPID INTEGER NOT NULL, PARAMID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE GDSPARAMPRM ( ID INTEGER NOT NULL, GROUPID INTEGER NOT NULL, COD VARCHAR(20), NAME VARCHAR(255), TYP INTEGER DEFAULT 0 NOT NULL, SIZEX SMALLINT, SIZEY SMALLINT, SIZEZ SMALLINT, STORID INTEGER, LEN INTEGER, OPTIONS INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE GDSPARAMVAL ( ID INTEGER NOT NULL, PARAMID INTEGER NOT NULL, STRVAL VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, BDGTITEM1 INTEGER, BDGTITEM2 INTEGER, INTERESTRATE DOUBLE PRECISION default 0.0 NOT NULL ); CREATE TABLE GOODS ( ID INTEGER NOT NULL, GROU_ INTEGER, NAME VARCHAR(40), CODE VARCHAR(20), FULLNAME VARCHAR(255), OWNER INTEGER, SKIDKA DOUBLE PRECISION, TAMP DOUBLE PRECISION, AKCIZPROC DOUBLE PRECISION, NDSPROC DOUBLE PRECISION, KPRICE DOUBLE PRECISION, DESCRIPTION VARCHAR(255), K1PRICE DOUBLE PRECISION, SUBGROUP INTEGER, NW DOUBLE PRECISION, GW DOUBLE PRECISION, VOL DOUBLE PRECISION, QNT DOUBLE PRECISION, ONE VARCHAR(32), ONEID INTEGER, GROUP1 INTEGER, GROUP2 INTEGER, COD VARCHAR(20), PRICE_INCLUDE INTEGER, PRICE_NOCALC INTEGER DEFAULT 0 NOT NULL, DCRDPROC DOUBLE PRECISION, SQNT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, BARCODE VARCHAR(20), PERIODSTOR DOUBLE PRECISION, PERIOD_UNIT SMALLINT DEFAULT 0, SHORTNAME VARCHAR(20), BASE_PRICE NUMERIC(15,2) DEFAULT 0.0 NOT NULL, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, MATERIALTYP INTEGER DEFAULT 0 NOT NULL, COUNTRYID INTEGER, IMAGE BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGTYP INTEGER DEFAULT 0 NOT NULL, IMGFILENAME VARCHAR(255), MAXTNPROC DOUBLE PRECISION DEFAULT 0.0, CODUKTVED VARCHAR(20), ACQUANT1 DOUBLE PRECISION, ACQUANT2 DOUBLE PRECISION, ACQUANT3 DOUBLE PRECISION, ACQUANT4 DOUBLE PRECISION, ACPRICE1 SMALLINT, ACPRICE2 SMALLINT, ACPRICE3 SMALLINT, ACPRICE4 SMALLINT, ACONE1 SMALLINT, ACONE2 SMALLINT, ACONE3 SMALLINT, ACONE4 SMALLINT, ACPRLS1 INTEGER, ACPRLS2 INTEGER, ACPRLS3 INTEGER, ACPRLS4 INTEGER, IMP SMALLINT DEFAULT 0, ZOOMSCALE DOUBLE PRECISION, AUTOCALC SMALLINT, DECRNORMID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, INFO BLOB SUB_TYPE 1 SEGMENT SIZE 80 ); CREATE TABLE GOODS_DECRNORM ( ID INTEGER NOT NULL, NAME VARCHAR(255), PERIOD1 DOUBLE PRECISION DEFAULT 0.0, NORM1 DOUBLE PRECISION DEFAULT 0.0, CALC1 INTEGER DEFAULT 0, PERIOD2 DOUBLE PRECISION DEFAULT 0.0, NORM2 DOUBLE PRECISION DEFAULT 0.0, CALC2 INTEGER DEFAULT 0, NORM3 DOUBLE PRECISION DEFAULT 0.0, CALC3 INTEGER DEFAULT 0 ); CREATE TABLE GOODSCHK ( ID INTEGER NOT NULL, SR DOUBLE PRECISION, QN DOUBLE PRECISION, QC DOUBLE PRECISION, DGVKEY INTEGER, DGVTYP INTEGER, NBR DMN_NBR, DAT_ TIMESTAMP, GDSKEY INTEGER, NAME VARCHAR(40), CODE VARCHAR(20), EDATE TIMESTAMP, D1 DOUBLE PRECISION, D2 DOUBLE PRECISION, D3 DOUBLE PRECISION, BDATE TIMESTAMP ); CREATE TABLE GOODSGROUPS ( ID INTEGER NOT NULL, PARENTID INTEGER, NAME VARCHAR(255), COD VARCHAR(20), PRICE_INCLUDE INTEGER DEFAULT 1 NOT NULL, PRICE_NOCALC INTEGER DEFAULT 0 NOT NULL, DCRDPROC DOUBLE PRECISION DEFAULT 0.0 NOT NULL, WORKMAINGRP INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, IMAGE BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGTYP INTEGER, ACQUANT1 DOUBLE PRECISION, ACQUANT2 DOUBLE PRECISION, ACQUANT3 DOUBLE PRECISION, ACQUANT4 DOUBLE PRECISION, ACPRICE1 SMALLINT, ACPRICE2 SMALLINT, ACPRICE3 SMALLINT, ACPRICE4 SMALLINT, ACONE1 SMALLINT, ACONE2 SMALLINT, ACONE3 SMALLINT, ACONE4 SMALLINT, ACPRLS1 INTEGER, ACPRLS2 INTEGER, ACPRLS3 INTEGER, ACPRLS4 INTEGER ); CREATE TABLE GOODSGRP ( ID INTEGER NOT NULL, NAME VARCHAR(40), OWNER INTEGER, CHILD INTEGER, CODE VARCHAR(20) ); CREATE TABLE GOODSPRICEPROC ( ID INTEGER NOT NULL, PRICEID INTEGER NOT NULL, GDSGRPID INTEGER NOT NULL, PROC DOUBLE PRECISION ); CREATE TABLE HB_VEHICLE ( ID INTEGER NOT NULL, ORGNID INTEGER NOT NULL, NAME VARCHAR(255), TYP VARCHAR(255), NBR VARCHAR(255), G_NBR VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 1 SEGMENT SIZE 80, USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE HBDTNL ( ID INTEGER NOT NULL, NAME VARCHAR(255), PROC DOUBLE PRECISION, TYP INTEGER, PRIORITY INTEGER ); CREATE TABLE HBGDDDU ( ID INTEGER NOT NULL, NAME VARCHAR(255), ONEID INTEGER, PRICE DOUBLE PRECISION DEFAULT 0.0, KPRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, ECRCODE VARCHAR(40), ECRNAME VARCHAR(255) ); CREATE TABLE HBKTSU ( ID INTEGER NOT NULL, NAME VARCHAR(255), ONE VARCHAR(32), ONEID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE HBONE ( ID INTEGER NOT NULL, NAME VARCHAR(32) DEFAULT '', NAME_EN VARCHAR(32) DEFAULT '', CODE VARCHAR(32) DEFAULT '', CODE_SOEI VARCHAR(32) DEFAULT '', EDUSERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_Timestamp ); CREATE TABLE HBPRSNTEST ( ID INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, DESCRIPTION BLOB SUB_TYPE 1 SEGMENT SIZE 4096, TOTESTED BLOB SUB_TYPE 1 SEGMENT SIZE 4096, ANSWTYPE INTEGER DEFAULT 0 NOT NULL, TESTTIME TIME, AUTOEND SMALLINT DEFAULT 0 NOT NULL, CALCKEY BLOB SUB_TYPE 1 SEGMENT SIZE 4096, USERNAME VARCHAR(20) NOT NULL, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, PLUGFILENAME VARCHAR(255) ); CREATE TABLE HBSERVU ( ID INTEGER NOT NULL, PARENTID INTEGER, COD VARCHAR(20), NAME VARCHAR(40), FULLNAME VARCHAR(255), ONE VARCHAR(32), ONEID INTEGER, PRICE DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE HBSERVUGRP ( ID INTEGER NOT NULL, PARENTID INTEGER, COD VARCHAR(20), NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE INFOSRC ( ID INTEGER NOT NULL, CODE VARCHAR(10), NAME VARCHAR(80), DESCRIPTION VARCHAR(255), USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE INVOPISDATA ( ID INTEGER NOT NULL, OPISID INTEGER NOT NULL, GODSID INTEGER NOT NULL, KID INTEGER, CQUANT DOUBLE PRECISION, RQUANT DOUBLE PRECISION, PRICE DOUBLE PRECISION DEFAULT 0.0, NDS DOUBLE PRECISION DEFAULT 0.0, BARCODE VARCHAR(32) DEFAULT '', HANDMADE SMALLINT DEFAULT 0, TMP SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE INVOPISHEADER ( ID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR DMN_NBR, STORID INTEGER NOT NULL, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, DGVKTID INTEGER, DGVDTID INTEGER ); CREATE TABLE KASSACCR ( ID INTEGER NOT NULL, KASSKEY INTEGER, ACCNKEY INTEGER ); CREATE TABLE KASSAVACCR ( ID INTEGER NOT NULL, AVID INTEGER NOT NULL, ACCNID INTEGER NOT NULL ); CREATE TABLE KASSAVCR ( ID INTEGER NOT NULL, KASSAVID INTEGER NOT NULL, KASSDTID INTEGER NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0.0, CSUMMA DOUBLE PRECISION DEFAULT 0.0, SUMM DOUBLE PRECISION DEFAULT 0.0 ); CREATE TABLE KASSAVDATA ( ID INTEGER NOT NULL, AVID INTEGER NOT NULL, VL1 INTEGER, VL2 INTEGER, OPERID INTEGER, DAT_ TIMESTAMP, COMMENTID INTEGER, COMMENT VARCHAR(255), SUMMA DOUBLE PRECISION DEFAULT 0.0, CALCNDS SMALLINT DEFAULT 0, PROCNDS DOUBLE PRECISION DEFAULT 20.00, NDS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0, NAMEID INTEGER, SALEKTID INTEGER, FORMSTR VARCHAR(255), DGVID INTEGER, CHKNBR DMN_NBR ); CREATE TABLE KASSAVLIST ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, PRSNID INTEGER NOT NULL, BSUMMA DOUBLE PRECISION DEFAULT 0.0, BCSUMMA DOUBLE PRECISION DEFAULT 0.0, SUMMA DOUBLE PRECISION DEFAULT 0.0, CSUMMA DOUBLE PRECISION DEFAULT 0.0, ESUMMA DOUBLE PRECISION DEFAULT 0.0, ECSUMMA DOUBLE PRECISION DEFAULT 0.0, CURS DOUBLE PRECISION DEFAULT 1.0, CURRTYP INTEGER, CURRDATE TIMESTAMP, COMMENT VARCHAR(255), OPERID INTEGER, TYP INTEGER DEFAULT 0, OBJID INTEGER, VL1 INTEGER, VL2 INTEGER, ORGNINFOID INTEGER, KDAYS INTEGER, CSDTKTHBID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, CODE VARCHAR(20) ); CREATE TABLE KASSDATA ( ID INTEGER NOT NULL, OBJID INTEGER, KASSID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, SERIAL VARCHAR(10), SUMMA DOUBLE PRECISION, COMMENT VARCHAR(255), COMMENTID INTEGER, PRSNID INTEGER, ACCN VARCHAR(5), ANID INTEGER, ORGNID INTEGER, OPERID INTEGER, STORKEY INTEGER, SALEKTKEY INTEGER, KASSDATAKEY INTEGER, CNCODE INTEGER, DELETED INTEGER, KASSSALE INTEGER DEFAULT 0 NOT NULL, CURRTYP INTEGER, CURS DOUBLE PRECISION DEFAULT 1.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, BCURS DOUBLE PRECISION DEFAULT 1.0 NOT NULL, SUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TYP INTEGER, PODRID INTEGER, SUBSCRIBE INTEGER DEFAULT 0 NOT NULL, KUSERID INTEGER, VL1 INTEGER, VL2 INTEGER, APPENDIX VARCHAR(1024), CONTACTID INTEGER, AVID INTEGER, EMAIL_STATE SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE KASSDAYS ( ID INTEGER NOT NULL, KASSID INTEGER NOT NULL, DAT_ TIMESTAMP NOT NULL, SUMMA DOUBLE PRECISION, SUMM DOUBLE PRECISION, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE KASSLIST ( ID INTEGER NOT NULL, OURORGNID INTEGER, PRSNID INTEGER, CURRTYP INTEGER, NAME VARCHAR(40), ACCN VARCHAR(5), INTRKASS INTEGER, INTROP INTEGER, OUTKASS INTEGER, OUTOP INTEGER, STORACCN VARCHAR(5), ACCNOPER INTEGER, STOROPER INTEGER, DTOPERID INTEGER, KTOPERID INTEGER, CNAMEI1 VARCHAR(40), CNAMEI2 VARCHAR(40), CNAMEI3 VARCHAR(40), CNAMEI4 VARCHAR(40), CNAMEI5 VARCHAR(40), CNAMEI6 VARCHAR(40), CNAMEI7 VARCHAR(40), CNAMEI8 VARCHAR(40), CNAMEO1 VARCHAR(40), CNAMEO2 VARCHAR(40), CNAMEO3 VARCHAR(40), CNAMEO4 VARCHAR(40), CNAMEO5 VARCHAR(40), CNAMEO6 VARCHAR(40), CNAMEO7 VARCHAR(40), CNAMEO8 VARCHAR(40), "INACTIVE" SMALLINT, AUTONBRID SMALLINT DEFAULT 0, OPTIONS INTEGER DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE LANG ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, NAME VARCHAR(40), KNOWTYPE INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE "LEV" ( ID INTEGER NOT NULL, GROU_ INTEGER, OWNER INTEGER, CODE VARCHAR(20), NAME VARCHAR(40), TYP INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MAINAMCR ( ID INTEGER NOT NULL, MAINKEY INTEGER, ACCNKEY INTEGER ); CREATE TABLE MAINAMMST ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, OPERID INTEGER, PERIOD INTEGER, GRPTYP INTEGER DEFAULT 0 NOT NULL, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MAINAMSLV ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, MAINMEANID INTEGER NOT NULL, GRPID INTEGER, PRICE DOUBLE PRECISION, AMNORM DOUBLE PRECISION, MULT DOUBLE PRECISION, SUMMA DOUBLE PRECISION, TYP INTEGER, M2 INTEGER, LPRICE DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MAINCRCH ( ID INTEGER NOT NULL, ACCNKEY INTEGER, CHNGKEY INTEGER ); CREATE TABLE MAINGRP ( ID INTEGER NOT NULL, NAME VARCHAR(40), AMNORM DOUBLE PRECISION, PERIOD INTEGER, TYP INTEGER, CODE VARCHAR(10), MULT DOUBLE PRECISION, GRPTYP INTEGER DEFAULT 0 NOT NULL, USE_PERIOD INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MAININPAC ( ID INTEGER NOT NULL, MAINKEY INTEGER NOT NULL, ACCNKEY INTEGER NOT NULL ); CREATE TABLE MAINPRICE ( ID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR DMN_NBR, MAINID INTEGER NOT NULL, PRICEOLD DOUBLE PRECISION, PRICENEW DOUBLE PRECISION, COMMENT VARCHAR(255), OPERID INTEGER, SUMMA DOUBLE PRECISION, EXCL0 INTEGER DEFAULT 0, EXCL1 INTEGER DEFAULT 0, DELPART SMALLINT DEFAULT 0, SYSTEM_FLAG SMALLINT, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MAINMEAN ( ID INTEGER NOT NULL, OURORGNID INTEGER, GODSID INTEGER NOT NULL, GDDKEY INTEGER, DAT_ TIMESTAMP, INVNBR DMN_NBR, INP_DATE TIMESTAMP, COD VARCHAR(40), PRICE DOUBLE PRECISION, ACODE VARCHAR(10), ANORM DOUBLE PRECISION, PLACE VARCHAR(40), OWN VARCHAR(40), TYP INTEGER, OUT_DATE TIMESTAMP, OUT_TYP INTEGER, PRICEO DOUBLE PRECISION, AMDATE TIMESTAMP, PODRID INTEGER, GROUPID INTEGER, GROUPID1 INTEGER, INBR DMN_NBR, INOPERID INTEGER, ZNBR DMN_NBR, ONBR DMN_NBR, RPRICE DOUBLE PRECISION, OUTCOMMENT VARCHAR(255), AMCLOSED INTEGER DEFAULT 0, AMCLOSED1 INTEGER DEFAULT 0 NOT NULL, ASUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, ASUMMA1 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTGL DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTSL DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTPL DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTPD DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTRU DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTIR DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTRH DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANTOS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PRICEO0 COMPUTED BY (MainMean.Price + CoalEsce ((Select Sum(P.Summa) from MainPrice P where P.MainID = MainMean.ID and (P.Excl0 = 0 or P.Excl0 is Null)), 0.0)), PRICEO1 COMPUTED BY (MainMean.Price + CoalEsce ((Select Sum(P.Summa) from MainPrice P where P.MainID = MainMean.ID and (P.Excl1 = 0 or P.Excl1 is Null)), 0.0)), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, USE_PERIOD INTEGER, LPRICE DOUBLE PRECISION ); CREATE TABLE MAINMEANSLV ( ID INTEGER NOT NULL, MMID INTEGER NOT NULL, GODSID INTEGER NOT NULL, PRICE DOUBLE PRECISION DEFAULT 0.0, QUANT DOUBLE PRECISION DEFAULT 0.0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, BDATE TIMESTAMP, EDATE TIMESTAMP ); CREATE TABLE MAINMOVE ( ID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR DMN_NBR, MAINID INTEGER NOT NULL, PODRSRC INTEGER, PODRDST INTEGER, GRPSRC0 INTEGER, GRPDST0 INTEGER, GRPSRC1 INTEGER, GRPDST1 INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MAINOUTAC ( ID INTEGER NOT NULL, MAINKEY INTEGER NOT NULL, ACCNKEY INTEGER NOT NULL ); CREATE TABLE MAINRPTINVMST ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR DMN_NBR, GRPTYP SMALLINT DEFAULT 0 NOT NULL, GRPID INTEGER, PODRID INTEGER, COMMENT VARCHAR(255), USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MAINRPTINVSLV ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, MAINID INTEGER NOT NULL ); CREATE TABLE MANAGER_PRICE_ORGN ( ID INTEGER NOT NULL, PERSONAL_ID INTEGER, ORGN_ID INTEGER, PRICELIST_ID INTEGER ); CREATE TABLE MBPDGAC ( ID INTEGER NOT NULL, DGVKEY INTEGER NOT NULL, ACCNKEY INTEGER NOT NULL ); CREATE TABLE MBPDGV ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, PODR INTEGER NOT NULL, PODRID INTEGER NOT NULL, TYP INTEGER DEFAULT 0, DGVDTID INTEGER, OPERID INTEGER, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MBPGDD ( ID INTEGER NOT NULL, DGVID INTEGER, MBPID INTEGER, GDDID INTEGER, GDDDTID INTEGER, PRICE DOUBLE PRECISION DEFAULT 0.0, INP_DATE TIMESTAMP, OUT_DATE TIMESTAMP, QUANT DOUBLE PRECISION DEFAULT 0.0, SOURCE DOUBLE PRECISION DEFAULT 0.0 ); CREATE TABLE MBPMEAN ( ID INTEGER NOT NULL, OURORGNID INTEGER, GODSID INTEGER, PERIOD INTEGER DEFAULT 1, INVNBR DMN_NBR, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE MDOC_GOODS ( ID INTEGER NOT NULL, MDOC_ID INTEGER, IS_NDS INTEGER, GOOD_ID INTEGER, DISCOUNT NUMERIC(6,2), QTY NUMERIC(15,4), PRICE NUMERIC(15,4), QTY_REAL NUMERIC(15,4) DEFAULT 0.0 NOT NULL ); CREATE TABLE MDOCS ( ID INTEGER NOT NULL, DOC_DATE TIMESTAMP, TO_ID INTEGER, MANAGER_ID INTEGER, FORM_PAY_ID INTEGER, DOC_TIME TIMESTAMP, DISCOUNT NUMERIC(6,2) DEFAULT 0.0, DESCRIPTIONS VARCHAR(255) COLLATE PXW_CYRL ); CREATE TABLE MOBIL_MAIN ( ID INTEGER NOT NULL, BASE_PRICE_LIST_ID INTEGER, BEZNAL_OPER INTEGER, NAL_OPER INTEGER, NDS NUMERIC(15,4), COM_PORT VARCHAR(6), COM_SPEED VARCHAR(20), KASSA_DESCRIPTION VARCHAR(255) COLLATE PXW_CYRL ); CREATE TABLE MOG_DISCOUNT ( ID INTEGER NOT NULL, ORGN_ID INTEGER, PERSONAL_ID INTEGER, GROOP_ID INTEGER, DISCOUNT NUMERIC(9,2) DEFAULT 0.0 NOT NULL, MODIFY SMALLINT DEFAULT 0 NOT NULL ); CREATE TABLE OBJ_ATTACH ( ID INTEGER NOT NULL, OBJID INTEGER NOT NULL, FILENAME VARCHAR(255), FILEBODY BLOB SUB_TYPE 0 SEGMENT SIZE 80, FILETYPE VARCHAR(255), FILESIZE INTEGER DEFAULT 0 NOT NULL, PACKTYPE INTEGER DEFAULT 0 NOT NULL, PACKSIZE INTEGER DEFAULT 0 NOT NULL, USERID INTEGER, FILECREATE TIMESTAMP DEFAULT Current_TimeStamp NOT NULL, FILEMODIFY TIMESTAMP, DESCRIPTION BLOB SUB_TYPE 0 SEGMENT SIZE 80 ); CREATE TABLE OBJ_CLASS ( ID INTEGER NOT NULL, OBJ_TYP INTEGER NOT NULL, BDG_STATE INTEGER DEFAULT 0 ); CREATE TABLE OBJ_MSG ( ID INTEGER NOT NULL, OBJID INTEGER NOT NULL, SENDUSERID INTEGER, PARENTID INTEGER, SUBJECT VARCHAR(255), BODY BLOB SUB_TYPE 0 SEGMENT SIZE 80, CREATED TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE OBJ_MSGREAD ( ID INTEGER NOT NULL, MSGID INTEGER NOT NULL, USERID INTEGER, READED TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE OBJ_STAGE ( ID INTEGER NOT NULL, OBJID INTEGER NOT NULL, STAGEID INTEGER NOT NULL, USERID1 INTEGER, USERID2 INTEGER, DESCRIPTION1 BLOB SUB_TYPE 0 SEGMENT SIZE 80, DESCRIPTION2 BLOB SUB_TYPE 0 SEGMENT SIZE 80, STAGECREATE TIMESTAMP DEFAULT Current_TimeStamp, STAGEREAD TIMESTAMP, STAGECLOSE TIMESTAMP, STAGEABORT TIMESTAMP, STAGECOMMIT TIMESTAMP ); CREATE TABLE OBJ_STAGEROUTESTD ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE OBJ_STAGESTD ( ID INTEGER NOT NULL, STAGEROUTEID INTEGER NOT NULL, PRIORITY INTEGER DEFAULT 0 NOT NULL, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE OBJ_TYPE ( ID INTEGER NOT NULL, OBJNAME VARCHAR(255) ); CREATE TABLE OPERACT ( ID INTEGER NOT NULL, PODRPOSTID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, OPERDATE TIMESTAMP, OPERDATEEND TIMESTAMP, NAME VARCHAR(255), COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, DOCMDATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT 'NOW' ); CREATE TABLE OPERADD ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, PODRPOSTID INTEGER, OPERDATE TIMESTAMP, COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP, DOCMDATE TIMESTAMP ); CREATE TABLE OPERATTEST ( ID INTEGER NOT NULL, PODRPOSTID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, NAME VARCHAR(255), RESULT VARCHAR(20), OPERDATE TIMESTAMP, COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, DOCMDATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT 'NOW' ); CREATE TABLE OPERAWARD ( ID INTEGER NOT NULL, PODRPOSTID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, OPERDATE TIMESTAMP, TYP INTEGER NOT NULL, SUMMA DOUBLE PRECISION, NAME VARCHAR(255), COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, DOCMDATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP ); CREATE TABLE OPERDELETE ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, PODRPOSTID INTEGER, OPERDATE TIMESTAMP, COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, DOCMDATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT 'NOW' ); CREATE TABLE OPERFIO ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, OLDNAME VARCHAR(40), OLDFULLNAME VARCHAR(40), OPERDATE TIMESTAMP, COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT 'NOW', DOCMDATE TIMESTAMP ); CREATE TABLE OPERREMOVE ( ID INTEGER NOT NULL, PODRPOSTID INTEGER, PODRPOSTNEWID INTEGER NOT NULL, SUMMNEW DOUBLE PRECISION, PRSNID INTEGER NOT NULL, OPERDATE TIMESTAMP, COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, DOCMDATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT 'NOW' ); CREATE TABLE OPERREST ( ID INTEGER NOT NULL, PODRPOSTID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, OPERDATE TIMESTAMP, OPERDATEEND TIMESTAMP, TYP INTEGER, COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, DOCMDATE TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT 'NOW' ); CREATE TABLE OPERSTUDY ( ID INTEGER NOT NULL, PODRPOSTID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, OPERDATE TIMESTAMP, OPERDATEEND TIMESTAMP, ORGNID INTEGER, RESULT VARCHAR(20), COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT 'NOW', DOCMDATE TIMESTAMP ); CREATE TABLE OPERTRIP ( ID INTEGER NOT NULL, PODRPOSTID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, ORGNID INTEGER, OPERDATE TIMESTAMP, OPERDATEEND TIMESTAMP, DOCMTRIP DMN_NBR, COMMENT VARCHAR(255), ISPLANNING INTEGER DEFAULT 0 NOT NULL, DOCM DMN_NBR, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT 'NOW', DOCMDATE TIMESTAMP ); CREATE TABLE ORGN ( ID INTEGER NOT NULL, GROU_ INTEGER, NAME VARCHAR(40), FULLNAME VARCHAR(1024), NAME_NDS VARCHAR(255), OURORGN INTEGER DEFAULT 0 NOT NULL, OWNER INTEGER, ADDRESS VARCHAR(255), PHONE VARCHAR(255), BANK VARCHAR(70), MFO_CODE VARCHAR(30), ACCNCODE VARCHAR(30), OKPOCODE VARCHAR(30), STREET VARCHAR(40), PSTIDX VARCHAR(10), FAX VARCHAR(255), CALL VARCHAR(255), POST VARCHAR(255), COMMENT VARCHAR(255), BUYER INTEGER, DILER INTEGER, COUNTRY INTEGER, REGION INTEGER, CITY INTEGER, MAXTIME INTEGER, DGVPOSTAV DMN_NBR, DOLG INTEGER, MANAGER INTEGER, CLNBR DMN_NBR, DIRECTOR VARCHAR(40), NALNBR DMN_NBR, REGNBR DMN_NBR, EMAIL VARCHAR(255), WEBSITE VARCHAR(255), DGVDATE TIMESTAMP, DGVPRSN VARCHAR(255), PRICEID INTEGER, ACCOUNTER VARCHAR(40), ORGNDIRID INTEGER, ORGNACNID INTEGER, BIRTHDAY TIMESTAMP, ADDRESSF VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 0 SEGMENT SIZE 80, PRIVATEFORM VARCHAR(255), PROFILEFORM VARCHAR(255), NALSYSTEM VARCHAR(255), NALORGNNAME VARCHAR(255), NALORGN INTEGER DEFAULT 0 NOT NULL, NALORGNID INTEGER, CYCLETIME INTEGER DEFAULT 0 NOT NULL, VIP INTEGER DEFAULT 0 NOT NULL, CODE VARCHAR(40), OBJID INTEGER, KREDITMAX DOUBLE PRECISION DEFAULT 0.0, KREDITONE DOUBLE PRECISION DEFAULT 0.0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, SALENDS SMALLINT, PHONENBR VARCHAR(12), BRANCH_NO VARCHAR(10), NO_EMAIL SMALLINT, NO_SMS SMALLINT, BOUNSFORBIRTHDAY TIMESTAMP, STATUSBONUSACCRUAL SMALLINT default 0 NOT NULL ); CREATE TABLE ORGN_GRP ( ID INTEGER NOT NULL, OWNUSERID INTEGER, NAME VARCHAR(255), PUBLICGRP SMALLINT, EDUSERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, USERNAME VARCHAR(20), EMAIL_TMPL_REAL VARCHAR(255) ); CREATE TABLE ORGN_GRPHIDE ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, GRPID INTEGER NOT NULL ); CREATE TABLE ORGN_MANAGER ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, ORGNID INTEGER NOT NULL, MNGRID INTEGER NOT NULL, DEFMNGR INTEGER DEFAULT 0 NOT NULL, SUBSCRIBE SMALLINT, SUSERID INTEGER, SDATETIME TIMESTAMP, COMMENT VARCHAR(255), EDUSERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_Timestamp NOT NULL ); CREATE TABLE ORGNBANKACCN ( ID INTEGER NOT NULL, ORGNID INTEGER NOT NULL, BANKID INTEGER, TYP INTEGER DEFAULT 0 NOT NULL, TYPNDS INTEGER DEFAULT 0 NOT NULL, ACCNNDSID INTEGER, ACCNCODE VARCHAR(30), CTYP INTEGER DEFAULT 0 NOT NULL, CURRTYP INTEGER, AACCNCODE VARCHAR(30), CREDIT INTEGER DEFAULT 0 NOT NULL, NAME VARCHAR(40), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ORGNGRPOPEMAIL ( ID INTEGER NOT NULL, ORGNGRPID INTEGER NOT NULL, OPERID INTEGER NOT NULL, EDUSERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ORGNGRPREF ( ID INTEGER NOT NULL, GRPID INTEGER NOT NULL, ORGNID INTEGER NOT NULL ); CREATE TABLE ORGNINFO ( ID INTEGER NOT NULL, OURORGNID INTEGER, ORGNID INTEGER NOT NULL, OBJID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, BDATE TIMESTAMP, EDATE TIMESTAMP, PROFILE VARCHAR(255), PERIOD VARCHAR(40), BUYER VARCHAR(40), COMMENT VARCHAR(255), MAXTIME INTEGER DEFAULT 0, PRSNID INTEGER, CODE VARCHAR(40), USERNAME VARCHAR(29), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, FORM VARCHAR(100) ); CREATE TABLE ORGNPRICELIST ( ID INTEGER NOT NULL, ORGNID INTEGER NOT NULL, PRLSID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE PERSONAL ( ID INTEGER NOT NULL, PRSNCARDID INTEGER, OURORGNID INTEGER, NAME VARCHAR(40), INP_DATE TIMESTAMP, OUT_DATE TIMESTAMP, IDX_DATE TIMESTAMP, WTYP INTEGER, COMMENT VARCHAR(255), PODRID INTEGER, STORID INTEGER, DAYWTIME DOUBLE PRECISION, TABNBR INTEGER, FOTGRPID INTEGER, POSTID INTEGER, TABELID INTEGER, OKLAD DOUBLE PRECISION, MANAGER INTEGER, ZTYP INTEGER, RGTYP INTEGER, USERID INTEGER, POST VARCHAR(40), FULLNAME VARCHAR(255), INN DMN_NBR, BIRTHDAY TIMESTAMP, SEND TIMESTAMP, COUNTRY INTEGER, REGION INTEGER, CITY INTEGER, ADDRESS VARCHAR(40), PSTIDX VARCHAR(10), HOMEPHONE VARCHAR(20), PASSPORT VARCHAR(255), PASPSER VARCHAR(10), PASPNBR VARCHAR(10), PASPOUT VARCHAR(30), PHOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGPHOTOTYP INTEGER DEFAULT 0 NOT NULL, SUBSCRIBE BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGSUBSCRIBETYP INTEGER DEFAULT 0 NOT NULL, NALORGNID INTEGER, GENDER INTEGER, CARDACCN VARCHAR(255), CARDACCNUSE SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, NRC SMALLINT, SUPERVISOR SMALLINT, DIRECTOR SMALLINT ); CREATE TABLE PODR_FUNCMANAGE ( ID INTEGER NOT NULL, PODR_ID INTEGER NOT NULL, FUNC_ID INTEGER NOT NULL, TYP INTEGER ); CREATE TABLE PODR_FUNCSUPPORT ( ID INTEGER NOT NULL, PODR_ID INTEGER NOT NULL, FUNC_ID INTEGER NOT NULL, TYP INTEGER ); CREATE TABLE PODRLIST ( ID INTEGER NOT NULL, OURORGNID INTEGER, PARENTID INTEGER, NAME VARCHAR(40), COD VARCHAR(40), ADDRESS VARCHAR(255), PHONE VARCHAR(255), MPRSNID INTEGER, SPRSNID INTEGER, BDG_CENTER_ID INTEGER, TYP INTEGER DEFAULT 0 NOT NULL, OWN VARCHAR(40), DELETED INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE PODRPOST ( ID INTEGER NOT NULL, COD VARCHAR(40), NAME VARCHAR(255), PODRID INTEGER NOT NULL, POSTID INTEGER, BOSSID INTEGER, PRSNID INTEGER, TABELID INTEGER, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE POST_FUNCMANAGE ( ID INTEGER NOT NULL, POST_ID INTEGER NOT NULL, FUNC_ID INTEGER NOT NULL, TYP INTEGER ); CREATE TABLE POST_FUNCSUPPORT ( ID INTEGER NOT NULL, POST_ID INTEGER NOT NULL, FUNC_ID INTEGER NOT NULL, TYP INTEGER ); CREATE TABLE PRICEGOODS ( ID INTEGER NOT NULL, GDSKEY INTEGER NOT NULL, PRICE DOUBLE PRECISION, PRICEID INTEGER NOT NULL, CPRICE DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE PRICELIST ( ID INTEGER NOT NULL, BASEPRICEID INTEGER, BASEPRICE SMALLINT DEFAULT 0, NAME VARCHAR(255), PROC DOUBLE PRECISION, CODE VARCHAR(20), CURS DOUBLE PRECISION DEFAULT 1.0, RND DOUBLE PRECISION, BONUSPRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, PRICE_ROZN SMALLINT DEFAULT 0 ); CREATE TABLE PROFEXPERIENCE ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, BDATE TIMESTAMP, EDATE TIMESTAMP, ORGN VARCHAR(255), POSTNAME VARCHAR(255), COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp NOT NULL, DISMISS VARCHAR(255), FUNCTIONS VARCHAR(255) ); CREATE TABLE PRSNATTACH ( ID INTEGER NOT NULL, PRSNID INTEGER, NAME VARCHAR(255), FILEDATA BLOB SUB_TYPE 0 SEGMENT SIZE 80, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE PRSNCARD ( ID INTEGER NOT NULL, NAME VARCHAR(40), FULLNAME VARCHAR(255), INN DMN_NBR, BIRTHDAY TIMESTAMP, PSTIDX VARCHAR(10), ADDRESS VARCHAR(255), HOMEPHONE VARCHAR(40), PASPSER VARCHAR(10), PASPNBR DMN_NBR, PASPOUT VARCHAR(30), PASSPORT VARCHAR(255), GENDER INTEGER, PHOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGPHOTOTYP INTEGER DEFAULT 0 NOT NULL, SUBSCRIBE BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGSUBSCRIBETYP INTEGER DEFAULT 0 NOT NULL, NALORGNID INTEGER, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, RESUME BLOB SUB_TYPE 0 SEGMENT SIZE 80, FAMILYSTATUS INTEGER, CHILDREN INTEGER, ABROADPASS INTEGER, REGISTERPLACE VARCHAR(255), DRIVECATEGORY VARCHAR(10), DRIVEAGE INTEGER, DRIVECAR VARCHAR(100), COMPKNOWLEDGE VARCHAR(255), KNOWCOPY INTEGER, KNOWFAX INTEGER, KNOWATC INTEGER, KNOWSCAN INTEGER, JOBMST INTEGER, JOBSLV INTEGER, JOBRENT INTEGER, TRIPTYPE INTEGER, RESIDENCE VARCHAR(255), PRSNCOMMENT VARCHAR(255), WARDUTY INTEGER, WARRANK VARCHAR(100), WARREGION VARCHAR(100), HOBBY VARCHAR(255), WANTEDEXPERIENCE VARCHAR(255), HABITSMOKE INTEGER, HABITALCOHOL INTEGER, HABITDRUG INTEGER, HABITJAIL INTEGER, EDUTYPE INTEGER, BIRTHPLACE VARCHAR(255), WORKBOOKNBR DMN_NBR, FOREIGNPASPORT INTEGER, WARDRAFT INTEGER, PHONE VARCHAR(255), EMAIL VARCHAR(255), WARINFO VARCHAR(255), INVALIDGRP INTEGER, KINSFOLK BLOB SUB_TYPE 1 SEGMENT SIZE 4096, CODE VARCHAR(40), NSOCSTR VARCHAR(20) ); CREATE TABLE PRSNMOVE ( ID INTEGER NOT NULL, OURORGNID INTEGER, PRSNID INTEGER NOT NULL, PODRID INTEGER, POSTID INTEGER, PODRPOSTID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, DOCDATE TIMESTAMP, TYP INTEGER DEFAULT 0 NOT NULL, WTYP INTEGER DEFAULT 0 NOT NULL, OKLAD DOUBLE PRECISION DEFAULT 0.0, STORID INTEGER, DAYWTIME DOUBLE PRECISION DEFAULT 8.0 NOT NULL, FOTGRPID INTEGER, TABELID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE PRSNOPEMAIL ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, OPERID INTEGER NOT NULL, EDUSERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE PRSNOPER ( ID INTEGER NOT NULL, OPERTYPE_ID INTEGER NOT NULL, NBR DMN_NBR, BDATE TIMESTAMP, EDATE TIMESTAMP, COMMENT VARCHAR(255), STRVAL1 VARCHAR(255), STRVAL2 VARCHAR(255), INTVAL1 INTEGER, ASTATUS INTEGER, ORGN_ID INTEGER, POST_ID INTEGER, PRSNID INTEGER, OURORGNID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE PRSNOPERTYPE ( ID INTEGER NOT NULL, NAME VARCHAR(80), CODE VARCHAR(20), ATYPE INTEGER DEFAULT 0, STRVAL1_NAME VARCHAR(40), STRVAL2_NAME VARCHAR(40), INTVAL1_NAME VARCHAR(40), ORGNID_NAME VARCHAR(40), POSTID_NAME VARCHAR(40), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE PRSNPOST ( ID INTEGER NOT NULL, NAME VARCHAR(255), OKLAD DOUBLE PRECISION DEFAULT 0.0, COD VARCHAR(40), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE PRSNPOSTPROF ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, PROFNAME VARCHAR(255), POSTID INTEGER ); CREATE TABLE PRSNTEST ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, DAT_ TIMESTAMP NOT NULL, HPTID INTEGER NOT NULL, TESTTIME TIME NOT NULL, RESVAL BLOB SUB_TYPE 1 SEGMENT SIZE 4096 NOT NULL, GRAPH BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGGRAPHTYP INTEGER DEFAULT 0 NOT NULL, INTERP BLOB SUB_TYPE 1 SEGMENT SIZE 4096, USERNAME VARCHAR(20) NOT NULL, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE PTANSW ( ID INTEGER NOT NULL, QUESTID INTEGER NOT NULL, IDINGROUP INTEGER, TEXT BLOB SUB_TYPE 1 SEGMENT SIZE 4096, USERNAME VARCHAR(20) NOT NULL, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE PTQUEST ( ID INTEGER NOT NULL, HPTID INTEGER NOT NULL, PARENTID INTEGER, IDINGROUP INTEGER, TEXT BLOB SUB_TYPE 1 SEGMENT SIZE 4096, USERNAME VARCHAR(20) NOT NULL, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE RBPRODOC ( TYP INTEGER, NAME VARCHAR(255), TEMPLATE BLOB SUB_TYPE 0 SEGMENT SIZE 80, ID INTEGER NOT NULL, SUBTYP INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP, CFORMAT VARCHAR(20) ); CREATE TABLE REGION ( ID INTEGER NOT NULL, GROU_ INTEGER, NAME VARCHAR(40), OWNER INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE REL_KURS ( DAT_ TIMESTAMP, KURS DOUBLE PRECISION ); CREATE TABLE REPLICATIONLOG ( ID INTEGER NOT NULL, OFFICE INTEGER NOT NULL, OFFICEID INTEGER NOT NULL, DAT_ TIMESTAMP DEFAULT Current_TimeStamp, RECID INTEGER, OLDID INTEGER, RELATION_NAME VARCHAR(31), FIELD_NAME VARCHAR(31), FIELD_VALUE VARCHAR(255), BLOB_VALUE BLOB SUB_TYPE 0 SEGMENT SIZE 80, OPERATION INTEGER ); CREATE TABLE REPLICATIONLOGFLD ( ID INTEGER NOT NULL, RID INTEGER NOT NULL, FIELD_NAME VARCHAR(31), FIELD_VALUE VARCHAR(255), BLOB_VALUE BLOB SUB_TYPE 0 SEGMENT SIZE 80 ); CREATE TABLE REPLICATIONLOGREC ( ID INTEGER NOT NULL, DAT_ TIMESTAMP DEFAULT Current_TimeStamp, OFFICE INTEGER NOT NULL, OFFICEID INTEGER NOT NULL, RECID INTEGER, OLDID INTEGER, RELATION_NAME VARCHAR(31), OPERATION INTEGER ); CREATE TABLE REPLICATIONOFFICE ( ID INTEGER NOT NULL, NAME VARCHAR(255), CURRENTOFFICE INTEGER DEFAULT 0 NOT NULL, MAINOFFICE INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE RESERVLOG ( ID INTEGER NOT NULL, USERID INTEGER, EUSERID INTEGER, MANAGER INTEGER, PRSNID INTEGER, GDSKEY INTEGER NOT NULL, DGVKEY INTEGER, GDDKTKEY INTEGER, GDDKEY INTEGER, QUANT DOUBLE PRECISION, PRICEKT DOUBLE PRECISION, NDSKT DOUBLE PRECISION, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, BDATETIME TIMESTAMP, EDATETIME TIMESTAMP, USERNAME VARCHAR(20) ); CREATE TABLE RIGHT_LIST ( CODE D_RIGHT_CODE NOT NULL, PARENT_CODE D_RIGHT_CODE, ATYPE INTEGER DEFAULT 0 NOT NULL, NAME VARCHAR(80), COMMENT VARCHAR(255), BY_ORGN INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE SALE ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CURRTYP INTEGER, CURS DOUBLE PRECISION DEFAULT 1.0 NOT NULL, CTYP INTEGER DEFAULT 0 NOT NULL, NAMEID INTEGER, TYP INTEGER, DGVKEY INTEGER, SUBTYP INTEGER, PRSNID INTEGER, OPERID INTEGER, SYSTEM_FLAG INTEGER, MANAGER INTEGER, OURACCNID INTEGER, ACCNID INTEGER, OURACCNNDSID INTEGER, ACCNNDSID INTEGER, COMMENT VARCHAR(255), COMMENTNDS VARCHAR(255), CURRSTORID INTEGER, ORGNINFOID INTEGER, CSDTKTHBID INTEGER, PODRID INTEGER, VL1 INTEGER, VL2 INTEGER, OBJID INTEGER, NNBR DMN_NBR, CALCNDS SMALLINT, NDSPROC DOUBLE PRECISION, NDS DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT current_timestamp, REMARK VARCHAR(255) ); CREATE TABLE SALEACCN ( ID INTEGER NOT NULL, SALEKEY INTEGER NOT NULL, ACCNKEY INTEGER NOT NULL ); CREATE TABLE SALECROS ( ID INTEGER NOT NULL, DGVKEY INTEGER, SALEKEY INTEGER, SZDTCRID INTEGER, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SALEDTDATA ( ID INTEGER NOT NULL, SALEID INTEGER NOT NULL, OPERID INTEGER, COMMENT VARCHAR(255), SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SALEDTVKCR ( ID INTEGER NOT NULL, SALEID INTEGER NOT NULL, VKSLID INTEGER NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SALEDUCR ( ID INTEGER NOT NULL, DGVKEY INTEGER, SALEKEY INTEGER, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SALEKT ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NAMEID INTEGER NOT NULL, SALEDATE TIMESTAMP, OPERID INTEGER, PRSNID INTEGER, OURACCNID INTEGER, ACCNID INTEGER, OURACCNNDSID INTEGER, ACCNNDSID INTEGER, COMMENT VARCHAR(255), COMMENTNDS VARCHAR(255), CTYP INTEGER, CURRTYP INTEGER, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CURS DOUBLE PRECISION DEFAULT 1.0 NOT NULL, BDATE TIMESTAMP, BCURS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, BSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, BKSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, BESUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, BACCNID INTEGER, BSALEDTID INTEGER, CURRSTORID INTEGER, ORGNINFOID INTEGER, CSDTKTHBID INTEGER, PODRID INTEGER, VL1 INTEGER, VL2 INTEGER, OBJID INTEGER, CALCNDS SMALLINT DEFAULT 1, NDSPROC DOUBLE PRECISION, NDS DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, REMARK VARCHAR(255) ); CREATE TABLE SALEKTAC ( ID INTEGER NOT NULL, SALEKEY INTEGER NOT NULL, ACCNKEY INTEGER NOT NULL ); CREATE TABLE SALEKTCR ( ID INTEGER NOT NULL, DGVKEY INTEGER NOT NULL, SALEKEY INTEGER NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0, CSUMMA DOUBLE PRECISION DEFAULT 0, SUMM DOUBLE PRECISION DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SALEKTDATA ( ID INTEGER NOT NULL, SALEID INTEGER NOT NULL, OPERID INTEGER, COMMENT VARCHAR(255), SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_Timestamp ); CREATE TABLE SALEKTVKCR ( ID INTEGER NOT NULL, SALEID INTEGER NOT NULL, VKSLID INTEGER NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SALEKUCR ( ID INTEGER NOT NULL, DGVKEY INTEGER NOT NULL, SALEKEY INTEGER NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0.0, CSUMMA DOUBLE PRECISION DEFAULT 0.0, SUMM DOUBLE PRECISION DEFAULT 0.0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SC_CARDS ( ID INTEGER NOT NULL, CARDTID INTEGER NOT NULL, GOODSID INTEGER NOT NULL, QUANT DOUBLE PRECISION, PRICE DOUBLE PRECISION, USERNAME VARCHAR(20), ZNBR VARCHAR(255), SNBR VARCHAR(255) ); CREATE TABLE SC_CARDT ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_N TIMESTAMP, GDSKEY INTEGER NOT NULL, SNBR VARCHAR(255), ZNBR VARCHAR(255), DAT_K TIMESTAMP, GARANT DOUBLE PRECISION, ORGNID INTEGER, CONTACTID INTEGER, COMMENT VARCHAR(255), PRICE DOUBLE PRECISION DEFAULT 0.0, CASH_DOC_NBR VARCHAR(100), WARRANTY_DOC_NBR VARCHAR(100), BRAND VARCHAR(100), PRODUCT_MODEL VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SC_REMO ( ID INTEGER NOT NULL, OBJID INTEGER, CARDTID INTEGER NOT NULL, STORID INTEGER, DGVKEY INTEGER, DAT_N TIMESTAMP, DAT_K TIMESTAMP, DATE_INP TIMESTAMP, DATE_OUT TIMESTAMP, NBR DMN_NBR, COMMENT VARCHAR(255), TOTAL VARCHAR(20), NEPOL VARCHAR(1024), PROC_JOB DOUBLE PRECISION, PROC_GOODS DOUBLE PRECISION, SUM_JOB DOUBLE PRECISION, SUM_GOODS DOUBLE PRECISION, SUMMA DOUBLE PRECISION, PODRID INTEGER, ORGPRSN VARCHAR(255), ORGADDR VARCHAR(255), INFOSRCID INTEGER, DTKTID INTEGER, SMSPHONE VARCHAR(12), REMOTYPEID INTEGER, PROC_COMMENT VARCHAR(255), USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, COUNTRYID INTEGER, REGIONID INTEGER, CITYID INTEGER, ADDRESS VARCHAR(255), SCNAME VARCHAR(255), PRSNDOCTYPE VARCHAR(100), PRSNDOCSERNBR VARCHAR(100), PRSNDOCDATE TIMESTAMP ); CREATE TABLE SC_REMO_TYPE ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(80), COLOR INTEGER, WARRANTY SMALLINT DEFAULT 0, DTKTID INTEGER, USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SC_REMO_TYPE_PARAMS ( ID INTEGER NOT NULL, REMOTYPEID INTEGER, ORGNID INTEGER, USERID INTEGER, BLOBVAL BLOB SUB_TYPE 1 SEGMENT SIZE 80, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SC_REMONT ( ID INTEGER NOT NULL, REMOID INTEGER, CENA DOUBLE PRECISION, PRSNID INTEGER, JOBID INTEGER, WTIME DOUBLE PRECISION, PRICEG DOUBLE PRECISION, CENA_PROC DOUBLE PRECISION, PRICEG_PROC DOUBLE PRECISION ); CREATE TABLE SC_REMONT1 ( ID INTEGER NOT NULL, REMOID INTEGER NOT NULL, JOBID INTEGER NOT NULL ); CREATE TABLE SC_REMZAP ( ID INTEGER NOT NULL, REMID INTEGER, GOODSID INTEGER, PRICE DOUBLE PRECISION, QUANT DOUBLE PRECISION, SUMMA DOUBLE PRECISION, PRICE_PROC DOUBLE PRECISION ); CREATE TABLE SC_REMZAP1 ( ID INTEGER NOT NULL, REMOID INTEGER NOT NULL, GOODSID INTEGER NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE SERVICESVD ( ID INTEGER NOT NULL, I_D INTEGER, DAT_ TIMESTAMP, CASH_CODE INTEGER, NAME VARCHAR(128), PRICE DOUBLE PRECISION, DISCOUNT DOUBLE PRECISION, NON_CASH DOUBLE PRECISION, QUANT DOUBLE PRECISION, DIV_ID INTEGER, DIV_NAME VARCHAR(64), STORID INTEGER, GODSID INTEGER, WORKMAINID INTEGER, ZID INTEGER, DGVDTID INTEGER, ORG_ID INTEGER, ORG_NAME VARCHAR(64), ORGNID INTEGER ); CREATE TABLE STORACCN ( ID INTEGER NOT NULL, OPER INTEGER, OPERID INTEGER, DT VARCHAR(5), KT VARCHAR(5), VL1 INTEGER, VL2 INTEGER, SUMTYP INTEGER, COMMENT VARCHAR(255), STORNO INTEGER, ACCNDATE INTEGER, REALTYP INTEGER, STOR INTEGER, DTPRT INTEGER, DTOBJ INTEGER, KTPRT INTEGER, KTOBJ INTEGER, FINRES INTEGER, PROC DOUBLE PRECISION, DTA INTEGER, KTA INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE STORGRP ( ID INTEGER NOT NULL, OURORGNID INTEGER, NAME VARCHAR(40), ADDRESS VARCHAR(255), DEFAULTCLIENTID INTEGER, INTERESTRATE DOUBLE PRECISION default 0.0 NOT NULL, OPENING TIMESTAMP, SETTINGS BLOB SUB_TYPE 1 SEGMENT SIZE 80 ); CREATE TABLE STORGRP_NCOST ( ID INTEGER NOT NULL, STORGRPID INTEGER NOT NULL, COST DOUBLE PRECISION DEFAULT 0.0, RND DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_timestamp ); CREATE TABLE STORGRPREF ( ID INTEGER NOT NULL, STORID INTEGER NOT NULL, GRPID INTEGER NOT NULL, POSNO INTEGER DEFAULT 0 ); CREATE TABLE STORLIST ( ID INTEGER NOT NULL, OURORGNID INTEGER, COD VARCHAR(20), NAME VARCHAR(40), OWNER VARCHAR(40), OWNPRSNID INTEGER, ACCN VARCHAR(5), NDSTYP INTEGER DEFAULT 1, TYP INTEGER DEFAULT 0, NDSPROC DOUBLE PRECISION DEFAULT 20.0, NKPROC DOUBLE PRECISION DEFAULT 0.0, OPERIDEXTN INTEGER, OPERIDKTRT INTEGER, OPERIDKTWK INTEGER, OPERIDIMPT INTEGER, OPERIDREAL INTEGER, OPERIDINTR INTEGER, OPERIDEXPT INTEGER, OPERIDPRIC INTEGER, OPERIDDTRT INTEGER, OPERIDMAIN INTEGER, OPERID_MBP INTEGER, OPERID_TMC INTEGER, CAN_RESERVE SMALLINT DEFAULT 0, COLOR INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE STORZAKAZDT ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, DAT_ TIMESTAMP, NBR DMN_NBR, MANAGER INTEGER, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SLSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SALESUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSLSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SCSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CURRTYP INTEGER, CURS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SALEDATE TIMESTAMP, COMMENT VARCHAR(255), ORGNID INTEGER, CREATEDATETIME TIMESTAMP DEFAULT Current_TimeStamp, READYPDATETIME TIMESTAMP, READYFDATETIME TIMESTAMP, STATE INTEGER DEFAULT 0 NOT NULL, STORGRPID INTEGER, OBJID INTEGER, OURACCNID INTEGER, ORGACCNID INTEGER, DDATE TIMESTAMP, DNBR DMN_NBR, DPRSN VARCHAR(255), DDOC VARCHAR(255), NDATE TIMESTAMP, NNBR DMN_NBR, SALECOND VARCHAR(255), SALEFORM VARCHAR(255), CSDTKTHBID INTEGER, ORGNINFOID INTEGER, SUBSCRIBE INTEGER DEFAULT 0, TRANSFER VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, NN DMN_NBR, NZ DMN_NBR, OUT_DATE TIMESTAMP, TRDPID INTEGER, EGRNN SMALLINT, ROUNDNDS SMALLINT, BONUSPROC DOUBLE PRECISION, NO_LASTEDIT SMALLINT DEFAULT 0, CONTACTID INTEGER ); CREATE TABLE STORZDTGDS ( ID INTEGER NOT NULL, SZID INTEGER NOT NULL, GODSID INTEGER NOT NULL, OBJID INTEGER, SOURCE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, RSQUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, BQUANT DOUBLE PRECISION DEFAULT 0.0, SRC_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SQNT_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PRICE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DESCRIPTION BLOB SUB_TYPE 0 SEGMENT SIZE 80, PRICEID INTEGER, SNPRICE DOUBLE PRECISION DEFAULT 0, DISCOUNTBONUSSETID INTEGER ); CREATE TABLE SUB ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, ACCN VARCHAR(5) NOT NULL, AN INTEGER NOT NULL, SUBKEY INTEGER NOT NULL, SALDO DOUBLE PRECISION, CSALDO DOUBLE PRECISION DEFAULT 0.0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SYSCONST ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, USERID INTEGER, NAME VARCHAR(255) NOT NULL, VAL VARCHAR(255), BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80, DESCRIPTION VARCHAR(1024) ); CREATE TABLE SYSLOG ( ID INTEGER NOT NULL, OURORGNID INTEGER, OBJID INTEGER, USERID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, DOCDATE TIMESTAMP, OUT_DATE TIMESTAMP, ACT INTEGER DEFAULT 0, OPERATION VARCHAR(255), DESCRIPTION BLOB SUB_TYPE 1 SEGMENT SIZE 80, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE SYSLOGLOGIN ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, MODULE INTEGER, LOG_IN TIMESTAMP, LOG_OUT TIMESTAMP, WINUSERNAME VARCHAR(255), COMPUTERNAME VARCHAR(255) ); CREATE TABLE SYSLOGPROV ( ID INTEGER NOT NULL, OURORGNID INTEGER, DATEO TIMESTAMP, DATEN TIMESTAMP, SUMO DOUBLE PRECISION, SUMN DOUBLE PRECISION, DTO VARCHAR(5), DTN VARCHAR(5), KTO VARCHAR(5), KTN VARCHAR(5), ACTIONDATE TIMESTAMP DEFAULT Current_TimeStamp, USERNAME VARCHAR(20) ); CREATE TABLE SZDTCR ( ID INTEGER NOT NULL, SALEID INTEGER NOT NULL, SZDTID INTEGER NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE TRADEPOINT ( ID INTEGER NOT NULL, ORGNID INTEGER, NAME VARCHAR(255), ADDRESS VARCHAR(255), COUNTRY INTEGER, REGION INTEGER, CITY INTEGER ); CREATE TABLE USER_GRP ( ID INTEGER NOT NULL, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE USER_GRPREF ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, GRP_ID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, RIGHTS INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE USER_RIGHT ( ID INTEGER NOT NULL, RIGHT_CODE D_RIGHT_CODE NOT NULL, ORGN_ID INTEGER, USER_ID INTEGER NOT NULL, VAL INTEGER NOT NULL ); CREATE TABLE USERDCATEGORY ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, DCATEGORYID INTEGER NOT NULL, LASTEDIT TIMESTAMP, USERNAME VARCHAR(20) ); CREATE TABLE USERDDOCFOLDER ( ID INTEGER NOT NULL, USERID INTEGER, DDOCFOLDERID INTEGER ); CREATE TABLE USERDGRP ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, DGRPID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE USERGGRP ( ID INTEGER NOT NULL, USERID INTEGER, GGRPID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE USERKASS ( ID INTEGER NOT NULL, USER_ID INTEGER NOT NULL, KASS_ID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE USERLIST ( ID INTEGER NOT NULL, NAME VARCHAR(20) NOT NULL, FULLNAME VARCHAR(40), ACTIV INTEGER DEFAULT 1 NOT NULL, RIGHTS INTEGER DEFAULT 0 NOT NULL, PASSWRD VARCHAR(40), OPERMASK INTEGER DEFAULT 0 NOT NULL, BDAYS INTEGER, EDAYS INTEGER, HB_ORGN INTEGER DEFAULT 0 NOT NULL, HB_GODS INTEGER DEFAULT 0 NOT NULL, HB_PRSN INTEGER DEFAULT 0 NOT NULL, HB_STOR INTEGER DEFAULT 0 NOT NULL, HB_WMN SMALLINT, HB_CNTC SMALLINT, HB_PRLS SMALLINT DEFAULT 0, APPSMASK INTEGER DEFAULT 0 NOT NULL, PHOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80, SUBSCRIBE BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGPHOTOTYP INTEGER DEFAULT 0 NOT NULL, IMGSUBSCRIBETYP INTEGER DEFAULT 0 NOT NULL, PRSNID INTEGER, SALEAGENT INTEGER DEFAULT 0 NOT NULL, EMAIL VARCHAR(255), EMAILHOST VARCHAR(255), EMAILUSER VARCHAR(255), EMAILPSWD VARCHAR(255) CHARACTER SET OCTETS, EMAILPOP3PORT INTEGER DEFAULT 110, EMAILSMTPPORT INTEGER DEFAULT 25, CTLGMASK INTEGER DEFAULT 0 NOT NULL, BDGTMASK INTEGER DEFAULT 0 NOT NULL, REMOTEUSER INTEGER DEFAULT 0 NOT NULL, PARENTID INTEGER, GROUPTYP INTEGER DEFAULT 1 NOT NULL, LOGOFFTIMEOUT INTEGER DEFAULT 0 NOT NULL, PSWD VARCHAR(32) CHARACTER SET OCTETS, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE USERORGN ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, ORGNID INTEGER NOT NULL, RIGHTS INTEGER DEFAULT 0, APPSMASK INTEGER DEFAULT 0 NOT NULL, OPERMASK INTEGER DEFAULT 0 NOT NULL, OPERMASK1 INTEGER DEFAULT 0, OPERMASK2 INTEGER, CRDSMASK INTEGER DEFAULT 0 NOT NULL, CADRMASK INTEGER DEFAULT 0 NOT NULL, HB_STOR INTEGER DEFAULT 0 NOT NULL, HB_PRSN INTEGER DEFAULT 0 NOT NULL, HB_KASS INTEGER DEFAULT 0, BDGTMASK INTEGER DEFAULT 0 NOT NULL, CTLGMASK INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE USERPODR ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, PODRID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE USERPRLS ( ID INTEGER NOT NULL, USERID INTEGER NOT NULL, PRLSID INTEGER NOT NULL, RIGHTS INTEGER DEFAULT 0, EDUSERID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE USERSTOR ( ID INTEGER NOT NULL, USER_ID INTEGER NOT NULL, STOR_ID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE VENDORNAME ( ID INTEGER NOT NULL, NAME VARCHAR(255) DEFAULT '' NOT NULL, ORGNID INTEGER, GODSID INTEGER NOT NULL, USERNAME VARCHAR(20) DEFAULT '', LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE VKSL ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TYP INTEGER, SUMDT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SUMKT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SSUMMADT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SSUMMAKT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, OUT_DATE TIMESTAMP, SALEDATE TIMESTAMP, ORGNSLID INTEGER, ORGNDTID INTEGER, ORGNKTID INTEGER, COMMENT VARCHAR(255), IOCOMMENT VARCHAR(255), OCOMMENT VARCHAR(255), SCOMMENT VARCHAR(255), ACOMMENT VARCHAR(255), ORGNVKDTID INTEGER, ORGNVKKTID INTEGER, DATEDT TIMESTAMP, DATEKT TIMESTAMP, SDATEDT TIMESTAMP, SDATEKT TIMESTAMP, OPERID INTEGER, OPERIDO INTEGER, OPERIDSL INTEGER, OPERIDIO INTEGER, OPERIDA INTEGER, CURRTYP INTEGER, CURS DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CURRTYPDT INTEGER, CURSDT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMDT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SCSUMMADT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CURRTYPKT INTEGER, CURSKT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSUMKT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SCSUMMAKT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DATE_AKC TIMESTAMP, ORGNAKCID INTEGER, BLNS SMALLINT, SALEDTID INTEGER, SALEKTID INTEGER, DATESL TIMESTAMP, OUTSALE SMALLINT, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, NO_LASTEDIT SMALLINT DEFAULT 0 ); CREATE TABLE VKSLACCR ( ID INTEGER NOT NULL, VKSLID INTEGER NOT NULL, ACCNID INTEGER NOT NULL, TYP INTEGER DEFAULT 0 NOT NULL ); CREATE TABLE WORKCALCMST ( ID INTEGER NOT NULL, OURORGNID INTEGER, NBR DMN_NBR, BDATE TIMESTAMP, EDATE TIMESTAMP, COMMENT VARCHAR(255), OPERID INTEGER, NKTYP INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKCALCNK ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, NKID INTEGER NOT NULL, SUMMA DOUBLE PRECISION DEFAULT 0 ); CREATE TABLE WORKCALCNKPRM ( ID INTEGER NOT NULL, CALCNKID INTEGER NOT NULL, PARAMVALID INTEGER NOT NULL, USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE WORKCALCPODR ( ID INTEGER NOT NULL, CALCNKID INTEGER NOT NULL, STORID INTEGER NOT NULL, MULT DOUBLE PRECISION DEFAULT 1, SUMMA DOUBLE PRECISION DEFAULT 0, NKSUMMA DOUBLE PRECISION ); CREATE TABLE WORKCALCPROV ( ID INTEGER NOT NULL, CALCID INTEGER NOT NULL, PROVID INTEGER NOT NULL ); CREATE TABLE WORKGODSTEMP ( ID INTEGER NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0, QUANTN DOUBLE PRECISION DEFAULT 0.0 ); CREATE TABLE WORKGOODS ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(20), PARENTID INTEGER, GROUPTYP INTEGER DEFAULT 0 NOT NULL, ONE VARCHAR(10), SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TYP INTEGER DEFAULT 0 NOT NULL, CUTTING INTEGER DEFAULT 0 NOT NULL, QNT DOUBLE PRECISION DEFAULT 0.0, NORMDELTA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, RND DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PACKED INTEGER DEFAULT 0 NOT NULL, KDELTA DOUBLE PRECISION DEFAULT 1.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKGOODSGDS ( ID INTEGER NOT NULL, WKGID INTEGER NOT NULL, GDSID INTEGER NOT NULL, PRIORITY INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKGOODSLINK ( ID INTEGER NOT NULL, WGSID INTEGER NOT NULL, WGMID INTEGER NOT NULL ); CREATE TABLE WORKHBLN ( ID INTEGER NOT NULL, REFID INTEGER NOT NULL, GODSID INTEGER NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NORMDELTA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PRIORITY INTEGER DEFAULT 0 NOT NULL, KDELTA DOUBLE PRECISION DEFAULT 1.0 NOT NULL, MAINGDS SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKHBNK ( ID INTEGER NOT NULL, NAME VARCHAR(40), PARENTID INTEGER, NK_GROUP INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKLINK ( ID INTEGER NOT NULL, OWNER INTEGER, QUANT DOUBLE PRECISION, QNT_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, GODSID INTEGER, TYP INTEGER, NORMDELTA DOUBLE PRECISION DEFAULT 0.0, NOZRESERV INTEGER DEFAULT 0 NOT NULL, MODELDTLID INTEGER, MODELGDSID INTEGER, MAINDTLID INTEGER, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CUTTING INTEGER DEFAULT 0 NOT NULL, STRUCTUREXY INTEGER DEFAULT 0 NOT NULL, KX DOUBLE PRECISION DEFAULT 1.0 NOT NULL, KY DOUBLE PRECISION DEFAULT 1.0 NOT NULL, KZ DOUBLE PRECISION DEFAULT 1.0 NOT NULL, NW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, GW DOUBLE PRECISION DEFAULT 1.0 NOT NULL, DETAILNAME VARCHAR(255), KDELTA DOUBLE PRECISION DEFAULT 1.0 NOT NULL, TESTONE INTEGER, RNDQNT SMALLINT DEFAULT 0, KF DOUBLE PRECISION DEFAULT 0.0, MAINGDS SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKMAIN ( ID INTEGER NOT NULL, GODSID INTEGER, QUANT DOUBLE PRECISION, PRIORITY INTEGER, PARENTID INTEGER, MULT DOUBLE PRECISION DEFAULT 1.0 NOT NULL, NORMPRICE DOUBLE PRECISION DEFAULT 0.0, KNK DOUBLE PRECISION DEFAULT 1.0 NOT NULL, MODELID INTEGER, MDTYP INTEGER DEFAULT 0 NOT NULL, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, GW DOUBLE PRECISION DEFAULT 1.0 NOT NULL, INVALIDMODEL INTEGER DEFAULT 0 NOT NULL, COD VARCHAR(20), SCALESIZE INTEGER DEFAULT 0 NOT NULL, CALCTYPE INTEGER DEFAULT 0 NOT NULL, ZOOMSCALE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CALCRATIO DOUBLE PRECISION, STORID INTEGER, RECEIPE BLOB SUB_TYPE 1 SEGMENT SIZE 4096, SCRUSERID INTEGER, SCRDATETIME TIMESTAMP, SCRMODDATETIME TIMESTAMP, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKMAINTOOL ( ID INTEGER NOT NULL, TOOLID INTEGER NOT NULL, MAINID INTEGER NOT NULL, USERNAME VARCHAR(20) DEFAULT '', LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKMODEL ( ID INTEGER NOT NULL, PARENTID INTEGER, NAME VARCHAR(255), CODE VARCHAR(20), GROUPTYP INTEGER DEFAULT 0 NOT NULL, ONE VARCHAR(10), SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PACKQNT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, GW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, MARKCODE VARCHAR(20), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKMODELDTL ( ID INTEGER NOT NULL, MODELID INTEGER, DETAILID INTEGER, PARENTID INTEGER, MODELDTLID INTEGER, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NBR DMN_NBR, PACKNBR INTEGER DEFAULT 0 NOT NULL, NW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, GW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PROCORIENTATION INTEGER DEFAULT 0 NOT NULL, PROCTYPE INTEGER DEFAULT 0 NOT NULL, PROCTYPECODE VARCHAR(20), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKMODELGDS ( ID INTEGER NOT NULL, MODELID INTEGER, WKGDSID INTEGER, MODELDTLID INTEGER, MODELGDSID INTEGER, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DELTAX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DELTAY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DELTAZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CUTTING INTEGER DEFAULT 0 NOT NULL, STRUCTUREXY INTEGER DEFAULT 0 NOT NULL, QNT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CALCTYPE INTEGER DEFAULT 0 NOT NULL, KX DOUBLE PRECISION DEFAULT 1.0 NOT NULL, KY DOUBLE PRECISION DEFAULT 1.0 NOT NULL, KZ DOUBLE PRECISION DEFAULT 1.0 NOT NULL, KNORM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, GW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, KDELTA DOUBLE PRECISION DEFAULT 1.0 NOT NULL, SCALESIZE INTEGER DEFAULT 0 NOT NULL, SCALEX DOUBLE PRECISION DEFAULT 1.0 NOT NULL, SCALEY DOUBLE PRECISION DEFAULT 1.0 NOT NULL, SCALEZ DOUBLE PRECISION DEFAULT 1.0 NOT NULL, SCALEDELTA INTEGER DEFAULT 0 NOT NULL, SCALEDX DOUBLE PRECISION DEFAULT 1.0 NOT NULL, SCALEDY DOUBLE PRECISION DEFAULT 1.0 NOT NULL, SCALEDZ DOUBLE PRECISION DEFAULT 1.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKNKDG ( ID INTEGER NOT NULL, DGVID INTEGER, NKID INTEGER, CALCNKID INTEGER, SUMMA DOUBLE PRECISION ); CREATE TABLE WORKOPER ( ID INTEGER NOT NULL, MODELID INTEGER, OPERID INTEGER NOT NULL, NORMTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, QNT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, OPERTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE WORKOPERATION ( ID INTEGER NOT NULL, NAME VARCHAR(255), PARENTID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, GROUPTYP INTEGER DEFAULT 0 NOT NULL, NORMTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE WORKPLANMST ( ID INTEGER NOT NULL, NBR DMN_NBR, BDATE TIMESTAMP, EDATE TIMESTAMP, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKPLANSLV ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, MAINID INTEGER NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0, PRIORITY INTEGER DEFAULT 0 ); CREATE TABLE WORKPLANSTOR ( TYP INTEGER DEFAULT 0 NOT NULL, STORID INTEGER NOT NULL, MSTID INTEGER NOT NULL ); CREATE TABLE WORKTOOL ( ID INTEGER NOT NULL, NBR VARCHAR(80) DEFAULT '', COMMENT VARCHAR(255) DEFAULT '', X DOUBLE PRECISION DEFAULT 0.0, Y DOUBLE PRECISION DEFAULT 0.0, Z DOUBLE PRECISION DEFAULT 0.0, GEOMETRY SMALLINT DEFAULT 1, XCOUNT INTEGER DEFAULT 0, YCOUNT INTEGER DEFAULT 0, IMAGE BLOB SUB_TYPE 0 SEGMENT SIZE 80, IMGTYP INTEGER, TYPID INTEGER, USERNAME VARCHAR(20) DEFAULT '', LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKTOOLTYP ( ID INTEGER NOT NULL, COD VARCHAR(20) DEFAULT '', NAME VARCHAR(120) DEFAULT '', DEFTYP INTEGER DEFAULT 0, USERNAME VARCHAR(20) DEFAULT '', LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKZAKAZ ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, STOR INTEGER, COMMENT VARCHAR(255), ZSREADY INTEGER DEFAULT 0 NOT NULL, ZMREADY INTEGER DEFAULT 0 NOT NULL, ZTRASH INTEGER DEFAULT 0 NOT NULL, BDATE TIMESTAMP, EDATE TIMESTAMP, ZAKAZMAP BLOB SUB_TYPE 0 SEGMENT SIZE 80, INPSTOR1 INTEGER, INPSTOR2 INTEGER, OBJID INTEGER, READYPDATE TIMESTAMP, WDATE TIMESTAMP, NKNOCALC INTEGER DEFAULT 0, FTIME DOUBLE PRECISION DEFAULT 0.0, EQAVG SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, EQUSE SMALLINT DEFAULT 0, OPTIONS INTEGER DEFAULT 0, STATE SMALLINT DEFAULT 0 ); CREATE TABLE WORKZCUTTING ( ID INTEGER NOT NULL, ZID INTEGER NOT NULL, CUTSTORTYP INTEGER DEFAULT 0 NOT NULL, STOR INTEGER NOT NULL, GODSID INTEGER NOT NULL, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QNT_ONE INTEGER DEFAULT 0 NOT NULL, GDDKEY INTEGER, CUTTING INTEGER DEFAULT 0 NOT NULL, DELETED INTEGER DEFAULT 0 NOT NULL, MARK INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKZMST ( ID INTEGER NOT NULL, ZID INTEGER NOT NULL, MID INTEGER, GODSID INTEGER NOT NULL, COD VARCHAR(20), STOR INTEGER, WRGDSID INTEGER, OBJID INTEGER, SOURCE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SRC_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QNT_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SCALESIZE INTEGER DEFAULT 0 NOT NULL, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, GW DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20) DEFAULT '', LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKZNK ( ID INTEGER NOT NULL, ZMID INTEGER NOT NULL, NKID INTEGER NOT NULL, CALCNKID INTEGER, ZKID INTEGER NOT NULL, SUMMA DOUBLE PRECISION ); CREATE TABLE WORKZPARAM ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, BARCODE VARCHAR(32) DEFAULT '' NOT NULL ); CREATE TABLE WORKZREF ( ID INTEGER NOT NULL, MSTID INTEGER, DTLID INTEGER ); CREATE TABLE WORKZSLV ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, GODSID INTEGER NOT NULL, LID INTEGER, QUANT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QNT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SOURCE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, QNT_ONE DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NORMDELTA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NOZRESERV INTEGER DEFAULT 0 NOT NULL, SIZEX DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEY DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SIZEZ DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CUTTING INTEGER DEFAULT 0 NOT NULL, STRUCTUREXY INTEGER DEFAULT 0 NOT NULL, KX DOUBLE PRECISION DEFAULT 1.0 NOT NULL, KY DOUBLE PRECISION DEFAULT 1.0 NOT NULL, KZ DOUBLE PRECISION DEFAULT 1.0 NOT NULL, DETAILNAME VARCHAR(255), KDELTA DOUBLE PRECISION DEFAULT 1.0 NOT NULL, TESTONE INTEGER, RNDQNT SMALLINT DEFAULT 0, KF DOUBLE PRECISION DEFAULT 0.0, TYP INTEGER DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE WORKZTOOL ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, TOOLID INTEGER NOT NULL, USERNAME VARCHAR(20) DEFAULT '', LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTCALCCRAC ( ID INTEGER NOT NULL, TYP INTEGER, MSTID INTEGER, ACCNKEY INTEGER, TYPID INTEGER ); CREATE TABLE ZPLTCALCDECR ( ID INTEGER NOT NULL, SLVID INTEGER, DECRID INTEGER, SUMMA DOUBLE PRECISION, PROC DOUBLE PRECISION, CSUMMA DOUBLE PRECISION, SALEKTID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, COD VARCHAR(5) DEFAULT '' ); CREATE TABLE ZPLTCALCINCR ( ID INTEGER NOT NULL, SLVID INTEGER, INCRID INTEGER, SUMMA DOUBLE PRECISION DEFAULT 0.0, PROC DOUBLE PRECISION DEFAULT 0.0, CSUMMA DOUBLE PRECISION DEFAULT 0.0, BLDATE TIMESTAMP, ELDATE TIMESTAMP, MONTHCNT INTEGER DEFAULT 0, MROUND SMALLINT, NOCALC SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTCALCMST ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, COMMENT VARCHAR(255), AVANS INTEGER DEFAULT 0 NOT NULL, OPERID INTEGER, HOLIDAYMASK INTEGER, W5 DOUBLE PRECISION, W5MASK INTEGER, CLOSED INTEGER DEFAULT 0 NOT NULL, CALCDATE TIMESTAMP, VL1 INTEGER, VL2 INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTCALCSLV ( ID INTEGER NOT NULL, MSTID INTEGER, PRSNID INTEGER, BSUMMA DOUBLE PRECISION DEFAULT 0.0, ESUMMA DOUBLE PRECISION DEFAULT 0.0, OKLAD DOUBLE PRECISION DEFAULT 0.0, D1 DOUBLE PRECISION DEFAULT 0.0, D2 DOUBLE PRECISION DEFAULT 0.0, D3 DOUBLE PRECISION DEFAULT 0.0, D4 DOUBLE PRECISION DEFAULT 0.0, D5 DOUBLE PRECISION DEFAULT 0.0, D6 DOUBLE PRECISION DEFAULT 0.0, D7 DOUBLE PRECISION DEFAULT 0.0, D8 DOUBLE PRECISION DEFAULT 0.0, D9 DOUBLE PRECISION DEFAULT 0.0, D10 DOUBLE PRECISION DEFAULT 0.0, D11 DOUBLE PRECISION DEFAULT 0.0, D12 DOUBLE PRECISION DEFAULT 0.0, D13 DOUBLE PRECISION DEFAULT 0.0, D14 DOUBLE PRECISION DEFAULT 0.0, D15 DOUBLE PRECISION DEFAULT 0.0, D16 DOUBLE PRECISION DEFAULT 0.0, D17 DOUBLE PRECISION DEFAULT 0.0, D18 DOUBLE PRECISION DEFAULT 0.0, D19 DOUBLE PRECISION DEFAULT 0.0, D20 DOUBLE PRECISION DEFAULT 0.0, D21 DOUBLE PRECISION DEFAULT 0.0, D22 DOUBLE PRECISION DEFAULT 0.0, D23 DOUBLE PRECISION DEFAULT 0.0, D24 DOUBLE PRECISION DEFAULT 0.0, D25 DOUBLE PRECISION DEFAULT 0.0, D26 DOUBLE PRECISION DEFAULT 0.0, D27 DOUBLE PRECISION DEFAULT 0.0, D28 DOUBLE PRECISION DEFAULT 0.0, D29 DOUBLE PRECISION DEFAULT 0.0, D30 DOUBLE PRECISION DEFAULT 0.0, D31 DOUBLE PRECISION DEFAULT 0.0, WTIME DOUBLE PRECISION DEFAULT 0.0, TIMEHLD DOUBLE PRECISION DEFAULT 0.0, TIMEWKN DOUBLE PRECISION DEFAULT 0.0, TIMEWRK DOUBLE PRECISION DEFAULT 0.0, TIMENGT DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SSUMMA DOUBLE PRECISION DEFAULT 0.0, T1 INTEGER DEFAULT 0 NOT NULL, T2 INTEGER DEFAULT 0 NOT NULL, T3 INTEGER DEFAULT 0 NOT NULL, T4 INTEGER DEFAULT 0 NOT NULL, T5 INTEGER DEFAULT 0 NOT NULL, T6 INTEGER DEFAULT 0 NOT NULL, T7 INTEGER DEFAULT 0 NOT NULL, T8 INTEGER DEFAULT 0 NOT NULL, T9 INTEGER DEFAULT 0 NOT NULL, T10 INTEGER DEFAULT 0 NOT NULL, T11 INTEGER DEFAULT 0 NOT NULL, T12 INTEGER DEFAULT 0 NOT NULL, T13 INTEGER DEFAULT 0 NOT NULL, T14 INTEGER DEFAULT 0 NOT NULL, T15 INTEGER DEFAULT 0 NOT NULL, T16 INTEGER DEFAULT 0 NOT NULL, T17 INTEGER DEFAULT 0 NOT NULL, T18 INTEGER DEFAULT 0 NOT NULL, T19 INTEGER DEFAULT 0 NOT NULL, T20 INTEGER DEFAULT 0 NOT NULL, T21 INTEGER DEFAULT 0 NOT NULL, T22 INTEGER DEFAULT 0 NOT NULL, T23 INTEGER DEFAULT 0 NOT NULL, T24 INTEGER DEFAULT 0 NOT NULL, T25 INTEGER DEFAULT 0 NOT NULL, T26 INTEGER DEFAULT 0 NOT NULL, T27 INTEGER DEFAULT 0 NOT NULL, T28 INTEGER DEFAULT 0 NOT NULL, T29 INTEGER DEFAULT 0 NOT NULL, T30 INTEGER DEFAULT 0 NOT NULL, T31 INTEGER DEFAULT 0 NOT NULL, CARDACCNUSE SMALLINT DEFAULT 0, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTCALCSLVFOT ( ID INTEGER NOT NULL, SLVID INTEGER, FOTID INTEGER, INCRID INTEGER, CSUMMA DOUBLE PRECISION DEFAULT 0 ); CREATE TABLE ZPLTCALENDARBASE ( ID INTEGER NOT NULL, CJEAR INTEGER, M1 INTEGER, M2 INTEGER, M3 INTEGER, M4 INTEGER, M5 INTEGER, M6 INTEGER, M7 INTEGER, M8 INTEGER, M9 INTEGER, M10 INTEGER, M11 INTEGER, M12 INTEGER ); CREATE TABLE ZPLTDECR ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(20), COD VARCHAR(5) DEFAULT '' NOT NULL, TYP INTEGER, SUMMA DOUBLE PRECISION, PROC DOUBLE PRECISION, SUM1 DOUBLE PRECISION, PROC1 DOUBLE PRECISION, SUM2 DOUBLE PRECISION, PROC2 DOUBLE PRECISION, SUM3 DOUBLE PRECISION, PROC3 DOUBLE PRECISION, SUM4 DOUBLE PRECISION, PROC4 DOUBLE PRECISION, SUM5 DOUBLE PRECISION, PROC5 DOUBLE PRECISION, SUM6 DOUBLE PRECISION, PROC6 DOUBLE PRECISION, SYSTEM_FLAG INTEGER DEFAULT 0, ORGNID INTEGER, PRIORITY INTEGER DEFAULT 0, GRIDTYP INTEGER, SUMM1 DOUBLE PRECISION, SUMM2 DOUBLE PRECISION, SUMM3 DOUBLE PRECISION, SUMM4 DOUBLE PRECISION, SUMM5 DOUBLE PRECISION, SUMM6 DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, AVANS INTEGER DEFAULT 0, ROUNDTYP INTEGER DEFAULT 0, GRID1 INTEGER DEFAULT 0 NOT NULL, GRID2 INTEGER DEFAULT 0 NOT NULL, GRID3 INTEGER DEFAULT 0 NOT NULL, GRID4 INTEGER DEFAULT 0 NOT NULL, GRID5 INTEGER DEFAULT 0 NOT NULL, GRID6 INTEGER DEFAULT 0 NOT NULL, INCLBL SMALLINT DEFAULT 0 ); CREATE TABLE ZPLTDECRFOT ( ID INTEGER NOT NULL, NAME VARCHAR(255), TYP INTEGER, SUMMA DOUBLE PRECISION, PROC DOUBLE PRECISION, SUM1 DOUBLE PRECISION, PROC1 DOUBLE PRECISION, SUM2 DOUBLE PRECISION, PROC2 DOUBLE PRECISION, SUM3 DOUBLE PRECISION, PROC3 DOUBLE PRECISION, SUM4 DOUBLE PRECISION, PROC4 DOUBLE PRECISION, SUM5 DOUBLE PRECISION, PROC5 DOUBLE PRECISION, SUM6 DOUBLE PRECISION, PROC6 DOUBLE PRECISION, ORGNID INTEGER, GRIDTYP INTEGER, SUMM1 DOUBLE PRECISION, SUMM2 DOUBLE PRECISION, SUMM3 DOUBLE PRECISION, SUMM4 DOUBLE PRECISION, SUMM5 DOUBLE PRECISION, SUMM6 DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, SYSTEM_FLAG INTEGER, COD VARCHAR(20) ); CREATE TABLE ZPLTDECRINCR ( ID INTEGER NOT NULL, DECRID INTEGER, INCRID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTDECRPRSN ( ID INTEGER NOT NULL, PRSNID INTEGER, DECRID INTEGER, SUMMA DOUBLE PRECISION, PROC DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTFOTGRP ( ID INTEGER NOT NULL, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTFOTGRPREF ( ID INTEGER NOT NULL, GRPID INTEGER NOT NULL, FOTID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTGRPPRSNMST ( ID INTEGER NOT NULL, OURORGNID INTEGER, NAME VARCHAR(255), PODRID INTEGER, INCR1ID INTEGER, INCR2ID INTEGER, INCR3ID INTEGER, ZCALCTYP INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTGRPPRSNSLV ( ID INTEGER NOT NULL, MSTID INTEGER, PRSNID INTEGER, POSTID INTEGER, CATEGORY INTEGER DEFAULT 0 NOT NULL, TSUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, KTU DOUBLE PRECISION DEFAULT 1.0, INCR1ID INTEGER, INCR2ID INTEGER, INCR3ID INTEGER, LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, USERNAME VARCHAR(20) ); CREATE TABLE ZPLTINCR ( ID INTEGER NOT NULL, NAME VARCHAR(255), CODE VARCHAR(20), COD VARCHAR(5) DEFAULT '' NOT NULL, TYP INTEGER DEFAULT 0, SUMMA DOUBLE PRECISION DEFAULT 0.0, PROC DOUBLE PRECISION DEFAULT 0.0, SUM1 DOUBLE PRECISION DEFAULT 0.0, PROC1 DOUBLE PRECISION DEFAULT 0.0, SUM2 DOUBLE PRECISION DEFAULT 0.0, PROC2 DOUBLE PRECISION DEFAULT 0.0, SUM3 DOUBLE PRECISION DEFAULT 0.0, PROC3 DOUBLE PRECISION DEFAULT 0.0, SUM4 DOUBLE PRECISION DEFAULT 0.0, PROC4 DOUBLE PRECISION DEFAULT 0.0, SUM5 DOUBLE PRECISION DEFAULT 0.0, PROC5 DOUBLE PRECISION DEFAULT 0.0, SUM6 DOUBLE PRECISION DEFAULT 0.0, PROC6 DOUBLE PRECISION DEFAULT 0.0, SYSTEM_FLAG INTEGER DEFAULT 0, PRIORITY INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTINCRFOT ( ID INTEGER NOT NULL, INCRID INTEGER NOT NULL, FOTID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTINCRINCR ( ID INTEGER NOT NULL, MINCRID INTEGER NOT NULL, DINCRID INTEGER NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTINCRPRSN ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, INCRID INTEGER NOT NULL, SUMMA DOUBLE PRECISION, PROC DOUBLE PRECISION, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTJOBGRPJOB ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, JOBID INTEGER NOT NULL, PRICE DOUBLE PRECISION, QUANT DOUBLE PRECISION, TSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PPROC DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL ); CREATE TABLE ZPLTJOBGRPMST ( ID INTEGER NOT NULL, NAME VARCHAR(255), MSTID INTEGER NOT NULL, BRIGADEID INTEGER, ORGNINFOID INTEGER, ORGNID INTEGER, ZCALCTYP INTEGER DEFAULT 0 NOT NULL, PPROC DOUBLE PRECISION DEFAULT 0.0 NOT NULL, NORMWTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, CSDTKTHBID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp, CODE VARCHAR(20) ); CREATE TABLE ZPLTJOBGRPPRSN ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, PRSNSLVID INTEGER NOT NULL, KTU DOUBLE PRECISION DEFAULT 1.0, INCR1ID INTEGER, INCR2ID INTEGER, INCR3ID INTEGER, TSUMM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, WTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, TSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, DSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, PSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTJOBPRSNMST ( ID INTEGER NOT NULL, NAME VARCHAR(255), MSTID INTEGER, INCR1ID INTEGER, INCR2ID INTEGER, INCR3ID INTEGER, ORGNID INTEGER, ORGNINFOID INTEGER, CSDTKTHBID INTEGER, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTJOBPRSNSLV ( ID INTEGER NOT NULL, MSTID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, JOBID INTEGER NOT NULL, PRICE DOUBLE PRECISION, QUANT DOUBLE PRECISION, PPROC DOUBLE PRECISION, SUMMA COMPUTED BY ((Price * Quant) + (Price * Quant) / 100.00 * CoalEsce(PProc, 0.00)), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTJOBSLIST ( ID INTEGER NOT NULL, CODE VARCHAR(20), NAME VARCHAR(255), PRICE DOUBLE PRECISION, INCRID INTEGER, HBGDID INTEGER, BARCODE VARCHAR(20), GROU_ SMALLINT DEFAULT 0, OWNER INTEGER, NTIME DOUBLE PRECISION DEFAULT 0.0, RND DOUBLE PRECISION DEFAULT 0.0, FIX_PRICE SMALLINT DEFAULT 0, USERID INTEGER, LASTEDIT TIMESTAMP DEFAULT current_timestamp ); CREATE TABLE ZPLTPLATACCR ( ID INTEGER NOT NULL, PLATID INTEGER NOT NULL, ACCNID INTEGER NOT NULL ); CREATE TABLE ZPLTPLATMST ( ID INTEGER NOT NULL, OURORGNID INTEGER, DAT_ TIMESTAMP, NBR DMN_NBR, MSTID INTEGER, COMMENT VARCHAR(255), BDATE TIMESTAMP, EDATE TIMESTAMP, CLOSED INTEGER DEFAULT 0, OPERID INTEGER, KASSID INTEGER, AVANS INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTPLATSLV ( ID INTEGER NOT NULL, MSTID INTEGER, PRSNID INTEGER NOT NULL, CSLVID INTEGER, SUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SSUMMA DOUBLE PRECISION DEFAULT 0.0 NOT NULL, SDATE TIMESTAMP, DSUMMA DOUBLE PRECISION DEFAULT 0 NOT NULL, DDATE TIMESTAMP, DPN INTEGER DEFAULT 0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTPRSNDPN ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, PSLVID INTEGER, DDATE TIMESTAMP, DSUMMA DOUBLE PRECISION DEFAULT 0.0, SDATE TIMESTAMP, SSUMMA DOUBLE PRECISION DEFAULT 0.0, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTSERTMEDIC ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, BDATE TIMESTAMP, EDATE TIMESTAMP, TYP INTEGER DEFAULT 0 NOT NULL, DOCNBR DMN_NBR, DOCDATE TIMESTAMP, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTSERTVACAT ( ID INTEGER NOT NULL, PRSNID INTEGER NOT NULL, BDATE TIMESTAMP, EDATE TIMESTAMP, TYP INTEGER DEFAULT 0 NOT NULL, DOCNBR DMN_NBR, DOCDATE TIMESTAMP, COMMENT VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTSLVDAYCOMMENT ( ID INTEGER NOT NULL, SLVID INTEGER NOT NULL, CDAY INTEGER NOT NULL, COMMENT VARCHAR(255) ); CREATE TABLE ZPLTTABEL ( ID INTEGER NOT NULL, NAME VARCHAR(255), USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); CREATE TABLE ZPLTTABELPLAN ( ID INTEGER NOT NULL, OURORGNID INTEGER NOT NULL, TABELID INTEGER NOT NULL, BDATE TIMESTAMP, EDATE TIMESTAMP, D1 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D2 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D3 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D4 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D5 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D6 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D7 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D8 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D9 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D10 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D11 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D12 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D13 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D14 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D15 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D16 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D17 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D18 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D19 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D20 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D21 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D22 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D23 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D24 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D25 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D26 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D27 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D28 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D29 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D30 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, D31 DOUBLE PRECISION DEFAULT 0.0 NOT NULL, T1 INTEGER DEFAULT 0 NOT NULL, T2 INTEGER DEFAULT 0 NOT NULL, T3 INTEGER DEFAULT 0 NOT NULL, T4 INTEGER DEFAULT 0 NOT NULL, T5 INTEGER DEFAULT 0 NOT NULL, T6 INTEGER DEFAULT 0 NOT NULL, T7 INTEGER DEFAULT 0 NOT NULL, T8 INTEGER DEFAULT 0 NOT NULL, T9 INTEGER DEFAULT 0 NOT NULL, T10 INTEGER DEFAULT 0 NOT NULL, T11 INTEGER DEFAULT 0 NOT NULL, T12 INTEGER DEFAULT 0 NOT NULL, T13 INTEGER DEFAULT 0 NOT NULL, T14 INTEGER DEFAULT 0 NOT NULL, T15 INTEGER DEFAULT 0 NOT NULL, T16 INTEGER DEFAULT 0 NOT NULL, T17 INTEGER DEFAULT 0 NOT NULL, T18 INTEGER DEFAULT 0 NOT NULL, T19 INTEGER DEFAULT 0 NOT NULL, T20 INTEGER DEFAULT 0 NOT NULL, T21 INTEGER DEFAULT 0 NOT NULL, T22 INTEGER DEFAULT 0 NOT NULL, T23 INTEGER DEFAULT 0 NOT NULL, T24 INTEGER DEFAULT 0 NOT NULL, T25 INTEGER DEFAULT 0 NOT NULL, T26 INTEGER DEFAULT 0 NOT NULL, T27 INTEGER DEFAULT 0 NOT NULL, T28 INTEGER DEFAULT 0 NOT NULL, T29 INTEGER DEFAULT 0 NOT NULL, T30 INTEGER DEFAULT 0 NOT NULL, T31 INTEGER DEFAULT 0 NOT NULL, WTIME DOUBLE PRECISION DEFAULT 0.0 NOT NULL, USERNAME VARCHAR(20), LASTEDIT TIMESTAMP DEFAULT Current_TimeStamp ); /******************************************************************************/ /*** Views ***/ /******************************************************************************/ /* View: V_BDG_ITEM */ CREATE VIEW V_BDG_ITEM( ID, NAME, CODE, GROU_, OWNER, CHILD_COUNT, ATYPE, KIND, RESULT_TYPE, COSTS_TYPE, WORK_TYPE, COMMENT, REC_DISABLED, RESULT_TYPE_NAME, WORK_TYPE_NAME, COSTS_TYPE_NAME, KIND_NAME) AS select id, name, code, grou_, owner, child_count, atype, kind, result_type, costs_type, work_type, comment, rec_disabled, case grou_ when 1 then case atype when 1 /* денежные средства */ then case result_type when 1 then cast('Поступление' as varchar(40)) when -1 then cast('Выбытие' as varchar(40)) else cast('' as varchar(40)) end else /* доходы / затраты */ case result_type when 1 then cast('Доходы' as varchar(40)) when -1 then cast('Затраты' as varchar(40)) else cast('' as varchar(40)) end end else cast('' as varchar(40)) end result_type_name, case when (grou_ = 1 and result_type = -1) then case work_type when 0 then cast('Производственные прямые' as varchar(40)) when 1 then cast('Производственные косвенные' as varchar(40)) when 2 then cast('Непроизводственные' as varchar(40)) else cast('' as varchar(40)) end else cast('' as varchar(40)) end work_type_name, case when (grou_ = 1 and result_type = -1) then case costs_type when 0 then cast('Постоянные' as varchar(40)) when 1 then cast('Переменные' as varchar(40)) else cast('' as varchar(40)) end else cast('' as varchar(40)) end costs_type_name, case kind when 0 then cast('Основная' as varchar(40)) when 1 then cast('Финансовая' as varchar(40)) when 2 then cast('Инвестиционная' as varchar(40)) else cast('' as varchar(40)) end kind_name from bdg_item ; /* View: V_BDG_ITEM_SRC_TYPE_NAME */ CREATE VIEW V_BDG_ITEM_SRC_TYPE_NAME( ID, NAME) AS select cast(0 as integer ) id, cast('Регистрация суммы' as varchar(40)) name from rdb$database union select cast(1 as integer ) id, cast('Реализация продукции' as varchar(40)) name from rdb$database union select cast(2 as integer ) id, cast('Закупка сырья' as varchar(40)) name from rdb$database union select cast(3 as integer ) id, cast('Реализация товаров' as varchar(40)) name from rdb$database union select cast(4 as integer ) id, cast('Реализация услуг' as varchar(40)) name from rdb$database ; /* View: V_BDG_LIST_DATA_TYPE */ CREATE VIEW V_BDG_LIST_DATA_TYPE( ID, NAME) AS select cast(1 as integer), cast('Поступление денег' as varchar(80)) from rdb$database union select cast(2 as integer), cast('Выбытие денег' as varchar(80)) from rdb$database union select cast(10 as integer), cast('Доходы' as varchar(80)) from rdb$database --union --select cast(11 as integer), cast('Доходы от реализации продукции' as varchar(80)) from rdb$database --union --select cast(12 as integer), cast('Доходы от реализации товаров' as varchar(80)) from rdb$database --union --select cast(13 as integer), cast('Доходы от реализации услуг' as varchar(80)) from rdb$database union select cast(20 as integer), cast('Затраты' as varchar(80)) from rdb$database --union --select cast(21 as integer), cast('Затраты на ТМЦ и МБП' as varchar(80)) from rdb$database union select cast(30 as integer), cast('Производство' as varchar(80)) from rdb$database ; /* View: V_CTLG_DISTR */ CREATE VIEW V_CTLG_DISTR( ITEM_ID, DISTR_CLIENT, PERSONAL_ID, ORGN_ID, DISTR_DATE, DISTR_PERIOD, DISTR_RETURN, DISTR_INFO) AS select ITEM_ID, DISTR_CLIENT, PERSONAL_ID, ORGN_ID, DISTR_DATE, DISTR_PERIOD, DISTR_RETURN, DISTR_INFO from ctlgdistr where distr_return is null ; /* View: V_CTLG_GOODS */ CREATE VIEW V_CTLG_GOODS( ID, NAME) AS select distinct g.id, g.name from ctlgitem c left join goods g on g.id = c.goods_id ; /******************************************************************************/ /*** Check constraints ***/ /******************************************************************************/ ALTER TABLE BDG_ITEM ADD CONSTRAINT CHK_BDG_ITEM_KIND CHECK(KIND IN (0, 1, 2)); ALTER TABLE BDG_ITEM ADD CONSTRAINT CHK_BDG_ITEM_RESULT_TYPE CHECK(RESULT_TYPE IN (1, -1)); ALTER TABLE BDG_PAPER ADD CONSTRAINT CHK_BDG_PAPER_ATYPE CHECK((ATYPE in (0,1) and (ITEM_ID is not null) and (DIRECTION_ID is not null)) or (ATYPE = 2)); ALTER TABLE BDG_SCHEME_OPER ADD CONSTRAINT CHK_BDG_SCHEME_OPER CHECK((VAL_ORDER_ID IS NULL) OR (ORDER_ID <> VAL_ORDER_ID)); ALTER TABLE BDG_SCHEME_ORDER ADD CONSTRAINT CHK_BDG_SCHEME_ORDER CHECK((GROU_ in (0, 2)) OR ((GROU_ = 1) AND (OWNER IS NOT NULL))); ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_CHK_SUMMA CHECK(SUMMA <> 0.0); ALTER TABLE MAINMEAN ADD CONSTRAINT MAINMEAN_CHK_OUT_DATE CHECK(Out_Date is Null or Out_Date >= DAT_); ALTER TABLE ZPLTSLVDAYCOMMENT ADD CONSTRAINT ZPLTSLVDAYCOMMENT_CHK_CDAY CHECK(CDAY >= 1 and CDAY <= 31); /******************************************************************************/ /*** Unique constraints ***/ /******************************************************************************/ ALTER TABLE ACCNPLAN ADD CONSTRAINT ACCNPLAN_ACCN UNIQUE (ACCN); ALTER TABLE BDG_BASIS_PORTION ADD CONSTRAINT UNQ_BDG_BASIS_PORTION_BG UNIQUE (BASIS_ID, GOODS_ID); ALTER TABLE BDG_DATA_STATE ADD CONSTRAINT UNQ_BDG_DATA_STATE UNIQUE (PERIOD_ID, PLAN_ID, ATYPE); ALTER TABLE BDG_DISTR_ORDER ADD CONSTRAINT UNQ_BDG_DISTR_ORDER_NBR UNIQUE (NBR, DISTR_ID); ALTER TABLE BDG_DISTR_PORTION ADD CONSTRAINT UNQ_BDG_DISTR_PORTION UNIQUE (DISTR_BASIS_ID, PERIOD_ID, CENTER_ID); ALTER TABLE BDG_INDICATOR ADD CONSTRAINT UNQ_BDG_INDICATOR UNIQUE (NAME); ALTER TABLE BDG_IND_VAL ADD CONSTRAINT UNQ_BDG_IND_VAL UNIQUE (INDICATOR_ID, PERIOD_ID, PLAN_ID); ALTER TABLE BDG_LINK_ITEM_CENTER ADD CONSTRAINT UNQ_BDG_LINK_ITEM_CENTER UNIQUE (ITEM_ID, CENTER_ID); ALTER TABLE BDG_LINK_PAPER_ATTR_VAL ADD CONSTRAINT UNQ_BDG_LINK_PAPER_ATTR_VAL UNIQUE (PAPER_ID, ATTR_VAL_ID); ALTER TABLE BDG_LINK_USER_CENTER ADD CONSTRAINT UNQ_BDG_LINK_USER_CENTER UNIQUE (USER_ID, CENTER_ID); ALTER TABLE BDG_LINK_USER_DIRECTION ADD CONSTRAINT UNQ_BDG_LINK_USER_DIRECTION UNIQUE (USER_ID, DIRECTION_ID); ALTER TABLE BDG_PRICE_GOODS ADD CONSTRAINT UNQ_BDG_PRICE_GOODS UNIQUE (GOODS_ID, PRICE_ID, PERIOD_ID); ALTER TABLE BDG_SCHEME_OPER ADD CONSTRAINT UNQ_BDG_SCHEME_OPER UNIQUE (NBR, ORDER_ID); ALTER TABLE CRDS_AVLGOODS ADD CONSTRAINT UNQ_CRDS_AVLGOODS1 UNIQUE (STORE_ID, GOODS_ID); ALTER TABLE CTLGGOODS ADD CONSTRAINT UNQ_CTLGGOODS UNIQUE (GOODS_ID); ALTER TABLE CTLGITEM ADD CONSTRAINT UNQ_CTLGITEM UNIQUE (GOODS_ID, ITEM_NUMBER); ALTER TABLE CURRSTORDAYS ADD CONSTRAINT CURRSTORDAYS_ACCNID_DAT_ UNIQUE (ACCNID, DAT_); ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_UNQ UNIQUE (DAT_, STOR); ALTER TABLE DK_ACCESSCOMMAND ADD CONSTRAINT UQ_DK_ACCESSCOMMAND_NAME UNIQUE (NAME); ALTER TABLE DK_ACCESSDATA ADD CONSTRAINT UQ_DK_ACCESSDATA_NAME UNIQUE (NAME); ALTER TABLE DK_COMMAND ADD CONSTRAINT UQ_DK_COMMAND_NAME UNIQUE (NAME); ALTER TABLE DK_DATA ADD CONSTRAINT UQ_DK_DATA_NAME UNIQUE (NAME); ALTER TABLE DK_LANGUAGE ADD UNIQUE (NAME); ALTER TABLE DK_MAILINGTHEMES ADD CONSTRAINT UQ_DK_MAILINGTHEMES_NAME UNIQUE (NAME); ALTER TABLE DK_MAILINGTYPES ADD CONSTRAINT UQ_DK_MAILINGTYPES_NAME UNIQUE (NAME); ALTER TABLE DK_PRSNGRP ADD UNIQUE (NAME); ALTER TABLE FUNCMANAGE ADD CONSTRAINT UNQ_FUNCMANAGE_CODE UNIQUE (CODE); ALTER TABLE FUNCSUPPORT ADD CONSTRAINT UNQ_FUNCSUPPORT_CODE UNIQUE (CODE); ALTER TABLE GDSPARAMGDSREF ADD CONSTRAINT GDSPARAMGDSREF_GDSPRM UNIQUE (GOODSID, PARAMID); ALTER TABLE HBONE ADD CONSTRAINT HBONE_UNQ_NAME UNIQUE (NAME); ALTER TABLE KASSDAYS ADD CONSTRAINT KASSDAYS_KASSID_DAT_ UNIQUE (KASSID, DAT_); ALTER TABLE MBPMEAN ADD CONSTRAINT MBPMEAN_UNQ UNIQUE (GODSID, OURORGNID); ALTER TABLE OBJ_MSGREAD ADD CONSTRAINT OBJ_MSGREAD_UNQ UNIQUE (MSGID, USERID); ALTER TABLE ORGNGRPOPEMAIL ADD CONSTRAINT ORGNGRPOPEMAIL_UNQ1 UNIQUE (ORGNGRPID, OPERID); ALTER TABLE ORGN_GRPHIDE ADD CONSTRAINT ORGN_GRPHIDE_USERID_GRPID UNIQUE (USERID, GRPID) USING INDEX ORGN_GRPHIDE_UNQ1; ALTER TABLE PRSNOPEMAIL ADD CONSTRAINT PRSNOPEMAIL_UNQ_PRSNID_OPERID UNIQUE (PRSNID, OPERID); ALTER TABLE STORLIST ADD CONSTRAINT STORLIST_UNQ UNIQUE (OURORGNID, NAME); ALTER TABLE SUB ADD CONSTRAINT SUB_UNIQUE UNIQUE (OURORGNID, ACCN, AN, SUBKEY); ALTER TABLE USERDCATEGORY ADD CONSTRAINT UNQ_USERDCATEGORY UNIQUE (DCATEGORYID, USERID); ALTER TABLE USERDDOCFOLDER ADD CONSTRAINT UNQ_USERDDOCFOLDER UNIQUE (USERID, DDOCFOLDERID); ALTER TABLE USERDGRP ADD CONSTRAINT UNQ_USERDGRP UNIQUE (USERID, DGRPID); ALTER TABLE USERLIST ADD CONSTRAINT USERLIST_NAME UNIQUE (NAME); ALTER TABLE USERPRLS ADD CONSTRAINT USERPRLS_USERID_PRLSID UNIQUE (USERID, PRLSID); ALTER TABLE USER_RIGHT ADD CONSTRAINT UNQ_USER_RIGHT UNIQUE (ORGN_ID, USER_ID, RIGHT_CODE); ALTER TABLE WORKMAIN ADD CONSTRAINT WORKMAIN_UNQ UNIQUE (GODSID); /******************************************************************************/ /*** Primary keys ***/ /******************************************************************************/ ALTER TABLE ACCNDOC ADD CONSTRAINT ACCNDOC_PK PRIMARY KEY (ID); ALTER TABLE ACCNPLAN ADD CONSTRAINT ACCNPLAN_PK PRIMARY KEY (ID); ALTER TABLE ACCNPROV ADD CONSTRAINT ACCNPROV_PK PRIMARY KEY (ID); ALTER TABLE ACOPRLST ADD CONSTRAINT ACOPRLST_PK PRIMARY KEY (ID); ALTER TABLE BANKMFO ADD CONSTRAINT BANKMFO_PK PRIMARY KEY (ID); ALTER TABLE BDG_ATTR ADD CONSTRAINT PK_BDG_ATTR PRIMARY KEY (ID); ALTER TABLE BDG_ATTR_VAL ADD CONSTRAINT PK_BDG_ATTR_VAL PRIMARY KEY (ID); ALTER TABLE BDG_BASIS ADD CONSTRAINT PK_BDG_BASIS PRIMARY KEY (ID); ALTER TABLE BDG_BASIS_PORTION ADD CONSTRAINT PK_BDG_BASIS_PORTION PRIMARY KEY (ID); ALTER TABLE BDG_CALC ADD CONSTRAINT PK_BDG_CALC PRIMARY KEY (ID); ALTER TABLE BDG_CALC_DATA ADD CONSTRAINT PK_BDG_CALC_DATA PRIMARY KEY (ID); ALTER TABLE BDG_CALC_GOODS ADD CONSTRAINT PK_BDG_CALC_GOODS PRIMARY KEY (ID); ALTER TABLE BDG_CALC_ORDER ADD CONSTRAINT PK_BDG_CALC_ORDER PRIMARY KEY (ID); ALTER TABLE BDG_CENTER ADD CONSTRAINT FK_BDG_CENTER PRIMARY KEY (ID); ALTER TABLE BDG_DATA_STATE ADD CONSTRAINT PK_BDG_DATA_STATE PRIMARY KEY (ID); ALTER TABLE BDG_DIRECTION ADD CONSTRAINT PK_BDG_DIRECTION PRIMARY KEY (ID); ALTER TABLE BDG_DISTR ADD CONSTRAINT PK_BDG_DISTR PRIMARY KEY (ID); ALTER TABLE BDG_DISTR_BASIS ADD CONSTRAINT PK_BDG_DISTR_BASIS PRIMARY KEY (ID); ALTER TABLE BDG_DISTR_ORDER ADD CONSTRAINT PK_BDG_DISTR_ORDER PRIMARY KEY (ID); ALTER TABLE BDG_DISTR_PORTION ADD CONSTRAINT PK_BDG_DISTR_PORTION PRIMARY KEY (ID); ALTER TABLE BDG_DOC ADD CONSTRAINT PK_BDG_DOC PRIMARY KEY (ID); ALTER TABLE BDG_GOODS ADD CONSTRAINT PK_BDG_GOODS PRIMARY KEY (ID); ALTER TABLE BDG_INDICATOR ADD CONSTRAINT PK_BDG_INDICATOR PRIMARY KEY (ID); ALTER TABLE BDG_IND_VAL ADD CONSTRAINT PK_BDG_IND_VAL PRIMARY KEY (ID); ALTER TABLE BDG_ITEM ADD CONSTRAINT PK_BDG_ITEM PRIMARY KEY (ID); ALTER TABLE BDG_LINK_ITEM_CENTER ADD CONSTRAINT PK_BDG_LINK_ITEM_CENTER PRIMARY KEY (ID); ALTER TABLE BDG_LINK_PAPER_ATTR_VAL ADD CONSTRAINT PK_BDG_LINK_PAPER_ATTR_VAL PRIMARY KEY (ID); ALTER TABLE BDG_LINK_USER_CENTER ADD CONSTRAINT PK_BDG_LINK_USER_CENTER PRIMARY KEY (ID); ALTER TABLE BDG_LINK_USER_DIRECTION ADD CONSTRAINT PK_BDG_LINK_USER_DIRECTION PRIMARY KEY (ID); ALTER TABLE BDG_PAPER ADD CONSTRAINT PK_BDG_PAPER PRIMARY KEY (ID); ALTER TABLE BDG_PERIOD ADD CONSTRAINT PK_BDG_PERIOD PRIMARY KEY (ID); ALTER TABLE BDG_PLAN ADD CONSTRAINT PK_BDG_PLAN PRIMARY KEY (ID); ALTER TABLE BDG_PRICE ADD CONSTRAINT PK_BDG_PRICE PRIMARY KEY (ID); ALTER TABLE BDG_PRICE_GOODS ADD CONSTRAINT PK_BDG_PRICE_GOODS PRIMARY KEY (ID); ALTER TABLE BDG_SCHEME ADD CONSTRAINT PK_BDG_SCHEME PRIMARY KEY (ID); ALTER TABLE BDG_SCHEME_OPER ADD CONSTRAINT PK_BDG_SCHEME_OPER PRIMARY KEY (ID); ALTER TABLE BDG_SCHEME_ORDER ADD CONSTRAINT PK_BDG_SCHEME_ORDER PRIMARY KEY (ID); ALTER TABLE BDG_SERV ADD CONSTRAINT PK_BDG_SERV PRIMARY KEY (ID); ALTER TABLE BDG_SHEDULE ADD CONSTRAINT PK_BDG_SHEDULE PRIMARY KEY (ID); ALTER TABLE BDG_SHEDULE_SHIFT ADD CONSTRAINT PK_BDG_SHEDULE_SHIFT PRIMARY KEY (ID); ALTER TABLE BDG_WGOODS ADD CONSTRAINT PK_BDG_WGOODS PRIMARY KEY (ID); ALTER TABLE BDG_WPAPER ADD CONSTRAINT PK_BDG_WPAPER PRIMARY KEY (ID); ALTER TABLE BOOKSLDT ADD CONSTRAINT BOOKSLDT_PK PRIMARY KEY (ID); ALTER TABLE BOOKSLDTACCR ADD CONSTRAINT BOOKSLDTACCR_PK PRIMARY KEY (ID); ALTER TABLE BOOKSLDTDAYS ADD CONSTRAINT BOOKSLDTDAYS_PK PRIMARY KEY (ID); ALTER TABLE BOOKSLKT ADD CONSTRAINT BOOKSLKT_PK PRIMARY KEY (ID); ALTER TABLE BOOKSLKTACCR ADD CONSTRAINT BOOKSLKTACCR_PK PRIMARY KEY (ID); ALTER TABLE BOOKSLKTDAYS ADD CONSTRAINT BOOKSLKTDAYS_PK PRIMARY KEY (ID); ALTER TABLE CONTACTS ADD CONSTRAINT CONTACTS_PK PRIMARY KEY (ID); ALTER TABLE CRDS_AVLGOODS ADD CONSTRAINT PK_CRDS_AVLGOODS PRIMARY KEY (ID); ALTER TABLE CRDS_DGVDT ADD CONSTRAINT PK_CRDS_DGVDT PRIMARY KEY (ID); ALTER TABLE CRDS_DGVKT ADD CONSTRAINT PK_CRDS_DGVKT PRIMARY KEY (ID); ALTER TABLE CRDS_GDDDT ADD CONSTRAINT PK_CRDS_GDDDT PRIMARY KEY (ID); ALTER TABLE CRDS_GDDKT ADD CONSTRAINT PK_CRDS_GDDKT PRIMARY KEY (ID); ALTER TABLE CSDTKT ADD CONSTRAINT CSDTKT_PK PRIMARY KEY (ID); ALTER TABLE CSDTKTHB ADD CONSTRAINT CSDTKTHB_PK PRIMARY KEY (ID); ALTER TABLE CTLGENTITY ADD CONSTRAINT PK_CTLGENTITY PRIMARY KEY (ENTITY_ID); ALTER TABLE CTLGITEM ADD CONSTRAINT PK_CTLGITEM PRIMARY KEY (ITEM_ID); ALTER TABLE CTLGKIND ADD CONSTRAINT PK_CTLGKIND PRIMARY KEY (KIND_ID); ALTER TABLE CTLGLINK ADD CONSTRAINT PK_CTLGLINK PRIMARY KEY (ENTITY_ID, THEME_ID); ALTER TABLE CTLGTHEME ADD CONSTRAINT PK_CTLGTHEME PRIMARY KEY (THEME_ID); ALTER TABLE CURRDATA ADD CONSTRAINT CURRDATA_PK PRIMARY KEY (ID); ALTER TABLE CURRSTOR ADD CONSTRAINT CURRSTOR_PK PRIMARY KEY (ID); ALTER TABLE CURRSTORDAYS ADD CONSTRAINT CURRSTORDAYS_PK PRIMARY KEY (ID); ALTER TABLE CURRSTORDAYSACCR ADD CONSTRAINT CURRSTORDAYSACCR_PK PRIMARY KEY (ID); ALTER TABLE CURRSTORDTKT ADD CONSTRAINT CURRSTORDTKT_PK PRIMARY KEY (ID); ALTER TABLE CURRTYP ADD CONSTRAINT CURRTYP_PK PRIMARY KEY (ID); ALTER TABLE DGDTACCN ADD CONSTRAINT DGDTACCN_PK PRIMARY KEY (ID); ALTER TABLE DGDUACCN ADD CONSTRAINT DGDUACCN_PK PRIMARY KEY (ID); ALTER TABLE DGKTACCN ADD CONSTRAINT DGKTACCN_PK PRIMARY KEY (ID); ALTER TABLE DGKUACCN ADD CONSTRAINT DGKUACCN_PK PRIMARY KEY (ID); ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_PK PRIMARY KEY (ID); ALTER TABLE DGVDTKT_LOG ADD CONSTRAINT DGVDTKT_LOG_PK PRIMARY KEY (ID); ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_PK PRIMARY KEY (ID); ALTER TABLE DGVDTUD ADD CONSTRAINT DGVDTUD_PK PRIMARY KEY (ID); ALTER TABLE DGVDT_TASK ADD PRIMARY KEY (ID); ALTER TABLE DGVDUGRP ADD CONSTRAINT DGVDUGRP_PK PRIMARY KEY (ID); ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_PK PRIMARY KEY (ID); ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_PK PRIMARY KEY (ID); ALTER TABLE DGVKTU_DGVDT_REF ADD CONSTRAINT DGVKTU_DGVDT_REF_PK PRIMARY KEY (ID); ALTER TABLE DGVWK ADD CONSTRAINT DGVWK_PK PRIMARY KEY (ID); ALTER TABLE DGVWKG ADD CONSTRAINT DGVWKG_PK PRIMARY KEY (ID); ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_PK PRIMARY KEY (ID); ALTER TABLE DKBILLCOUNT ADD CONSTRAINT DKBILLCOUNT_PK PRIMARY KEY (ID); ALTER TABLE DKBILLGDS ADD CONSTRAINT DKBILLGDS_PK PRIMARY KEY (ID); ALTER TABLE DKBILLPRSN ADD CONSTRAINT DKBILLPRSN_PK PRIMARY KEY (ID); ALTER TABLE DK_ACCESSCOMMAND ADD CONSTRAINT PK_DK_ACCESSCOMMAND PRIMARY KEY (ID); ALTER TABLE DK_ACCESSCOMMANDUSERREF ADD CONSTRAINT PK_DK_ACCESSCOMMANDUSERREF PRIMARY KEY (ID); ALTER TABLE DK_ACCESSDATA ADD CONSTRAINT PK_DK_ACCESSDATA PRIMARY KEY (ID); ALTER TABLE DK_ACCESSDATAUSERREF ADD CONSTRAINT PK_DK_ACCESSDATAUSERREF PRIMARY KEY (ID); ALTER TABLE DK_BNS ADD CONSTRAINT PK_DK_BONUSES PRIMARY KEY (ID); ALTER TABLE DK_BNS_ORGN ADD CONSTRAINT PK_DK_BNS_ORGN PRIMARY KEY (ID); ALTER TABLE DK_BNS_ORGN_LOG ADD CONSTRAINT PK_DK_BNS_ORGN_LOG PRIMARY KEY (ID); ALTER TABLE DK_BNS_PRICEGOODS ADD CONSTRAINT PK_DK_BNS_PRICEGOODS PRIMARY KEY (ID); ALTER TABLE DK_BONUSACCRUAL ADD CONSTRAINT PK_DK_BONUSACCRUAL PRIMARY KEY (ID); ALTER TABLE DK_COMMAND ADD CONSTRAINT PK_DK_COMMAND PRIMARY KEY (ID); ALTER TABLE DK_DATA ADD CONSTRAINT PK_DK_DATA PRIMARY KEY (ID); ALTER TABLE DK_DISCOUNTBONUSSETGOODS ADD CONSTRAINT PK_DK_DISCOUNTBONUSSETGOODS PRIMARY KEY (ID); ALTER TABLE DK_DISCOUNTBONUSSETORGN ADD CONSTRAINT PK_DK_DISCOUNTBONUSSETORGN PRIMARY KEY (ID); ALTER TABLE DK_DISCOUNTBONUSSETS ADD CONSTRAINT PK_DK_DISCOUNTBONUSSETS PRIMARY KEY (ID); ALTER TABLE DK_DISCOUNTBONUSSETSTORGRP ADD CONSTRAINT PK_DK_DISCOUNTBONUSSETSTORGRP PRIMARY KEY (ID); ALTER TABLE DK_DSCNT ADD CONSTRAINT PK_DK_DSCNT PRIMARY KEY (ID); ALTER TABLE DK_GIFTCERTIFICATE ADD CONSTRAINT DK_GIFTCERTIFICATE_PK PRIMARY KEY (ID); ALTER TABLE DK_GODGODPAMLANREF ADD PRIMARY KEY (ID); ALTER TABLE DK_GODPAMLANREF ADD PRIMARY KEY (ID); ALTER TABLE DK_GODPAMVALLANREF ADD PRIMARY KEY (ID); ALTER TABLE DK_GOODSLANGUAGEREF ADD PRIMARY KEY (ID); ALTER TABLE DK_GOODSPACK ADD CONSTRAINT DK_GOODSPACK_PK PRIMARY KEY (ID); ALTER TABLE DK_LANGUAGE ADD PRIMARY KEY (ID); ALTER TABLE DK_MAILINGTHEMES ADD CONSTRAINT PK_DK_MAILINGTHEMES PRIMARY KEY (ID) USING INDEX IX_PK_DK_MAILINGTHEMES; ALTER TABLE DK_MAILINGTYPES ADD CONSTRAINT PK_DK_MAILINGTYPES PRIMARY KEY (ID) USING INDEX IX_PK_DK_MAILINGTYPES; ALTER TABLE DK_MAILTHEMETYPESORGNREF ADD CONSTRAINT DK_MAILTHEMETYPESORGNREF_PK PRIMARY KEY (ID); ALTER TABLE DK_MAILTYPEORGNREF ADD CONSTRAINT DK_MAILTYPEORGNREF_PK PRIMARY KEY (ID); ALTER TABLE DK_PENALPROITY ADD CONSTRAINT PK_DK_PENALPROITY PRIMARY KEY (ID); ALTER TABLE DK_PRSNGRP ADD PRIMARY KEY (ID); ALTER TABLE DK_PRSNGRPREF ADD PRIMARY KEY (ID); ALTER TABLE DOCCOMMENT ADD CONSTRAINT DOCCOMMENT_PK PRIMARY KEY (ID); ALTER TABLE DOCMCATEGORY ADD CONSTRAINT DOCMCATEGORY_PK PRIMARY KEY (ID); ALTER TABLE DOCMDOCDOCUMENT ADD CONSTRAINT DOCMDOCDOCUMENT_PK PRIMARY KEY (ID); ALTER TABLE DOCMDOCFOLDER ADD CONSTRAINT DOCMDOCFOLDER_PK PRIMARY KEY (ID); ALTER TABLE DOCMGROUPS ADD CONSTRAINT DOCMGROUPS_PK PRIMARY KEY (ID); ALTER TABLE DOCMMSG ADD CONSTRAINT DOCMMSG_PK PRIMARY KEY (ID); ALTER TABLE DOCMMSGFOLDER ADD CONSTRAINT DOCMMSGFOLDER_PK PRIMARY KEY (ID); ALTER TABLE DOCMMSGRUSERS ADD CONSTRAINT DOCMMSGRUSERS_PK PRIMARY KEY (ID); ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_PK PRIMARY KEY (ID); ALTER TABLE DOCMTASKATTACH ADD CONSTRAINT DOCMTASKATTACH_PK PRIMARY KEY (ID); ALTER TABLE DOCMTASKCATEGORY ADD CONSTRAINT DOCMTASKCATEGORY_PK PRIMARY KEY (ID); ALTER TABLE DOCMTASKCYCLE ADD CONSTRAINT PK_DOCMTASKCYCLE PRIMARY KEY (ID); ALTER TABLE DOCMTASKFINANCE ADD CONSTRAINT DOCMTASKFINANCE_PK PRIMARY KEY (ID); ALTER TABLE DOCMTASKHB ADD CONSTRAINT DOCMTASKHB_PK PRIMARY KEY (ID); ALTER TABLE DOCMTASKHBCATEGORY ADD CONSTRAINT PK_DOCMTASKHBCATEGORY PRIMARY KEY (ID); ALTER TABLE DOCMTASKSTAGE ADD CONSTRAINT DOCMTASKSTAGE_PK PRIMARY KEY (ID); ALTER TABLE DOCMTASKWORK ADD CONSTRAINT DOCMTASKWORK_PK PRIMARY KEY (ID); ALTER TABLE ECRGOODS ADD CONSTRAINT ECRGOODS_PK PRIMARY KEY (ID); ALTER TABLE EDUCATION ADD CONSTRAINT EDUCATION_PK PRIMARY KEY (ID); ALTER TABLE FRREPORT ADD CONSTRAINT FRREPORT_PK PRIMARY KEY (ID); ALTER TABLE FRREPORTTREE ADD CONSTRAINT FRREPORTTREE_PK PRIMARY KEY (ID); ALTER TABLE FRREPORTTREEUSER ADD CONSTRAINT FRPERORTTREEUSER_PK PRIMARY KEY (ID); ALTER TABLE FUNCMANAGE ADD CONSTRAINT PK_FUNCMANAGE PRIMARY KEY (ID); ALTER TABLE FUNCSUPPORT ADD CONSTRAINT PK_FUNCSUPPORT PRIMARY KEY (ID); ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_PK PRIMARY KEY (ID); ALTER TABLE GDDDTDDU ADD CONSTRAINT GDDDTDDU_PK PRIMARY KEY (ID); ALTER TABLE GDDDTPARAM ADD CONSTRAINT GDDDTPARAM_PK PRIMARY KEY (ID); ALTER TABLE GDDDTU ADD CONSTRAINT GDDDTU_PK PRIMARY KEY (ID); ALTER TABLE GDDDTUNL ADD CONSTRAINT GDDDTUNL_PK PRIMARY KEY (ID); ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_PK PRIMARY KEY (ID); ALTER TABLE GDDKTDDU ADD CONSTRAINT GDDKTDDU_PK PRIMARY KEY (ID); ALTER TABLE GDDKTPARAM ADD CONSTRAINT PK_GDDKTPARAM PRIMARY KEY (ID); ALTER TABLE GDDKTQNT ADD CONSTRAINT GDDKTQNT_PK PRIMARY KEY (ID); ALTER TABLE GDDKTU ADD CONSTRAINT GDDKTU_PK PRIMARY KEY (ID); ALTER TABLE GDDKTZKPARAMS ADD CONSTRAINT GDDKTZKPARAMS_PK PRIMARY KEY (ID); ALTER TABLE GDSKTREQ ADD CONSTRAINT PK_GDSKTREQ PRIMARY KEY (ID); ALTER TABLE GDSKTREQGDS ADD CONSTRAINT PK_GDSKTREQGDS PRIMARY KEY (ID); ALTER TABLE GDSPARAMGDSREF ADD CONSTRAINT GDSPARAMGDSREF_PK PRIMARY KEY (ID); ALTER TABLE GDSPARAMGRP ADD CONSTRAINT GDSPARAMGRP_PK PRIMARY KEY (ID); ALTER TABLE GDSPARAMGRPREF ADD CONSTRAINT GDSPARAMGRPREF_PK PRIMARY KEY (ID); ALTER TABLE GDSPARAMPRM ADD CONSTRAINT GDSPARAMPRM_PK PRIMARY KEY (ID); ALTER TABLE GDSPARAMVAL ADD CONSTRAINT GDSPARAMVAL_PK PRIMARY KEY (ID); ALTER TABLE GOODS ADD CONSTRAINT GOODS_PK PRIMARY KEY (ID); ALTER TABLE GOODSCHK ADD CONSTRAINT GOODSCHK_PK PRIMARY KEY (ID); ALTER TABLE GOODSGROUPS ADD CONSTRAINT GOODSGROUPS_PK PRIMARY KEY (ID); ALTER TABLE GOODSGRP ADD CONSTRAINT GOODSGRP_PK PRIMARY KEY (ID); ALTER TABLE GOODSPRICEPROC ADD CONSTRAINT GOODSPRICEPROC_PK PRIMARY KEY (ID); ALTER TABLE GOODS_DECRNORM ADD CONSTRAINT PK_GOODS_DECRNORM PRIMARY KEY (ID); ALTER TABLE HBDTNL ADD CONSTRAINT HBDTNL_PK PRIMARY KEY (ID); ALTER TABLE HBGDDDU ADD CONSTRAINT HBGDDDU_PK PRIMARY KEY (ID); ALTER TABLE HBKTSU ADD CONSTRAINT HBKTSU_PK PRIMARY KEY (ID); ALTER TABLE HBONE ADD CONSTRAINT HBONE_PK PRIMARY KEY (ID); ALTER TABLE HBPRSNTEST ADD CONSTRAINT FK_HBPRSNTEST PRIMARY KEY (ID); ALTER TABLE HBSERVU ADD CONSTRAINT HBSERVU_PK PRIMARY KEY (ID); ALTER TABLE HBSERVUGRP ADD CONSTRAINT HBSERVUGRP_PK PRIMARY KEY (ID); ALTER TABLE HB_VEHICLE ADD CONSTRAINT HB_VEHICLE_PK PRIMARY KEY (ID); ALTER TABLE INFOSRC ADD CONSTRAINT INFOSRC_PK PRIMARY KEY (ID); ALTER TABLE INVOPISDATA ADD CONSTRAINT INVOPISDATA_PK PRIMARY KEY (ID); ALTER TABLE INVOPISHEADER ADD CONSTRAINT INVOPISHEADER_PK PRIMARY KEY (ID); ALTER TABLE KASSACCR ADD CONSTRAINT KASSACCR_PK PRIMARY KEY (ID); ALTER TABLE KASSAVACCR ADD CONSTRAINT KASSAVACCR_PK PRIMARY KEY (ID); ALTER TABLE KASSAVCR ADD CONSTRAINT KASSAVCR_PK PRIMARY KEY (ID); ALTER TABLE KASSAVDATA ADD CONSTRAINT KASSAVDATA_PK PRIMARY KEY (ID); ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_PK PRIMARY KEY (ID); ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_PK PRIMARY KEY (ID); ALTER TABLE KASSDAYS ADD CONSTRAINT KASSDAYS_PK PRIMARY KEY (ID); ALTER TABLE KASSLIST ADD CONSTRAINT KASSLIST_PK PRIMARY KEY (ID); ALTER TABLE LANG ADD CONSTRAINT LANG_PK PRIMARY KEY (ID); ALTER TABLE "LEV" ADD CONSTRAINT LEV_PK PRIMARY KEY (ID); ALTER TABLE MAINAMCR ADD CONSTRAINT MAINAMCR_PK PRIMARY KEY (ID); ALTER TABLE MAINAMMST ADD CONSTRAINT MAINAMMST_PK PRIMARY KEY (ID); ALTER TABLE MAINAMSLV ADD CONSTRAINT MAINAMSLV_PK PRIMARY KEY (ID); ALTER TABLE MAINCRCH ADD CONSTRAINT MAINCRCH_PK PRIMARY KEY (ID); ALTER TABLE MAINGRP ADD CONSTRAINT MAINGRP_PK PRIMARY KEY (ID); ALTER TABLE MAININPAC ADD CONSTRAINT MAININPAC_PK PRIMARY KEY (ID); ALTER TABLE MAINMEAN ADD CONSTRAINT MAINMEAN_PK PRIMARY KEY (ID); ALTER TABLE MAINMEANSLV ADD CONSTRAINT MAINMEANSLV_PK PRIMARY KEY (ID); ALTER TABLE MAINMOVE ADD CONSTRAINT MAINMOVE_PK PRIMARY KEY (ID); ALTER TABLE MAINOUTAC ADD CONSTRAINT MAINOUTAC_PK PRIMARY KEY (ID); ALTER TABLE MAINPRICE ADD CONSTRAINT MAINPRICE_PK PRIMARY KEY (ID); ALTER TABLE MAINRPTINVMST ADD CONSTRAINT MAINRPTINVMST_PK PRIMARY KEY (ID); ALTER TABLE MAINRPTINVSLV ADD CONSTRAINT MAINRPTINVSLV_PK PRIMARY KEY (ID); ALTER TABLE MANAGER_PRICE_ORGN ADD CONSTRAINT PK_MANAGER_PRICE_ORGN PRIMARY KEY (ID); ALTER TABLE MBPDGAC ADD CONSTRAINT MBPDGAC_PK PRIMARY KEY (ID); ALTER TABLE MBPDGV ADD CONSTRAINT MBPDGV_PK PRIMARY KEY (ID); ALTER TABLE MBPGDD ADD CONSTRAINT MBPGDD_PK PRIMARY KEY (ID); ALTER TABLE MBPMEAN ADD CONSTRAINT MBPMEAN_PK PRIMARY KEY (ID); ALTER TABLE MDOCS ADD CONSTRAINT PK_MDOCS PRIMARY KEY (ID); ALTER TABLE MDOC_GOODS ADD CONSTRAINT PK_MDOC_GOODS PRIMARY KEY (ID); ALTER TABLE MOBIL_MAIN ADD CONSTRAINT PK_MOBIL_MAIN PRIMARY KEY (ID); ALTER TABLE MOG_DISCOUNT ADD CONSTRAINT PK_MOG_DISCOUNT PRIMARY KEY (ID); ALTER TABLE OBJ_ATTACH ADD CONSTRAINT OBJ_ATTACH_PK PRIMARY KEY (ID); ALTER TABLE OBJ_CLASS ADD CONSTRAINT OBJ_CLASS_PK PRIMARY KEY (ID); ALTER TABLE OBJ_MSG ADD CONSTRAINT OBJ_MSG_PK PRIMARY KEY (ID); ALTER TABLE OBJ_MSGREAD ADD CONSTRAINT OBJ_MSGREAD_PK PRIMARY KEY (ID); ALTER TABLE OBJ_STAGE ADD CONSTRAINT OBJ_STAGE_PK PRIMARY KEY (ID); ALTER TABLE OBJ_STAGEROUTESTD ADD CONSTRAINT OBJ_STAGEROUTESTD_PK PRIMARY KEY (ID); ALTER TABLE OBJ_STAGESTD ADD CONSTRAINT OBJ_STAGESTD_PK PRIMARY KEY (ID); ALTER TABLE OBJ_TYPE ADD CONSTRAINT OBJ_TYPE_PK PRIMARY KEY (ID); ALTER TABLE OPERACT ADD CONSTRAINT OPERACT_PK PRIMARY KEY (ID); ALTER TABLE OPERADD ADD CONSTRAINT OPERADD_PK PRIMARY KEY (ID); ALTER TABLE OPERATTEST ADD CONSTRAINT OPERATTEST_PK PRIMARY KEY (ID); ALTER TABLE OPERAWARD ADD CONSTRAINT OPERAWARD_PK PRIMARY KEY (ID); ALTER TABLE OPERDELETE ADD CONSTRAINT OPERDELETE_PK PRIMARY KEY (ID); ALTER TABLE OPERFIO ADD CONSTRAINT OPERFIO_PK PRIMARY KEY (ID); ALTER TABLE OPERREMOVE ADD CONSTRAINT OPERREMOVE_PK PRIMARY KEY (ID); ALTER TABLE OPERREST ADD CONSTRAINT OPERREST_PK PRIMARY KEY (ID); ALTER TABLE OPERSTUDY ADD CONSTRAINT OPERSTUDY_PK PRIMARY KEY (ID); ALTER TABLE OPERTRIP ADD CONSTRAINT OPERTRIP_PK PRIMARY KEY (ID); ALTER TABLE ORGN ADD CONSTRAINT ORGN_PK PRIMARY KEY (ID); ALTER TABLE ORGNBANKACCN ADD CONSTRAINT ORGNBANKACCN_PK PRIMARY KEY (ID); ALTER TABLE ORGNGRPOPEMAIL ADD CONSTRAINT ORGNGRPOPEMAIL_PK PRIMARY KEY (ID); ALTER TABLE ORGNGRPREF ADD CONSTRAINT ORGNGRPREF_PK PRIMARY KEY (ID); ALTER TABLE ORGNINFO ADD CONSTRAINT ORGNINFO_PK PRIMARY KEY (ID); ALTER TABLE ORGNPRICELIST ADD CONSTRAINT ORGNPRICELIST_PK PRIMARY KEY (ID); ALTER TABLE ORGN_GRP ADD CONSTRAINT ORGN_GRP_PK PRIMARY KEY (ID); ALTER TABLE ORGN_GRPHIDE ADD PRIMARY KEY (ID); ALTER TABLE ORGN_MANAGER ADD CONSTRAINT ORGN_MANAGER_PK PRIMARY KEY (ID); ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_PK PRIMARY KEY (ID); ALTER TABLE PODRLIST ADD CONSTRAINT PODRLIST_PK PRIMARY KEY (ID); ALTER TABLE PODRPOST ADD CONSTRAINT PODRPOST_PK PRIMARY KEY (ID); ALTER TABLE PODR_FUNCMANAGE ADD CONSTRAINT PK_PODR_FUNCMANAGE PRIMARY KEY (ID); ALTER TABLE PODR_FUNCSUPPORT ADD CONSTRAINT PK_PODR_FUNCSUPPORT PRIMARY KEY (ID); ALTER TABLE POST_FUNCMANAGE ADD CONSTRAINT PK_POST_FUNCMANAGE PRIMARY KEY (ID); ALTER TABLE POST_FUNCSUPPORT ADD CONSTRAINT PK_POST_FUNCSUPPORT PRIMARY KEY (ID); ALTER TABLE PRICEGOODS ADD CONSTRAINT PRICEGOODS_PK PRIMARY KEY (ID); ALTER TABLE PRICELIST ADD CONSTRAINT PRICELIST_PK PRIMARY KEY (ID); ALTER TABLE PROFEXPERIENCE ADD CONSTRAINT PROFEXPERIENCE_PK PRIMARY KEY (ID); ALTER TABLE PRSNATTACH ADD CONSTRAINT PK_PRSNATTACH PRIMARY KEY (ID); ALTER TABLE PRSNCARD ADD CONSTRAINT PRSNCARD_PK PRIMARY KEY (ID); ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_PK PRIMARY KEY (ID); ALTER TABLE PRSNOPEMAIL ADD PRIMARY KEY (ID); ALTER TABLE PRSNOPER ADD CONSTRAINT PK_PRSNOPER PRIMARY KEY (ID); ALTER TABLE PRSNOPERTYPE ADD CONSTRAINT PK_PRSNOPERTYPE PRIMARY KEY (ID); ALTER TABLE PRSNPOST ADD CONSTRAINT PRSNPOST_PK PRIMARY KEY (ID); ALTER TABLE PRSNPOSTPROF ADD CONSTRAINT PRSNPOSTPROF_PK PRIMARY KEY (ID); ALTER TABLE PRSNTEST ADD CONSTRAINT FK_PRSNTEST PRIMARY KEY (ID); ALTER TABLE PTANSW ADD CONSTRAINT PTANSW_PK PRIMARY KEY (ID); ALTER TABLE PTQUEST ADD CONSTRAINT FK_PTQUEST PRIMARY KEY (ID); ALTER TABLE RBPRODOC ADD CONSTRAINT RBPRODOC_PK PRIMARY KEY (ID); ALTER TABLE REGION ADD CONSTRAINT REGION_PK PRIMARY KEY (ID); ALTER TABLE REPLICATIONLOG ADD CONSTRAINT REPLICATIONLOG_PK PRIMARY KEY (ID); ALTER TABLE REPLICATIONLOGFLD ADD CONSTRAINT REPLICATIONLOGFLD_PK PRIMARY KEY (ID); ALTER TABLE REPLICATIONLOGREC ADD CONSTRAINT REPLICATIONLOGREC_PK PRIMARY KEY (ID); ALTER TABLE REPLICATIONOFFICE ADD CONSTRAINT REPLICATIONOFFICE_PK PRIMARY KEY (ID); ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_PK PRIMARY KEY (ID); ALTER TABLE RIGHT_LIST ADD CONSTRAINT PK_RIGHT_LIST PRIMARY KEY (CODE); ALTER TABLE SALE ADD CONSTRAINT SALE_PK PRIMARY KEY (ID); ALTER TABLE SALEACCN ADD CONSTRAINT SALEACCN_PK PRIMARY KEY (ID); ALTER TABLE SALECROS ADD CONSTRAINT SALECROS_PK PRIMARY KEY (ID); ALTER TABLE SALEDTDATA ADD CONSTRAINT SALEDTDATA_PK PRIMARY KEY (ID); ALTER TABLE SALEDTVKCR ADD CONSTRAINT SALEDTVKCR_PK PRIMARY KEY (ID); ALTER TABLE SALEDUCR ADD CONSTRAINT SALEDUCR_PK PRIMARY KEY (ID); ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_PK PRIMARY KEY (ID); ALTER TABLE SALEKTAC ADD CONSTRAINT SALEKTAC_PK PRIMARY KEY (ID); ALTER TABLE SALEKTCR ADD CONSTRAINT SALEKTCR_PK PRIMARY KEY (ID); ALTER TABLE SALEKTDATA ADD CONSTRAINT SALEKTDATA_PK PRIMARY KEY (ID); ALTER TABLE SALEKTVKCR ADD CONSTRAINT SALEKTVKCR_PK PRIMARY KEY (ID); ALTER TABLE SALEKUCR ADD CONSTRAINT SALEKUCR_PK PRIMARY KEY (ID); ALTER TABLE SC_CARDS ADD CONSTRAINT PK_SC_CARDS PRIMARY KEY (ID); ALTER TABLE SC_CARDT ADD CONSTRAINT PK_SC_CARDT PRIMARY KEY (ID); ALTER TABLE SC_REMO ADD CONSTRAINT PK_SC_REMO PRIMARY KEY (ID); ALTER TABLE SC_REMONT ADD CONSTRAINT PK_SC_REMONT PRIMARY KEY (ID); ALTER TABLE SC_REMONT1 ADD CONSTRAINT SC_REMONT1_PK PRIMARY KEY (ID); ALTER TABLE SC_REMO_TYPE ADD CONSTRAINT SC_REMO_TYPE_PK PRIMARY KEY (ID); ALTER TABLE SC_REMO_TYPE_PARAMS ADD CONSTRAINT SC_REMO_TYPE_PARAMS_PK PRIMARY KEY (ID); ALTER TABLE SC_REMZAP ADD CONSTRAINT PK_SC_REMZAP PRIMARY KEY (ID); ALTER TABLE SC_REMZAP1 ADD CONSTRAINT SC_REMZAP1_PK PRIMARY KEY (ID); ALTER TABLE SERVICESVD ADD CONSTRAINT SERVICESVD_PK PRIMARY KEY (ID); ALTER TABLE STORACCN ADD CONSTRAINT STORACCN_PK PRIMARY KEY (ID); ALTER TABLE STORGRP ADD CONSTRAINT STORGRP_PK PRIMARY KEY (ID); ALTER TABLE STORGRPREF ADD CONSTRAINT STORGRPREF_PK PRIMARY KEY (ID); ALTER TABLE STORGRP_NCOST ADD CONSTRAINT STORGRP_NCOST_PK PRIMARY KEY (ID); ALTER TABLE STORLIST ADD CONSTRAINT STORLIST_PK PRIMARY KEY (ID); ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_PK PRIMARY KEY (ID); ALTER TABLE STORZDTGDS ADD CONSTRAINT STORZDTGDS_PK PRIMARY KEY (ID); ALTER TABLE SUB ADD CONSTRAINT SUB_PK PRIMARY KEY (ID); ALTER TABLE SYSCONST ADD CONSTRAINT SYSCONST_PK PRIMARY KEY (ID); ALTER TABLE SYSLOG ADD CONSTRAINT SYSLOG_PK PRIMARY KEY (ID); ALTER TABLE SYSLOGLOGIN ADD CONSTRAINT SYSLOGLOGIN_PK PRIMARY KEY (ID); ALTER TABLE SZDTCR ADD CONSTRAINT SZDTCR_PK PRIMARY KEY (ID); ALTER TABLE TRADEPOINT ADD CONSTRAINT TRADEPOINT_PK PRIMARY KEY (ID); ALTER TABLE USERDCATEGORY ADD CONSTRAINT PK_USERDCATEGORY PRIMARY KEY (ID); ALTER TABLE USERDDOCFOLDER ADD CONSTRAINT PK_USERDDOCFOLDER PRIMARY KEY (ID); ALTER TABLE USERDGRP ADD CONSTRAINT USERDGRP_PK PRIMARY KEY (ID); ALTER TABLE USERGGRP ADD CONSTRAINT USERGGRP_PK PRIMARY KEY (ID); ALTER TABLE USERKASS ADD CONSTRAINT USERKASS_PK PRIMARY KEY (ID); ALTER TABLE USERLIST ADD CONSTRAINT USERLIST_PK PRIMARY KEY (ID); ALTER TABLE USERORGN ADD CONSTRAINT USERORGN_PK PRIMARY KEY (ID); ALTER TABLE USERPODR ADD CONSTRAINT USERPODR_PK PRIMARY KEY (ID); ALTER TABLE USERPRLS ADD CONSTRAINT USERPRLS_PK PRIMARY KEY (ID); ALTER TABLE USERSTOR ADD CONSTRAINT USERSTOR_PK PRIMARY KEY (ID); ALTER TABLE USER_GRP ADD CONSTRAINT USER_GRP_PK PRIMARY KEY (ID); ALTER TABLE USER_GRPREF ADD CONSTRAINT USER_GRPREF_PK PRIMARY KEY (ID); ALTER TABLE USER_RIGHT ADD CONSTRAINT PK_USER_RIGHT PRIMARY KEY (ID); ALTER TABLE VENDORNAME ADD CONSTRAINT VENDORNAME_PK PRIMARY KEY (ID); ALTER TABLE VKSL ADD CONSTRAINT VKSL_PK PRIMARY KEY (ID); ALTER TABLE VKSLACCR ADD CONSTRAINT VKSLACCR_PK PRIMARY KEY (ID); ALTER TABLE WORKCALCMST ADD CONSTRAINT WORKCALCMST_PK PRIMARY KEY (ID); ALTER TABLE WORKCALCNK ADD CONSTRAINT WORKCALCNK_PK PRIMARY KEY (ID); ALTER TABLE WORKCALCNKPRM ADD CONSTRAINT WORKCALCNKPRM_PK PRIMARY KEY (ID); ALTER TABLE WORKCALCPODR ADD CONSTRAINT WORKCALCPODR_PK PRIMARY KEY (ID); ALTER TABLE WORKCALCPROV ADD CONSTRAINT WORKCALCPROV_PK PRIMARY KEY (ID); ALTER TABLE WORKGODSTEMP ADD CONSTRAINT WORKGOODSTEMP_PK PRIMARY KEY (ID); ALTER TABLE WORKGOODS ADD CONSTRAINT WORKGOODS_PK PRIMARY KEY (ID); ALTER TABLE WORKGOODSGDS ADD CONSTRAINT WORKGOODSGDS_PK PRIMARY KEY (ID); ALTER TABLE WORKGOODSLINK ADD CONSTRAINT WORKGOODSLINK_PK PRIMARY KEY (ID); ALTER TABLE WORKHBLN ADD CONSTRAINT WORKHBLN_PK PRIMARY KEY (ID); ALTER TABLE WORKHBNK ADD CONSTRAINT WORKHBNK_PK PRIMARY KEY (ID); ALTER TABLE WORKLINK ADD CONSTRAINT WORKLINK_PK PRIMARY KEY (ID); ALTER TABLE WORKMAIN ADD CONSTRAINT WORKMAIN_PK PRIMARY KEY (ID); ALTER TABLE WORKMAINTOOL ADD CONSTRAINT WORKMAINTOOL_PK PRIMARY KEY (ID); ALTER TABLE WORKMODEL ADD CONSTRAINT WORKMODEL_PK PRIMARY KEY (ID); ALTER TABLE WORKMODELDTL ADD CONSTRAINT WORKMODELDTL_PK PRIMARY KEY (ID); ALTER TABLE WORKMODELGDS ADD CONSTRAINT WORKMODELGDS_PK PRIMARY KEY (ID); ALTER TABLE WORKNKDG ADD CONSTRAINT WORKNKDG_PK PRIMARY KEY (ID); ALTER TABLE WORKOPER ADD CONSTRAINT WORKOPER_PK PRIMARY KEY (ID); ALTER TABLE WORKOPERATION ADD CONSTRAINT WORKOPERATION_PK PRIMARY KEY (ID); ALTER TABLE WORKPLANMST ADD CONSTRAINT WORKPLANMST_PK PRIMARY KEY (ID); ALTER TABLE WORKPLANSLV ADD CONSTRAINT WORKPLANSLV_PK PRIMARY KEY (ID); ALTER TABLE WORKPLANSTOR ADD CONSTRAINT WORKPLANSTOR_PK PRIMARY KEY (TYP, STORID, MSTID); ALTER TABLE WORKREQUEST ADD CONSTRAINT WORKREQUEST_PK PRIMARY KEY (ID); ALTER TABLE WORKREQUESTGDS ADD CONSTRAINT WORKREQUESTGDS_PK PRIMARY KEY (ID); ALTER TABLE WORKTOOL ADD CONSTRAINT WORKTOOL_PK PRIMARY KEY (ID); ALTER TABLE WORKTOOLTYP ADD CONSTRAINT WORKTOOLTYP_PK PRIMARY KEY (ID); ALTER TABLE WORKZAKAZ ADD CONSTRAINT WORKZAKAZ_PK PRIMARY KEY (ID); ALTER TABLE WORKZCUTTING ADD CONSTRAINT WORKZCUTTING_PK PRIMARY KEY (ID); ALTER TABLE WORKZMST ADD CONSTRAINT WORKZMST_PK PRIMARY KEY (ID); ALTER TABLE WORKZNK ADD CONSTRAINT WORKZNK_PK PRIMARY KEY (ID); ALTER TABLE WORKZPARAM ADD CONSTRAINT WORKZPARAM_PK PRIMARY KEY (ID); ALTER TABLE WORKZREF ADD CONSTRAINT WORKZREF_PK PRIMARY KEY (ID); ALTER TABLE WORKZSLV ADD CONSTRAINT WORKZSLV_PK PRIMARY KEY (ID); ALTER TABLE WORKZTOOL ADD CONSTRAINT WORKZTOOL_PK PRIMARY KEY (ID); ALTER TABLE ZPLTCALCCRAC ADD CONSTRAINT ZPLTCALCCRAC_PK PRIMARY KEY (ID); ALTER TABLE ZPLTCALCDECR ADD CONSTRAINT ZPLTCALCDECR_PK PRIMARY KEY (ID); ALTER TABLE ZPLTCALCINCR ADD CONSTRAINT ZPLTCALCINCR_PK PRIMARY KEY (ID); ALTER TABLE ZPLTCALCMST ADD CONSTRAINT ZPLTCALCMST_PK PRIMARY KEY (ID); ALTER TABLE ZPLTCALCSLV ADD CONSTRAINT ZPLTCALCSLV_PK PRIMARY KEY (ID); ALTER TABLE ZPLTCALCSLVFOT ADD CONSTRAINT ZPLTCALCSLVFOT_PK PRIMARY KEY (ID); ALTER TABLE ZPLTCALENDARBASE ADD CONSTRAINT ZPLTCALENDARBASE_PK PRIMARY KEY (ID); ALTER TABLE ZPLTDECR ADD CONSTRAINT ZPLTDECR_PK PRIMARY KEY (ID); ALTER TABLE ZPLTDECRFOT ADD CONSTRAINT ZPLDECRFOT_PK PRIMARY KEY (ID); ALTER TABLE ZPLTDECRINCR ADD CONSTRAINT ZPLTDECRINCR_PK PRIMARY KEY (ID); ALTER TABLE ZPLTDECRPRSN ADD CONSTRAINT ZPLTDECRPRSN_PK PRIMARY KEY (ID); ALTER TABLE ZPLTFOTGRP ADD CONSTRAINT ZPLTFOTGRP_PK PRIMARY KEY (ID); ALTER TABLE ZPLTFOTGRPREF ADD CONSTRAINT ZPLTFOTGRPREF_PK PRIMARY KEY (ID); ALTER TABLE ZPLTGRPPRSNMST ADD CONSTRAINT ZPLTGRPPRSNMST_PK PRIMARY KEY (ID); ALTER TABLE ZPLTGRPPRSNSLV ADD CONSTRAINT ZPLTGRPPRSNSLV_PK PRIMARY KEY (ID); ALTER TABLE ZPLTINCR ADD CONSTRAINT ZPLTINCR_PK PRIMARY KEY (ID); ALTER TABLE ZPLTINCRFOT ADD CONSTRAINT ZPLTINCRFOT_PK PRIMARY KEY (ID); ALTER TABLE ZPLTINCRINCR ADD CONSTRAINT ZPLTINCRINCR_PK PRIMARY KEY (ID); ALTER TABLE ZPLTINCRPRSN ADD CONSTRAINT ZPLTINCRPRSN_PK PRIMARY KEY (ID); ALTER TABLE ZPLTJOBGRPJOB ADD CONSTRAINT ZPLTJOBGRPJOB_PK PRIMARY KEY (ID); ALTER TABLE ZPLTJOBGRPMST ADD CONSTRAINT ZPLTJOBGRPMST_PK PRIMARY KEY (ID); ALTER TABLE ZPLTJOBGRPPRSN ADD CONSTRAINT ZPLTJOBGRPPRSN_PK PRIMARY KEY (ID); ALTER TABLE ZPLTJOBPRSNMST ADD CONSTRAINT ZPLTJOBPRSNMST_PK PRIMARY KEY (ID); ALTER TABLE ZPLTJOBPRSNSLV ADD CONSTRAINT ZPLTJOBPRSNSLV_PK PRIMARY KEY (ID); ALTER TABLE ZPLTJOBSLIST ADD CONSTRAINT ZPLTJOBSLIST_PK PRIMARY KEY (ID); ALTER TABLE ZPLTPLATACCR ADD CONSTRAINT ZPLTPLATACCR_PK PRIMARY KEY (ID); ALTER TABLE ZPLTPLATMST ADD CONSTRAINT ZPLTPLATMST_PK PRIMARY KEY (ID); ALTER TABLE ZPLTPLATSLV ADD CONSTRAINT ZPLTPLATSLV_PK PRIMARY KEY (ID); ALTER TABLE ZPLTPRSNDPN ADD CONSTRAINT ZPLTPRSNDPN_PK PRIMARY KEY (ID); ALTER TABLE ZPLTSERTMEDIC ADD CONSTRAINT ZPLTSERTMEDIC_PK PRIMARY KEY (ID); ALTER TABLE ZPLTSERTVACAT ADD CONSTRAINT ZPLTSERTVACAT_PK PRIMARY KEY (ID); ALTER TABLE ZPLTSLVDAYCOMMENT ADD CONSTRAINT ZPLTSLVDAYCOMMENT_PK PRIMARY KEY (ID); ALTER TABLE ZPLTTABEL ADD CONSTRAINT ZPLTTABEL_PK PRIMARY KEY (ID); ALTER TABLE ZPLTTABELPLAN ADD CONSTRAINT ZPLTTABELPLAN_PK PRIMARY KEY (ID); /******************************************************************************/ /*** Foreign keys ***/ /******************************************************************************/ ALTER TABLE ACCNDOC ADD CONSTRAINT ACCNDOC_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ACCNPLAN ADD CONSTRAINT ACCNPLAN_A8 FOREIGN KEY (A8) REFERENCES "LEV" (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ACCNPLAN ADD CONSTRAINT ACCNPLAN_A9 FOREIGN KEY (A9) REFERENCES "LEV" (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ACCNPLAN ADD CONSTRAINT ACCNPLAN_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE ACCNPROV ADD CONSTRAINT ACCNPROV_ACCNDOCID FOREIGN KEY (ACCNDOCID) REFERENCES ACCNDOC (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ACCNPROV ADD CONSTRAINT ACCNPROV_DT FOREIGN KEY (DT) REFERENCES ACCNPLAN (ACCN) ON UPDATE CASCADE; ALTER TABLE ACCNPROV ADD CONSTRAINT ACCNPROV_KT FOREIGN KEY (KT) REFERENCES ACCNPLAN (ACCN) ON UPDATE CASCADE; ALTER TABLE ACCNPROV ADD CONSTRAINT ACCNPROV_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ACOPRLST ADD CONSTRAINT ACOPRLST_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE ACOPRLST ADD CONSTRAINT ACOPRLST_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE ACOPRLST ADD CONSTRAINT FK_ACOPRLST_BDGT_ITEM1_ID FOREIGN KEY (BDGT_ITEM1_ID) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE USING INDEX FK_ACOPRLST_1; ALTER TABLE ACOPRLST ADD CONSTRAINT FK_ACOPRLST_BDGT_ITEM2_ID FOREIGN KEY (BDGT_ITEM2_ID) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE; ALTER TABLE BDG_ATTR_VAL ADD CONSTRAINT FK_BDG_ATTR_VAL_ATTR FOREIGN KEY (ATTR_ID) REFERENCES BDG_ATTR (ID) ON UPDATE CASCADE; ALTER TABLE BDG_BASIS ADD CONSTRAINT FK_BDG_BASIS_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_BASIS_PORTION ADD CONSTRAINT FK_BDG_BASIS_PORTION_BASIS FOREIGN KEY (BASIS_ID) REFERENCES BDG_BASIS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_BASIS_PORTION ADD CONSTRAINT FK_BDG_BASIS_PORTION_GOODS FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_BASIS_PORTION ADD CONSTRAINT FK_BDG_BASIS_PORTION_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC ADD CONSTRAINT FK_BDG_CALC_PERIOD FOREIGN KEY (PERIOD_ID) REFERENCES BDG_PERIOD (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC ADD CONSTRAINT FK_BDG_CALC_PLAN FOREIGN KEY (PLAN_ID) REFERENCES BDG_PLAN (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC ADD CONSTRAINT FK_BDG_CALC_SCHEME FOREIGN KEY (SCHEME_ID) REFERENCES BDG_SCHEME (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE BDG_CALC ADD CONSTRAINT FK_BDG_CALC_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID); ALTER TABLE BDG_CALC_DATA ADD CONSTRAINT FK_BDG_CALC_DATA_GOODS FOREIGN KEY (CALC_GOODS_ID) REFERENCES BDG_CALC_GOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_CALC_DATA ADD CONSTRAINT FK_BDG_CALC_DATA_ORDER FOREIGN KEY (CALC_ORDER_ID) REFERENCES BDG_CALC_ORDER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_CALC_GOODS ADD CONSTRAINT FK_BDG_CALC_GOODS_CALC FOREIGN KEY (CALC_ID) REFERENCES BDG_CALC (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC_GOODS ADD CONSTRAINT FK_BDG_CALC_GOODS_CENTER FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC_GOODS ADD CONSTRAINT FK_BDG_CALC_GOODS_GOODS FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC_ORDER ADD CONSTRAINT FK_BDG_CALC_ORDER_CALC FOREIGN KEY (CALC_ID) REFERENCES BDG_CALC (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_CALC_ORDER ADD CONSTRAINT FK_BDG_CALC_ORDER_CENTER FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC_ORDER ADD CONSTRAINT FK_BDG_CALC_ORDER_GCENTER FOREIGN KEY (GOODS_CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC_ORDER ADD CONSTRAINT FK_BDG_CALC_ORDER_ITEM FOREIGN KEY (ITEM_ID) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE; ALTER TABLE BDG_CALC_ORDER ADD CONSTRAINT FK_BDG_CALC_ORDER_OWNER FOREIGN KEY (OWNER) REFERENCES BDG_CALC_ORDER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_CENTER ADD CONSTRAINT FK_BDG_CENTER_OWNER FOREIGN KEY (OWNER) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DATA_STATE ADD CONSTRAINT FK_BDG_DATA_STATE FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DATA_STATE ADD CONSTRAINT FK_BDG_DATA_STATE_PERIOD FOREIGN KEY (PERIOD_ID) REFERENCES BDG_PERIOD (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_DATA_STATE ADD CONSTRAINT FK_BDG_DATA_STATE_PLANE FOREIGN KEY (PLAN_ID) REFERENCES BDG_PLAN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_DISTR ADD CONSTRAINT FK_BDG_DISTR_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DISTR_BASIS ADD CONSTRAINT FK_BDG_DISTR_BASIS_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DISTR_ORDER ADD CONSTRAINT FK_BDG_DISTR_ORDER_BASIS FOREIGN KEY (DISTR_BASIS_ID) REFERENCES BDG_DISTR_BASIS (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DISTR_ORDER ADD CONSTRAINT FK_BDG_DISTR_ORDER_CENTER FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_DISTR_ORDER ADD CONSTRAINT FK_BDG_DISTR_ORDER_DISTR FOREIGN KEY (DISTR_ID) REFERENCES BDG_DISTR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_DISTR_ORDER ADD CONSTRAINT FK_BDG_DISTR_ORDER_ITEM FOREIGN KEY (ITEM_ID) REFERENCES BDG_ITEM (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_DISTR_PORTION ADD CONSTRAINT FK_BDG_DISTR_PORTION_BASIS FOREIGN KEY (DISTR_BASIS_ID) REFERENCES BDG_DISTR_BASIS (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DISTR_PORTION ADD CONSTRAINT FK_BDG_DISTR_PORTION_CENTER FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DISTR_PORTION ADD CONSTRAINT FK_BDG_DISTR_PORTION_PERIOD FOREIGN KEY (PERIOD_ID) REFERENCES BDG_PERIOD (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DOC ADD CONSTRAINT FK_BDG_DOC_CENTER FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DOC ADD CONSTRAINT FK_BDG_DOC_DIRECTION FOREIGN KEY (DIRECTION_ID) REFERENCES BDG_DIRECTION (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DOC ADD CONSTRAINT FK_BDG_DOC_ITEM FOREIGN KEY (ITEM_ID) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DOC ADD CONSTRAINT FK_BDG_DOC_PERIOD FOREIGN KEY (PERIOD_ID) REFERENCES BDG_PERIOD (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DOC ADD CONSTRAINT FK_BDG_DOC_PLAN FOREIGN KEY (PLAN_ID) REFERENCES BDG_PLAN (ID) ON UPDATE CASCADE; ALTER TABLE BDG_DOC ADD CONSTRAINT FK_BDG_DOC_USER FOREIGN KEY (USER_ID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_GOODS ADD CONSTRAINT FK_BDG_GOODS_GOODS FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE BDG_GOODS ADD CONSTRAINT FK_BDG_GOODS_LINK_TO FOREIGN KEY (LINK_TO) REFERENCES BDG_GOODS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE BDG_GOODS ADD CONSTRAINT FK_BDG_GOODS_PAPER FOREIGN KEY (PAPER_ID) REFERENCES BDG_PAPER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_IND_VAL ADD CONSTRAINT FK_BDG_IND_VAL_INDICATOR FOREIGN KEY (INDICATOR_ID) REFERENCES BDG_INDICATOR (ID); ALTER TABLE BDG_IND_VAL ADD CONSTRAINT FK_BDG_IND_VAL_PERIOD FOREIGN KEY (PERIOD_ID) REFERENCES BDG_PERIOD (ID); ALTER TABLE BDG_IND_VAL ADD CONSTRAINT FK_BDG_IND_VAL_PLAN FOREIGN KEY (PLAN_ID) REFERENCES BDG_PLAN (ID); ALTER TABLE BDG_ITEM ADD CONSTRAINT FK_BDG_ITEM_ID FOREIGN KEY (OWNER) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE; ALTER TABLE BDG_LINK_ITEM_CENTER ADD CONSTRAINT FK_BDG_LINK_ITEM_CENTER_C FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_LINK_ITEM_CENTER ADD CONSTRAINT FK_BDG_LINK_ITEM_CENTER_I FOREIGN KEY (ITEM_ID) REFERENCES BDG_ITEM (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_LINK_PAPER_ATTR_VAL ADD CONSTRAINT FK_BDG_LINK_PAPER_ATTR_VAL_A FOREIGN KEY (ATTR_VAL_ID) REFERENCES BDG_ATTR_VAL (ID) ON UPDATE CASCADE; ALTER TABLE BDG_LINK_PAPER_ATTR_VAL ADD CONSTRAINT FK_BDG_LINK_PAPER_ATTR_VAL_P FOREIGN KEY (PAPER_ID) REFERENCES BDG_PAPER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_LINK_USER_CENTER ADD CONSTRAINT FK_BDG_LINK_USER_CENTER_C FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID); ALTER TABLE BDG_LINK_USER_CENTER ADD CONSTRAINT FK_BDG_LINK_USER_CENTER_U FOREIGN KEY (USER_ID) REFERENCES USERLIST (ID); ALTER TABLE BDG_LINK_USER_DIRECTION ADD CONSTRAINT FK_BDG_LINK_USER_DIRECTION_D FOREIGN KEY (DIRECTION_ID) REFERENCES BDG_DIRECTION (ID); ALTER TABLE BDG_LINK_USER_DIRECTION ADD CONSTRAINT FK_BDG_LINK_USER_DIRECTION_U FOREIGN KEY (USER_ID) REFERENCES USERLIST (ID); ALTER TABLE BDG_PAPER ADD CONSTRAINT FK_BDG_PAPER_CENTER FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PAPER ADD CONSTRAINT FK_BDG_PAPER_DIRECTION FOREIGN KEY (DIRECTION_ID) REFERENCES BDG_DIRECTION (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PAPER ADD CONSTRAINT FK_BDG_PAPER_ITEM FOREIGN KEY (ITEM_ID) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PAPER ADD CONSTRAINT FK_BDG_PAPER_LINK_TO FOREIGN KEY (LINK_TO) REFERENCES BDG_PAPER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_PAPER ADD CONSTRAINT FK_BDG_PAPER_ORGN FOREIGN KEY (ORGN_ID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PAPER ADD CONSTRAINT FK_BDG_PAPER_ORGNINFO FOREIGN KEY (ORGNINFO_ID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PAPER ADD CONSTRAINT FK_BDG_PAPER_PLAN FOREIGN KEY (PLAN_ID) REFERENCES BDG_PLAN (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PAPER ADD CONSTRAINT FK_BDG_PAPER_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PERIOD ADD CONSTRAINT FK_BDG_PERIOD_F_DISTR FOREIGN KEY (F_DISTR_ID) REFERENCES BDG_DISTR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_PERIOD ADD CONSTRAINT FK_BDG_PERIOD_OBJ FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PERIOD ADD CONSTRAINT FK_BDG_PERIOD_OWNER FOREIGN KEY (OWNER) REFERENCES BDG_PERIOD (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PERIOD ADD CONSTRAINT FK_BDG_PERIOD_PLAN FOREIGN KEY (PLAN_ID) REFERENCES BDG_PLAN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_PERIOD ADD CONSTRAINT FK_BDG_PERIOD_P_DISTR FOREIGN KEY (P_DISTR_ID) REFERENCES BDG_DISTR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_PERIOD ADD CONSTRAINT FK_BDG_PERIOD_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PRICE_GOODS ADD CONSTRAINT FK_BDG_PRICE_GOODS_GOODS FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PRICE_GOODS ADD CONSTRAINT FK_BDG_PRICE_GOODS_PERIOD FOREIGN KEY (PERIOD_ID) REFERENCES BDG_PERIOD (ID) ON UPDATE CASCADE; ALTER TABLE BDG_PRICE_GOODS ADD CONSTRAINT FK_BDG_PRICE_GOODS_PRICE FOREIGN KEY (PRICE_ID) REFERENCES BDG_PRICE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_SCHEME_OPER ADD CONSTRAINT FK_BDG_SCHEME_OPER_ORDER FOREIGN KEY (ORDER_ID) REFERENCES BDG_SCHEME_ORDER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_SCHEME_OPER ADD CONSTRAINT FK_BDG_SCHEME_OPER_V_BASIS FOREIGN KEY (VAL_BASIS_ID) REFERENCES BDG_BASIS (ID) ON UPDATE CASCADE; ALTER TABLE BDG_SCHEME_OPER ADD CONSTRAINT FK_BDG_SCHEME_OPER_V_ORDER FOREIGN KEY (VAL_ORDER_ID) REFERENCES BDG_SCHEME_ORDER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_SCHEME_ORDER ADD CONSTRAINT FK_BDG_SCHEME_ORDER_CENTER FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_SCHEME_ORDER ADD CONSTRAINT FK_BDG_SCHEME_ORDER_GCENTER FOREIGN KEY (GOODS_CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_SCHEME_ORDER ADD CONSTRAINT FK_BDG_SCHEME_ORDER_ITEM FOREIGN KEY (ITEM_ID) REFERENCES BDG_ITEM (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_SCHEME_ORDER ADD CONSTRAINT FK_BDG_SCHEME_ORDER_OWNER FOREIGN KEY (OWNER) REFERENCES BDG_SCHEME_ORDER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_SCHEME_ORDER ADD CONSTRAINT FK_BDG_SCHEME_ORDER_SCHEME FOREIGN KEY (SCHEME_ID) REFERENCES BDG_SCHEME (ID) ON UPDATE CASCADE; ALTER TABLE BDG_SERV ADD CONSTRAINT FK_BDG_SERV_OBJ_SERV FOREIGN KEY (OBJ_SRV_ID) REFERENCES GDDDTU (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_SERV ADD CONSTRAINT FK_BDG_SERV_PAPER FOREIGN KEY (PAPER_ID) REFERENCES BDG_PAPER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_SERV ADD CONSTRAINT FK_BDG_SERV_SERV_ID FOREIGN KEY (SERV_ID) REFERENCES HBSERVU (ID) ON UPDATE CASCADE; ALTER TABLE BDG_SHEDULE ADD CONSTRAINT FK_BDG_SHEDULE_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_SHEDULE_SHIFT ADD CONSTRAINT FK_BDG_SHEDULE_SHIFT FOREIGN KEY (SHEDULE_ID) REFERENCES BDG_SHEDULE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BDG_SHEDULE_SHIFT ADD CONSTRAINT FK_BDG_SHEDULE_SHIFT_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_WGOODS ADD CONSTRAINT FK_BDG_WGOODS_USER FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE BDG_WGOODS ADD CONSTRAINT FK_BDG_WGOODS_WPAPER FOREIGN KEY (WPAPER_ID) REFERENCES BDG_WPAPER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_WPAPER ADD CONSTRAINT FK_BDG_WPAPER_CENTER FOREIGN KEY (CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE BDG_WPAPER ADD CONSTRAINT FK_BDG_WPAPER_DIRECTION FOREIGN KEY (DIRECTION_ID) REFERENCES BDG_DIRECTION (ID) ON UPDATE CASCADE; ALTER TABLE BDG_WPAPER ADD CONSTRAINT FK_BDG_WPAPER_ITEM FOREIGN KEY (ITEM_ID) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE; ALTER TABLE BDG_WPAPER ADD CONSTRAINT FK_BDG_WPAPER_PERIOD FOREIGN KEY (PERIOD_ID) REFERENCES BDG_PERIOD (ID) ON UPDATE CASCADE; ALTER TABLE BDG_WPAPER ADD CONSTRAINT FK_BDG_WPAPER_PLAN FOREIGN KEY (PLAN_ID) REFERENCES BDG_PLAN (ID) ON UPDATE CASCADE; ALTER TABLE BOOKSLDT ADD CONSTRAINT BOOKSLDT_BOOKDAYSID FOREIGN KEY (BOOKDAYSID) REFERENCES BOOKSLDTDAYS (ID) ON UPDATE CASCADE; ALTER TABLE BOOKSLDT ADD CONSTRAINT BOOKSLDT_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE BOOKSLDT ADD CONSTRAINT BOOKSLDT_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE BOOKSLDTACCR ADD CONSTRAINT BOOKSLDTACCR_ACCNPROVID FOREIGN KEY (ACCNPROVID) REFERENCES ACCNPROV (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE BOOKSLDTACCR ADD CONSTRAINT BOOKSLDTACCR_BOOKSLDTID FOREIGN KEY (BOOKSLDTID) REFERENCES BOOKSLDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BOOKSLDTDAYS ADD CONSTRAINT BOOKSLDTDAYS_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE BOOKSLKT ADD CONSTRAINT BOOKSLKT_BOOKDAYSID FOREIGN KEY (BOOKDAYSID) REFERENCES BOOKSLKTDAYS (ID) ON UPDATE CASCADE; ALTER TABLE BOOKSLKT ADD CONSTRAINT BOOKSLKT_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE BOOKSLKT ADD CONSTRAINT BOOKSLKT_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE BOOKSLKTACCR ADD CONSTRAINT BOOKSLKTACCR_ACCNPROVID FOREIGN KEY (ACCNPROVID) REFERENCES ACCNPROV (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE BOOKSLKTACCR ADD CONSTRAINT BOOKSLKTACCR_BOOKSLKTID FOREIGN KEY (BOOKSLKTID) REFERENCES BOOKSLKT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE BOOKSLKTDAYS ADD CONSTRAINT BOOKSLKTDAYS_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE CONTACTS ADD CONSTRAINT CONTACTS_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE CRDS_AVLGOODS ADD CONSTRAINT FK_CRDS_AVLGOODS_GOODS_ID FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE CRDS_AVLGOODS ADD CONSTRAINT FK_CRDS_AVLGOODS_STORE_ID FOREIGN KEY (STORE_ID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE CRDS_DGVDT ADD CONSTRAINT FK_CRDS_DGVDT_STORLIST FOREIGN KEY (STOR_ID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE CRDS_DGVKT ADD CONSTRAINT FK_CRDS_DGVKT_STOR_ID FOREIGN KEY (STOR_ID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE CRDS_GDDDT ADD CONSTRAINT FK_CRDS_GDDDT_DGVDT_ID FOREIGN KEY (DGVDT_ID) REFERENCES CRDS_DGVDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE CRDS_GDDDT ADD CONSTRAINT FK_CRDS_GDDDT_GOODS_ID FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE CRDS_GDDKT ADD CONSTRAINT FK_CRDS_GDDKT_DGVKT_ID FOREIGN KEY (DGVKT_ID) REFERENCES CRDS_DGVKT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE CRDS_GDDKT ADD CONSTRAINT FK_CRDS_GDDKT_GOODS_ID FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE CSDTKT ADD CONSTRAINT CSDTKT_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE CSDTKT ADD CONSTRAINT CSDTKT_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE CSDTKT ADD CONSTRAINT CSDTKT_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE CSDTKT ADD CONSTRAINT CSDTKT_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE CSDTKT ADD CONSTRAINT CSDTKT_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE CTLGDISTR ADD CONSTRAINT FK_CTLGDISTR_ITEM FOREIGN KEY (ITEM_ID) REFERENCES CTLGITEM (ITEM_ID) ON DELETE CASCADE; ALTER TABLE CTLGDISTR ADD CONSTRAINT FK_CTLGDISTR_ORGN FOREIGN KEY (ORGN_ID) REFERENCES ORGN (ID) ON DELETE SET NULL; ALTER TABLE CTLGDISTR ADD CONSTRAINT FK_CTLGDISTR_PERSONAL FOREIGN KEY (PERSONAL_ID) REFERENCES PERSONAL (ID) ON DELETE SET NULL; ALTER TABLE CTLGENTITY ADD CONSTRAINT FK_CTLGENTITY FOREIGN KEY (ITEM_ID) REFERENCES CTLGITEM (ITEM_ID) ON DELETE CASCADE; ALTER TABLE CTLGENTITY ADD CONSTRAINT FK_CTLGENTITY_KIND FOREIGN KEY (KIND_ID) REFERENCES CTLGKIND (KIND_ID) ON DELETE SET NULL; ALTER TABLE CTLGGOODS ADD CONSTRAINT FK_CTLGGOODS FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID); ALTER TABLE CTLGITEM ADD CONSTRAINT FK_CTLGITEM_GOODS FOREIGN KEY (GOODS_ID) REFERENCES GOODS (ID); ALTER TABLE CTLGLINK ADD CONSTRAINT FK_CTLGLINK_ENTITY FOREIGN KEY (ENTITY_ID) REFERENCES CTLGENTITY (ENTITY_ID) ON DELETE CASCADE; ALTER TABLE CTLGLINK ADD CONSTRAINT FK_CTLGLINK_THEME FOREIGN KEY (THEME_ID) REFERENCES CTLGTHEME (THEME_ID) ON DELETE CASCADE; ALTER TABLE CTLGTHEME ADD CONSTRAINT FK_CTLGTHEME FOREIGN KEY (THEME_OWNER) REFERENCES CTLGTHEME (THEME_ID) ON DELETE CASCADE; ALTER TABLE CURRDATA ADD CONSTRAINT CURRDATA_TYP FOREIGN KEY (TYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTOR ADD CONSTRAINT CURRRSTOR_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTOR ADD CONSTRAINT CURRSTOR_ACCNID FOREIGN KEY (ACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTOR ADD CONSTRAINT CURRSTOR_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTOR ADD CONSTRAINT CURRSTOR_DAYID FOREIGN KEY (DAYID) REFERENCES CURRSTORDAYS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE CURRSTORDAYS ADD CONSTRAINT CURRSTORDAYS_ACCNID FOREIGN KEY (ACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTORDAYS ADD CONSTRAINT CURRSTORDAYS_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTORDAYSACCR ADD CONSTRAINT CURRSTORDAYSACCR_ACCNID FOREIGN KEY (ACCNID) REFERENCES ACCNPROV (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE CURRSTORDAYSACCR ADD CONSTRAINT CURRSTORDAYSACCR_DAYID FOREIGN KEY (DAYID) REFERENCES CURRSTORDAYS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE CURRSTORDTKT ADD CONSTRAINT CURRSTORDTKT_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTORDTKT ADD CONSTRAINT CURRSTORDTKT_CSMID FOREIGN KEY (CSMID) REFERENCES CSDTKT (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTORDTKT ADD CONSTRAINT CURRSTORDTKT_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTORDTKT ADD CONSTRAINT CURRSTORDTKT_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE CURRSTORDTKT ADD CONSTRAINT CURRSTORDTKT_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE CURRSTORDTKT ADD CONSTRAINT CURRSTORDTKT_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGDTACCN ADD CONSTRAINT DGDTACCN_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE DGDTACCN ADD CONSTRAINT DGDTACCN_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVDT (ID) ON UPDATE CASCADE; ALTER TABLE DGDUACCN ADD CONSTRAINT DGDUACCN_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE DGDUACCN ADD CONSTRAINT DGDUACCN_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVDTU (ID) ON UPDATE CASCADE; ALTER TABLE DGKTACCN ADD CONSTRAINT DGKTACCN_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE DGKTACCN ADD CONSTRAINT DGKTACCN_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVKT (ID) ON UPDATE CASCADE; ALTER TABLE DGKUACCN ADD CONSTRAINT DGKUACCN_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE DGKUACCN ADD CONSTRAINT DGKUACCN_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVKTU (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_ACCNORGID FOREIGN KEY (ACCNORGID) REFERENCES ORGNBANKACCN (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_MANAGER FOREIGN KEY (MANAGER) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_OURACCNID FOREIGN KEY (OURACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_SNAMEID FOREIGN KEY (SNAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_SZID FOREIGN KEY (SZID) REFERENCES STORZAKAZDT (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_TRANSORGNID FOREIGN KEY (TRANSORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_TRDPID FOREIGN KEY (TRDPID) REFERENCES TRADEPOINT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT DGVDT_ZID FOREIGN KEY (ZID) REFERENCES WORKZAKAZ (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT ADD CONSTRAINT FK_DGVDT_MDOC FOREIGN KEY (MDOCSOURCE_ID) REFERENCES MDOCS (ID) ON UPDATE CASCADE USING INDEX DGVDT_MDOCSOURCE_ID; ALTER TABLE DGVDTKT_LOG ADD CONSTRAINT DGVDTKT_LOG_GDDDTID FOREIGN KEY (GDDDTID) REFERENCES GDDDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DGVDTKT_LOG ADD CONSTRAINT DGVDTKT_LOG_GDDKTID FOREIGN KEY (GDDKTID) REFERENCES GDDKT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_DGVID FOREIGN KEY (DGVID) REFERENCES DGVDTUD (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_MANAGER FOREIGN KEY (MANAGER) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTU ADD CONSTRAINT DGVDTU_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTUD ADD CONSTRAINT DGVDTUD_GRPID FOREIGN KEY (GRPID) REFERENCES DGVDUGRP (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTUD ADD CONSTRAINT DGVDTUD_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVDTUD ADD CONSTRAINT DGVDTUD_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVDT_TASK ADD CONSTRAINT DGVDT_TASK_DGVDTID FOREIGN KEY (DGVDTID) REFERENCES DGVDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DGVDT_TASK ADD CONSTRAINT DGVDT_TASK_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DGVDUGRP ADD CONSTRAINT DGVDUGRP_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID); ALTER TABLE DGVDUGRP ADD CONSTRAINT DGVDUGRP_PARENTID FOREIGN KEY (PARENTID) REFERENCES DGVDUGRP (ID); ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_TORGNID FOREIGN KEY (TORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_V_DGVDTID FOREIGN KEY (V_DGVDTID) REFERENCES DGVDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_V_DGVKTID FOREIGN KEY (V_DGVKTID) REFERENCES DGVKT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVKT ADD CONSTRAINT DGVKT_ZID FOREIGN KEY (ZID) REFERENCES WORKZAKAZ (ID) ON UPDATE CASCADE; ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE DGVKTU ADD CONSTRAINT DGVKTU_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE DGVKTU_DGVDT_REF ADD CONSTRAINT DGVKTU_DGVDT_REF_DGVDTID FOREIGN KEY (DGVDTID) REFERENCES DGVDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DGVKTU_DGVDT_REF ADD CONSTRAINT DGVKTU_DGVDT_REF_DGVKTID FOREIGN KEY (DGVKTID) REFERENCES DGVKT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DGVKTU_DGVDT_REF ADD CONSTRAINT DGVKTU_DGVDT_REF_DGVKTUID FOREIGN KEY (DGVKTUID) REFERENCES DGVKTU (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DGVWK ADD CONSTRAINT DGVWK_MSTGDSID FOREIGN KEY (MSTGDSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE DGVWK ADD CONSTRAINT DGVWK_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE DGVWK ADD CONSTRAINT DGVWK_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVWK ADD CONSTRAINT DGVWK_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVWKG ADD CONSTRAINT DGVWKG_DGVKTID FOREIGN KEY (DGVKTID) REFERENCES DGVKT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DGVWKG ADD CONSTRAINT DGVWKG_MSTGDSID FOREIGN KEY (MSTGDSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE DGVWKG ADD CONSTRAINT DGVWKG_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE DGVWKG ADD CONSTRAINT DGVWKG_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DGVWKG ADD CONSTRAINT DGVWKG_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_DGVDTINTRID FOREIGN KEY (DGVDTINTRID) REFERENCES DGVDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_DGVDTREALID FOREIGN KEY (DGVDTREALID) REFERENCES DGVDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_DGVDT_TMCID FOREIGN KEY (DGVDT_TMCID) REFERENCES DGVDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_OPERINTRID FOREIGN KEY (OPERINTRID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_OPERREALID FOREIGN KEY (OPERREALID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_OPER_TMCID FOREIGN KEY (OPER_TMCID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DKBILL ADD CONSTRAINT DKBILL_STORINPID FOREIGN KEY (STORINPID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE DKBILLCOUNT ADD CONSTRAINT DKBILLCOUNT_BILLID FOREIGN KEY (BILLID) REFERENCES DKBILL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DKBILLGDS ADD CONSTRAINT DKBILLGDS_BILLID FOREIGN KEY (BILLID) REFERENCES DKBILL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DKBILLGDS ADD CONSTRAINT DKBILLGDS_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE DKBILLPRSN ADD CONSTRAINT DKBILLPRSN_BILLID FOREIGN KEY (BILLID) REFERENCES DKBILL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DKBILLPRSN ADD CONSTRAINT DKBILLPRSN_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE DK_ACCESSCOMMANDUSERREF ADD CONSTRAINT DK_DK_ACCCOMMANDUSERREF_ACCID FOREIGN KEY (ACCESSID) REFERENCES DK_ACCESSCOMMAND (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_ACCESSCOMMANDUSERREF ADD CONSTRAINT DK_DK_ACCCOMMANDUSERREF_COMMDID FOREIGN KEY (COMMANDID) REFERENCES DK_COMMAND (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_ACCESSCOMMANDUSERREF ADD CONSTRAINT DK_DK_ACCCOMMANDUSERREF_ORGNID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_ACCESSDATAUSERREF ADD CONSTRAINT DK_ACCESSDATAUSERREF_ACCESSID FOREIGN KEY (ACCESSID) REFERENCES DK_ACCESSDATA (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_ACCESSDATAUSERREF ADD CONSTRAINT DK_ACCESSDATAUSERREF_DATAID FOREIGN KEY (DATAID) REFERENCES DK_DATA (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_ACCESSDATAUSERREF ADD CONSTRAINT DK_ACCESSDATAUSERREF_ORGNID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_BNS ADD CONSTRAINT FK_DK_BNS_CURRTYPID FOREIGN KEY (CURRTYPID) REFERENCES CURRTYP (ID); ALTER TABLE DK_BNS_ORGN ADD CONSTRAINT FK_DK_BNS_ORGN_1 FOREIGN KEY (DK_BNS_ID) REFERENCES DK_BNS (ID); ALTER TABLE DK_BNS_ORGN ADD CONSTRAINT FK_DK_BNS_ORGN_2 FOREIGN KEY (ORGN_ID) REFERENCES ORGN (ID); ALTER TABLE DK_BNS_ORGN_LOG ADD CONSTRAINT FK_DK_BNS_ORGN_LOG_1 FOREIGN KEY (DK_BNS_ORGN_ID) REFERENCES DK_BNS_ORGN (ID); ALTER TABLE DK_BNS_PRICEGOODS ADD CONSTRAINT FK_DK_BNS_GOODS_1 FOREIGN KEY (PRICEGOODS_ID) REFERENCES PRICEGOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DK_BNS_PRICEGOODS ADD CONSTRAINT FK_DK_BNS_GOODS_2 FOREIGN KEY (DK_BNS_ID) REFERENCES DK_BNS (ID); ALTER TABLE DK_BONUSACCRUAL ADD CONSTRAINT DK_BONUSACCRUAL_BONUSID FOREIGN KEY (BONUSID) REFERENCES DK_BNS (ID) ON UPDATE CASCADE; ALTER TABLE DK_BONUSACCRUAL ADD CONSTRAINT DK_BONUSACCRUAL_ORDERID FOREIGN KEY (ORDERID) REFERENCES STORZAKAZDT (ID) ON UPDATE CASCADE; ALTER TABLE DK_BONUSACCRUAL ADD CONSTRAINT DK_BONUSACCRUAL_ORGANID FOREIGN KEY (ORGANID) REFERENCES ORGN (ID); ALTER TABLE DK_DISCOUNTBONUSSETGOODS ADD CONSTRAINT FK_DK_DISCOUNTBONUSSET FOREIGN KEY (DISCOUNTBONUSSETID) REFERENCES DK_DISCOUNTBONUSSETS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DK_DISCOUNTBONUSSETGOODS ADD CONSTRAINT FK_DK_GOODS FOREIGN KEY (GOODSID) REFERENCES GOODS (ID); ALTER TABLE DK_DISCOUNTBONUSSETGOODS ADD CONSTRAINT FK_DK_GOODSCATEGORY FOREIGN KEY (GOODSCATEGORYID) REFERENCES GDSPARAMVAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DK_DISCOUNTBONUSSETGOODS ADD CONSTRAINT FK_DK_GOODSGROUP FOREIGN KEY (GOODSGROUPID) REFERENCES GOODSGROUPS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DK_DISCOUNTBONUSSETGOODS ADD CONSTRAINT FK_DK_GOODSSET FOREIGN KEY (GOODSSETID) REFERENCES GOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DK_DISCOUNTBONUSSETGOODS ADD CONSTRAINT FK_DK_PRICELIST FOREIGN KEY (PRICELISTID) REFERENCES PRICELIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DK_DISCOUNTBONUSSETORGN ADD CONSTRAINT FK_DK_DSCNTBNSSETORGN_ORGN FOREIGN KEY (ORGANIZATIONID) REFERENCES ORGN (ID); ALTER TABLE DK_DISCOUNTBONUSSETORGN ADD CONSTRAINT FK_DK_DSCNTBNSSETORGN_ORGNGRP FOREIGN KEY (ORGANIZATIONGROUPID) REFERENCES ORGN_GRP (ID); ALTER TABLE DK_DISCOUNTBONUSSETORGN ADD CONSTRAINT FK_DK_DSCNTBNSSETS FOREIGN KEY (DISCOUNTBONUSSETID) REFERENCES DK_DISCOUNTBONUSSETS (ID) ON DELETE CASCADE ON UPDATE CASCADE USING INDEX FK_DK_DISCOUNTBONUSSETORGN; ALTER TABLE DK_DISCOUNTBONUSSETSTORGRP ADD CONSTRAINT FK_DK_DSCNTBONUSSETS FOREIGN KEY (DISCOUNTBONUSSETID) REFERENCES DK_DISCOUNTBONUSSETS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DK_DISCOUNTBONUSSETSTORGRP ADD CONSTRAINT FK_STORGRP FOREIGN KEY (STOREGROUPID) REFERENCES STORGRP (ID); ALTER TABLE DK_GIFTCERTIFICATE ADD CONSTRAINT DK_GIFTCERTIFICATE_FK FOREIGN KEY (GDSID) REFERENCES GOODS (ID); ALTER TABLE DK_GODGODPAMLANREF ADD FOREIGN KEY (GOODPARAMID) REFERENCES GDSPARAMPRM (ID); ALTER TABLE DK_GODGODPAMLANREF ADD FOREIGN KEY (GOODID) REFERENCES GOODS (ID); ALTER TABLE DK_GODGODPAMLANREF ADD FOREIGN KEY (LANGUAGEID) REFERENCES DK_LANGUAGE (ID); ALTER TABLE DK_GODPAMLANREF ADD FOREIGN KEY (GOODPARAMID) REFERENCES GDSPARAMPRM (ID); ALTER TABLE DK_GODPAMLANREF ADD FOREIGN KEY (LANGUAGEID) REFERENCES DK_LANGUAGE (ID); ALTER TABLE DK_GODPAMVALLANREF ADD FOREIGN KEY (GOODPARAMVALID) REFERENCES GDSPARAMVAL (ID); ALTER TABLE DK_GODPAMVALLANREF ADD FOREIGN KEY (LANGUAGEID) REFERENCES DK_LANGUAGE (ID); ALTER TABLE DK_GOODSLANGUAGEREF ADD FOREIGN KEY (GOODSID) REFERENCES GOODS (ID); ALTER TABLE DK_GOODSLANGUAGEREF ADD FOREIGN KEY (LANGUAGEID) REFERENCES DK_LANGUAGE (ID); ALTER TABLE DK_GOODSPACK ADD CONSTRAINT DK_GOODSPACK_FK FOREIGN KEY (GDSID) REFERENCES GOODS (ID); ALTER TABLE DK_MAILTHEMETYPESORGNREF ADD CONSTRAINT DK_MAILTHEMETYPESORGNREF_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_MAILTHEMETYPESORGNREF ADD CONSTRAINT DK_MAILTHEMETYPESORGNREF_TYPEID FOREIGN KEY (TYPEID) REFERENCES DK_MAILINGTYPES (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_MAILTHEMETYPESORGNREF ADD CONSTRAINT MAILTHEMETYPESORGNREF_THEMEID FOREIGN KEY (THEMEID) REFERENCES DK_MAILINGTHEMES (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_MAILTYPEORGNREF ADD CONSTRAINT DK_MAILTYPEORGNREF_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_MAILTYPEORGNREF ADD CONSTRAINT DK_MAILTYPEORGNREF_TYPEID FOREIGN KEY (TYPEID) REFERENCES DK_MAILINGTYPES (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DK_PENALPROITY ADD FOREIGN KEY (PERSONALID) REFERENCES PERSONAL (ID); ALTER TABLE DK_PRSNGRPREF ADD FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID); ALTER TABLE DK_PRSNGRPREF ADD FOREIGN KEY (PRSNGRPID) REFERENCES DK_PRSNGRP (ID); ALTER TABLE DOCMCATEGORY ADD CONSTRAINT DOCMCATEGORY_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMDOCDOCUMENT ADD CONSTRAINT DOCMDOCDOCUMENT_FOLDERID FOREIGN KEY (FOLDERID) REFERENCES DOCMDOCFOLDER (ID) ON UPDATE CASCADE; ALTER TABLE DOCMDOCDOCUMENT ADD CONSTRAINT DOCMDOCDOCUMENT_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMDOCDOCUMENT ADD CONSTRAINT DOCMDOCDOCUMENT_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMDOCFOLDER ADD CONSTRAINT DOCMDOCFOLDER_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMDOCFOLDER ADD CONSTRAINT DOCMDOCFOLDER_PARENTID FOREIGN KEY (PARENTID) REFERENCES DOCMDOCFOLDER (ID) ON UPDATE CASCADE; ALTER TABLE DOCMGROUPS ADD CONSTRAINT DOCMGROUPS_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMGROUPS ADD CONSTRAINT DOCMGROUPS_PARENTID FOREIGN KEY (PARENTID) REFERENCES DOCMGROUPS (ID) ON UPDATE CASCADE; ALTER TABLE DOCMMSG ADD CONSTRAINT DOCMMSG_SENDUSERID FOREIGN KEY (SENDUSERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMMSG ADD CONSTRAINT DOCMMSG_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMMSGFOLDER ADD CONSTRAINT DOCMMSGFOLDER_PARENTID FOREIGN KEY (PARENTID) REFERENCES DOCMMSGFOLDER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMMSGFOLDER ADD CONSTRAINT DOCMMSGFOLDER_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMMSGRUSERS ADD CONSTRAINT DOCMMSGRUSERS_FOLDERID FOREIGN KEY (FOLDERID) REFERENCES DOCMMSGFOLDER (ID) ON UPDATE CASCADE; ALTER TABLE DOCMMSGRUSERS ADD CONSTRAINT DOCMMSGRUSERS_MSGID FOREIGN KEY (MSGID) REFERENCES DOCMMSG (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMMSGRUSERS ADD CONSTRAINT DOCMMSGRUSERS_PARENTID FOREIGN KEY (PARENTID) REFERENCES DOCMMSGRUSERS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DOCMMSGRUSERS ADD CONSTRAINT DOCMMSGRUSERS_RUSERID FOREIGN KEY (RUSERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_CITYID FOREIGN KEY (CITYID) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_CONTACTID FOREIGN KEY (CONTACTID) REFERENCES CONTACTS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_GRPID FOREIGN KEY (GRPID) REFERENCES DOCMGROUPS (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_IPRSNID FOREIGN KEY (IPRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_IUSERID FOREIGN KEY (IUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_MUSERID FOREIGN KEY (MUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_SALEORGNID FOREIGN KEY (SALEORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_SENDORGNID FOREIGN KEY (SENDORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_TRANSORGNID FOREIGN KEY (TRANSORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT DOCMTASK_TRANSTPOINTID FOREIGN KEY (TRANSTPOINTID) REFERENCES TRADEPOINT (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASK ADD CONSTRAINT FK_DOCMTASK_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASKATTACH ADD CONSTRAINT DOCMTASKATTACH_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASKATTACH ADD CONSTRAINT DOCMTASKATTACH_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE DOCMTASKCATEGORY ADD CONSTRAINT DOCMTASKCATEGORY_CATEGORYID FOREIGN KEY (CATEGORYID) REFERENCES DOCMCATEGORY (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASKCATEGORY ADD CONSTRAINT DOCMTASKCATEGORY_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASKFINANCE ADD CONSTRAINT DOCMTASKFINANCE_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASKFINANCE ADD CONSTRAINT DOCMTASKFINANCE_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASKFINANCE ADD CONSTRAINT DOCMTASKFINANCE_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASKHB ADD CONSTRAINT DOCMTASKHB_GRPID FOREIGN KEY (GRPID) REFERENCES DOCMGROUPS (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASKHB ADD CONSTRAINT DOCMTASKHB_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASKHB (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASKHBCATEGORY ADD CONSTRAINT DOCMTASKHBCATEGORY_CTGID FOREIGN KEY (CATEGORYID) REFERENCES DOCMCATEGORY (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASKHBCATEGORY ADD CONSTRAINT DOCMTASKHBCATEGORY_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASKHB (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASKSTAGE ADD CONSTRAINT DOCMTASKSTAGE_IUSERID FOREIGN KEY (IUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASKSTAGE ADD CONSTRAINT DOCMTASKSTAGE_RUSERID FOREIGN KEY (RUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE DOCMTASKSTAGE ADD CONSTRAINT DOCMTASKSTAGE_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASKWORK ADD CONSTRAINT DOCMTASKWORK_TASKID FOREIGN KEY (TASKID) REFERENCES DOCMTASK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE DOCMTASKWORK ADD CONSTRAINT FK_DOCMTASKWORK_EUSERID FOREIGN KEY (EUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE ECRGOODS ADD CONSTRAINT ECRGOODS_ECCRID FOREIGN KEY (ECCRID) REFERENCES SYSCONST (ID); ALTER TABLE ECRGOODS ADD CONSTRAINT ECRGOODS_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID); ALTER TABLE EDUCATION ADD CONSTRAINT FK_EDUCATION_PRSN FOREIGN KEY (PRSNID) REFERENCES PRSNCARD (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FRREPORT ADD CONSTRAINT FRREPORT_PARENTID FOREIGN KEY (PARENTID) REFERENCES FRREPORT (ID) ON UPDATE CASCADE; ALTER TABLE FRREPORTTREE ADD CONSTRAINT FRREPORTTREE_PARENTID FOREIGN KEY (PARENTID) REFERENCES FRREPORTTREE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FRREPORTTREEUSER ADD CONSTRAINT FRREPORTTREEUSER_FRRPID FOREIGN KEY (FRRPID) REFERENCES FRREPORTTREE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FRREPORTTREEUSER ADD CONSTRAINT FRREPORTTREEUSER_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FRREPORTTREEUSER ADD CONSTRAINT FRREPORTTREEUSER_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FUNCMANAGE ADD CONSTRAINT FK_FUNCMANAGE_OWNER FOREIGN KEY (OWNER) REFERENCES FUNCMANAGE (ID) ON UPDATE CASCADE; ALTER TABLE FUNCSUPPORT ADD CONSTRAINT FK_FUNCSUPPORT_OWNER FOREIGN KEY (OWNER) REFERENCES FUNCSUPPORT (ID) ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVDT (ID) ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_GDDID FOREIGN KEY (GDDID) REFERENCES GDDDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_GDDKEY FOREIGN KEY (GDDKEY) REFERENCES GDDKT (ID) ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_GDSKEY FOREIGN KEY (GDSKEY) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_PRICEID FOREIGN KEY (PRICEID) REFERENCES PRICELIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_REMZAPID FOREIGN KEY (REMZAPID) REFERENCES SC_REMZAP (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_SZGDSID FOREIGN KEY (SZGDSID) REFERENCES STORZDTGDS (ID) ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_ZID FOREIGN KEY (ZID) REFERENCES WORKZAKAZ (ID) ON UPDATE CASCADE; ALTER TABLE GDDDT ADD CONSTRAINT GDDDT_ZKID FOREIGN KEY (ZKID) REFERENCES GDDKT (ID) ON UPDATE CASCADE; ALTER TABLE GDDDTDDU ADD CONSTRAINT GDDDTDDU_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVDT (ID) ON UPDATE CASCADE; ALTER TABLE GDDDTDDU ADD CONSTRAINT GDDDTDDU_NAMEID FOREIGN KEY (NAMEID) REFERENCES HBGDDDU (ID) ON UPDATE CASCADE; ALTER TABLE GDDDTPARAM ADD CONSTRAINT GDDDTPARAM_GDDID FOREIGN KEY (GDDID) REFERENCES GDDDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDDDTPARAM ADD CONSTRAINT GDDDTPARAM_SC_CARDT_ID FOREIGN KEY (SC_CARDT_ID) REFERENCES SC_CARDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE GDDDTU ADD CONSTRAINT GDDDTU_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVDTU (ID) ON UPDATE CASCADE; ALTER TABLE GDDDTU ADD CONSTRAINT GDDDTU_SERVUID FOREIGN KEY (SERVUID) REFERENCES HBSERVU (ID) ON UPDATE CASCADE; ALTER TABLE GDDDTUNL ADD CONSTRAINT GDDDTUNL_DGVID FOREIGN KEY (DGVID) REFERENCES DGVDTUD (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDDDTUNL ADD CONSTRAINT GDDDTUNL_DTNLID FOREIGN KEY (DTNLID) REFERENCES HBDTNL (ID) ON UPDATE CASCADE; ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVKT (ID) ON UPDATE CASCADE; ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_GDDKEY FOREIGN KEY (GDDKEY) REFERENCES GDDDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_GDDKTID FOREIGN KEY (GDDKTID) REFERENCES GDDKT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_GDSKEY FOREIGN KEY (GDSKEY) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_VENDORNAMEID FOREIGN KEY (VENDORNAMEID) REFERENCES VENDORNAME (ID) ON UPDATE CASCADE; ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_WRGDSID FOREIGN KEY (WRGDSID) REFERENCES WORKREQUESTGDS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_ZID FOREIGN KEY (ZID) REFERENCES WORKZAKAZ (ID) ON UPDATE CASCADE; ALTER TABLE GDDKT ADD CONSTRAINT GDDKT_ZMID FOREIGN KEY (ZMID) REFERENCES WORKZMST (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTDDU ADD CONSTRAINT GDDKTDDU_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVKT (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTDDU ADD CONSTRAINT GDDKTDDU_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTDDU ADD CONSTRAINT GDDKTDDU_UID FOREIGN KEY (UID) REFERENCES HBKTSU (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTPARAM ADD CONSTRAINT GDDKTPARAM_GDDID FOREIGN KEY (GDDID) REFERENCES GDDKT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDDKTPARAM ADD CONSTRAINT GDDKTPARAM_SC_CARDT_ID FOREIGN KEY (SC_CARDT_ID) REFERENCES SC_CARDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE GDDKTQNT ADD CONSTRAINT GDDKTQNT_ID FOREIGN KEY (ID) REFERENCES GDDKT (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTQNT ADD CONSTRAINT GDDKTQNT_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTU ADD CONSTRAINT GDDKTU_DOCID FOREIGN KEY (DOCID) REFERENCES DGVKTU (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDDKTU ADD CONSTRAINT GDDKTU_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTU ADD CONSTRAINT GDDKTU_UID FOREIGN KEY (UID) REFERENCES HBKTSU (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTZKPARAMS ADD CONSTRAINT GDDKTZKPARAMS_CUSERID FOREIGN KEY (CUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTZKPARAMS ADD CONSTRAINT GDDKTZKPARAMS_GDDKTID FOREIGN KEY (GDDKTID) REFERENCES GDDKT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDDKTZKPARAMS ADD CONSTRAINT GDDKTZKPARAMS_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE GDDKTZKPARAMS ADD CONSTRAINT GDDKTZKPARAMS_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE GDSKTREQ ADD CONSTRAINT FK_GDSKTREQ_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON UPDATE CASCADE; ALTER TABLE GDSKTREQ ADD CONSTRAINT FK_GDSKTREQ_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE GDSKTREQ ADD CONSTRAINT FK_GDSKTREQ_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE GDSKTREQ ADD CONSTRAINT FK_GDSKTREQ_SZID FOREIGN KEY (SZID) REFERENCES STORZAKAZDT (ID) ON UPDATE CASCADE; ALTER TABLE GDSKTREQ ADD CONSTRAINT FK_GDSKTREQ_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE GDSKTREQGDS ADD CONSTRAINT FK_GDSKTREQGDS_GKID FOREIGN KEY (GKID) REFERENCES GDSKTREQ (ID) ON UPDATE CASCADE; ALTER TABLE GDSKTREQGDS ADD CONSTRAINT FK_GDSKTREQGDS_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE GDSKTREQGDS ADD CONSTRAINT FK_GDSKTREQGDS_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON UPDATE CASCADE; ALTER TABLE GDSPARAMGDSREF ADD CONSTRAINT GDSPARAMGDSREF_FIXVAL FOREIGN KEY (FIXVAL) REFERENCES GDSPARAMVAL (ID) ON UPDATE CASCADE; ALTER TABLE GDSPARAMGDSREF ADD CONSTRAINT GDSPARAMGDSREF_GOODSID FOREIGN KEY (GOODSID) REFERENCES GOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDSPARAMGDSREF ADD CONSTRAINT GDSPARAMGDSREF_PARAMID FOREIGN KEY (PARAMID) REFERENCES GDSPARAMPRM (ID) ON UPDATE CASCADE; ALTER TABLE GDSPARAMGRP ADD CONSTRAINT GDSPARAMGRP_PARENTID FOREIGN KEY (PARENTID) REFERENCES GDSPARAMGRP (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE GDSPARAMGRPREF ADD CONSTRAINT GDSPARAMGRPREF_GROUPID FOREIGN KEY (GROUPID) REFERENCES GOODSGROUPS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDSPARAMGRPREF ADD CONSTRAINT GDSPARAMGRPREF_PARAMID FOREIGN KEY (PARAMID) REFERENCES GDSPARAMPRM (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE GDSPARAMPRM ADD CONSTRAINT GDSPARAMPRM_GROUPID FOREIGN KEY (GROUPID) REFERENCES GDSPARAMGRP (ID) ON UPDATE CASCADE; ALTER TABLE GDSPARAMPRM ADD CONSTRAINT GDSPARAMPRM_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE GDSPARAMVAL ADD CONSTRAINT GDSPARAMVAL_BDGTITEM1 FOREIGN KEY (BDGTITEM1) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE; ALTER TABLE GDSPARAMVAL ADD CONSTRAINT GDSPARAMVAL_BDGTITEM2 FOREIGN KEY (BDGTITEM2) REFERENCES BDG_ITEM (ID) ON UPDATE CASCADE; ALTER TABLE GDSPARAMVAL ADD CONSTRAINT GDSPARAMVAL_PARAMID FOREIGN KEY (PARAMID) REFERENCES GDSPARAMPRM (ID) ON UPDATE CASCADE; ALTER TABLE GOODS ADD CONSTRAINT GOODS_ACPRLS1 FOREIGN KEY (ACPRLS1) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE GOODS ADD CONSTRAINT GOODS_ACPRLS2 FOREIGN KEY (ACPRLS2) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE GOODS ADD CONSTRAINT GOODS_ACPRLS3 FOREIGN KEY (ACPRLS3) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE GOODS ADD CONSTRAINT GOODS_ACPRLS4 FOREIGN KEY (ACPRLS4) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE GOODS ADD CONSTRAINT GOODS_COUNTRYID FOREIGN KEY (COUNTRYID) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE GOODS ADD CONSTRAINT GOODS_DECRNORMID FOREIGN KEY (DECRNORMID) REFERENCES GOODS_DECRNORM (ID) ON UPDATE CASCADE; ALTER TABLE GOODS ADD CONSTRAINT GOODS_ONEID FOREIGN KEY (ONEID) REFERENCES HBONE (ID) ON UPDATE CASCADE; ALTER TABLE GOODS ADD CONSTRAINT GOODS_OWNER FOREIGN KEY (OWNER) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE GOODSGROUPS ADD CONSTRAINT GOODSGROUPS_ACPRLS1 FOREIGN KEY (ACPRLS1) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE GOODSGROUPS ADD CONSTRAINT GOODSGROUPS_ACPRLS2 FOREIGN KEY (ACPRLS2) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE GOODSGROUPS ADD CONSTRAINT GOODSGROUPS_ACPRLS3 FOREIGN KEY (ACPRLS3) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE GOODSGROUPS ADD CONSTRAINT GOODSGROUPS_ACPRLS4 FOREIGN KEY (ACPRLS4) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE GOODSGROUPS ADD CONSTRAINT GOODSGROUPS_PARENTID FOREIGN KEY (PARENTID) REFERENCES GOODSGROUPS (ID) ON UPDATE CASCADE; ALTER TABLE HBGDDDU ADD CONSTRAINT HBGDDDU_ONEID FOREIGN KEY (ONEID) REFERENCES HBONE (ID) ON UPDATE CASCADE; ALTER TABLE HBKTSU ADD CONSTRAINT HBKTSU_ONEID FOREIGN KEY (ONEID) REFERENCES HBONE (ID) ON UPDATE CASCADE; ALTER TABLE HBSERVU ADD CONSTRAINT HBSERVU_ONEID FOREIGN KEY (ONEID) REFERENCES HBONE (ID) ON UPDATE CASCADE; ALTER TABLE HBSERVU ADD CONSTRAINT HBSERVU_PARENTID FOREIGN KEY (PARENTID) REFERENCES HBSERVUGRP (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE HBSERVUGRP ADD CONSTRAINT HBSERVUGRP_PARENTID FOREIGN KEY (PARENTID) REFERENCES HBSERVUGRP (ID) ON UPDATE CASCADE; ALTER TABLE HB_VEHICLE ADD CONSTRAINT HB_VEHICLE_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE HB_VEHICLE ADD CONSTRAINT HB_VEHICLE_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE INFOSRC ADD CONSTRAINT INFOSRC_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE INVOPISDATA ADD CONSTRAINT INVOPISDATA_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE INVOPISDATA ADD CONSTRAINT INVOPISDATA_KID FOREIGN KEY (KID) REFERENCES GDDKT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE INVOPISDATA ADD CONSTRAINT INVOPISDATA_OPISID FOREIGN KEY (OPISID) REFERENCES INVOPISHEADER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE INVOPISHEADER ADD CONSTRAINT INVOPISHEADER_DGVDTID FOREIGN KEY (DGVDTID) REFERENCES DGVDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE INVOPISHEADER ADD CONSTRAINT INVOPISHEADER_DGVKTID FOREIGN KEY (DGVKTID) REFERENCES DGVKT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE INVOPISHEADER ADD CONSTRAINT INVOPISHEADER_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE KASSACCR ADD CONSTRAINT KASSACCR_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE KASSACCR ADD CONSTRAINT KASSACCR_KASSKEY FOREIGN KEY (KASSKEY) REFERENCES KASSDATA (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE KASSAVACCR ADD CONSTRAINT KASSAVACCR_ACCNID FOREIGN KEY (ACCNID) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVACCR ADD CONSTRAINT KASSAVACCR_AVID FOREIGN KEY (AVID) REFERENCES KASSAVLIST (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVCR ADD CONSTRAINT KASSAVCR_KASSAVID FOREIGN KEY (KASSAVID) REFERENCES KASSAVLIST (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVCR ADD CONSTRAINT KASSAVCR_KASSDTID FOREIGN KEY (KASSDTID) REFERENCES KASSDATA (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVDATA ADD CONSTRAINT KASSAVDATA_AVID FOREIGN KEY (AVID) REFERENCES KASSAVLIST (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVDATA ADD CONSTRAINT KASSAVDATA_COMMENTID FOREIGN KEY (COMMENTID) REFERENCES DOCCOMMENT (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVDATA ADD CONSTRAINT KASSAVDATA_DGVID FOREIGN KEY (DGVID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVDATA ADD CONSTRAINT KASSAVDATA_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVDATA ADD CONSTRAINT KASSAVDATA_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVDATA ADD CONSTRAINT KASSAVDATA_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSAVDATA ADD CONSTRAINT KASSAVDATA_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE KASSAVLIST ADD CONSTRAINT KASSAVLIST_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_AVID FOREIGN KEY (AVID) REFERENCES KASSAVLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_COMMENTID FOREIGN KEY (COMMENTID) REFERENCES DOCCOMMENT (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_CONTACTID FOREIGN KEY (CONTACTID) REFERENCES CONTACTS (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_KASSDATAKEY FOREIGN KEY (KASSDATAKEY) REFERENCES KASSDATA (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_KASSID FOREIGN KEY (KASSID) REFERENCES KASSLIST (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_KASSID_DAT_ FOREIGN KEY (KASSID, DAT_) REFERENCES KASSDAYS (KASSID, DAT_) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_KUSERID FOREIGN KEY (KUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_SALEKTKEY FOREIGN KEY (SALEKTKEY) REFERENCES SALEKT (ID) ON DELETE SET NULL ON UPDATE CASCADE USING INDEX KASSDATA_SAKEKTKEY; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_STORKEY FOREIGN KEY (STORKEY) REFERENCES SALE (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE KASSDATA ADD CONSTRAINT KASSDATA_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE KASSDAYS ADD CONSTRAINT KASSDAYS_KASSID FOREIGN KEY (KASSID) REFERENCES KASSLIST (ID) ON UPDATE CASCADE; ALTER TABLE KASSLIST ADD CONSTRAINT KASSLIST_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE KASSLIST ADD CONSTRAINT KASSLIST_INTRKASS FOREIGN KEY (INTRKASS) REFERENCES KASSLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSLIST ADD CONSTRAINT KASSLIST_INTROP FOREIGN KEY (INTROP) REFERENCES ACOPRLST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSLIST ADD CONSTRAINT KASSLIST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE KASSLIST ADD CONSTRAINT KASSLIST_OUTKASS FOREIGN KEY (OUTKASS) REFERENCES KASSLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSLIST ADD CONSTRAINT KASSLIST_OUTOP FOREIGN KEY (OUTOP) REFERENCES ACOPRLST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE KASSLIST ADD CONSTRAINT KASSLIST_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE LANG ADD CONSTRAINT FK_LANG_PRSN FOREIGN KEY (PRSNID) REFERENCES PRSNCARD (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "LEV" ADD CONSTRAINT LEV_OWNER FOREIGN KEY (OWNER) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE MAINAMCR ADD CONSTRAINT MAINAMCR_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID); ALTER TABLE MAINAMCR ADD CONSTRAINT MAINAMCR_MAINKEY FOREIGN KEY (MAINKEY) REFERENCES MAINAMMST (ID); ALTER TABLE MAINAMMST ADD CONSTRAINT MAINAMMST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID); ALTER TABLE MAINAMSLV ADD CONSTRAINT MAINAMSLV_GRPID FOREIGN KEY (GRPID) REFERENCES MAINGRP (ID) ON UPDATE CASCADE; ALTER TABLE MAINAMSLV ADD CONSTRAINT MAINAMSLV_MAINMEANID FOREIGN KEY (MAINMEANID) REFERENCES MAINMEAN (ID) ON UPDATE CASCADE; ALTER TABLE MAINAMSLV ADD CONSTRAINT MAINAMSLV_MSTID FOREIGN KEY (MSTID) REFERENCES MAINAMMST (ID) ON UPDATE CASCADE; ALTER TABLE MAINCRCH ADD CONSTRAINT MAINCRCH_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID); ALTER TABLE MAINCRCH ADD CONSTRAINT MAINCRCH_CHNGKEY FOREIGN KEY (CHNGKEY) REFERENCES MAINPRICE (ID); ALTER TABLE MAININPAC ADD CONSTRAINT MAININPAC_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE MAININPAC ADD CONSTRAINT MAININPAC_MAINKEY FOREIGN KEY (MAINKEY) REFERENCES MAINMEAN (ID) ON UPDATE CASCADE; ALTER TABLE MAINMEAN ADD CONSTRAINT MAINMEAN_GDDKEY FOREIGN KEY (GDDKEY) REFERENCES GDDDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MAINMEAN ADD CONSTRAINT MAINMEAN_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE MAINMEAN ADD CONSTRAINT MAINMEAN_GROUPID FOREIGN KEY (GROUPID) REFERENCES MAINGRP (ID) ON UPDATE CASCADE; ALTER TABLE MAINMEAN ADD CONSTRAINT MAINMEAN_GROUPID1 FOREIGN KEY (GROUPID1) REFERENCES MAINGRP (ID) ON UPDATE CASCADE; ALTER TABLE MAINMEAN ADD CONSTRAINT MAINMEAN_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID); ALTER TABLE MAINMEAN ADD CONSTRAINT MAINMEAN_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE MAINMEANSLV ADD CONSTRAINT MAINMEANSLV_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE MAINMEANSLV ADD CONSTRAINT MAINMEANSLV_MMID FOREIGN KEY (MMID) REFERENCES MAINMEAN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MAINMOVE ADD CONSTRAINT MAINMOVE_GRPDST0 FOREIGN KEY (GRPDST0) REFERENCES MAINGRP (ID) ON UPDATE CASCADE; ALTER TABLE MAINMOVE ADD CONSTRAINT MAINMOVE_GRPDST1 FOREIGN KEY (GRPDST1) REFERENCES MAINGRP (ID) ON UPDATE CASCADE; ALTER TABLE MAINMOVE ADD CONSTRAINT MAINMOVE_GRPSRC0 FOREIGN KEY (GRPSRC0) REFERENCES MAINGRP (ID) ON UPDATE CASCADE; ALTER TABLE MAINMOVE ADD CONSTRAINT MAINMOVE_GRPSRC1 FOREIGN KEY (GRPSRC1) REFERENCES MAINGRP (ID) ON UPDATE CASCADE; ALTER TABLE MAINMOVE ADD CONSTRAINT MAINMOVE_MAINID FOREIGN KEY (MAINID) REFERENCES MAINMEAN (ID) ON UPDATE CASCADE; ALTER TABLE MAINMOVE ADD CONSTRAINT MAINMOVE_PODRDST FOREIGN KEY (PODRDST) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE MAINMOVE ADD CONSTRAINT MAINMOVE_PODRSRC FOREIGN KEY (PODRSRC) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE MAINOUTAC ADD CONSTRAINT MAINOUTAC_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE MAINOUTAC ADD CONSTRAINT MAINOUTAC_MAINKEY FOREIGN KEY (MAINKEY) REFERENCES MAINMEAN (ID) ON UPDATE CASCADE; ALTER TABLE MAINPRICE ADD CONSTRAINT MAINPRICE_MAINID FOREIGN KEY (MAINID) REFERENCES MAINMEAN (ID) ON UPDATE CASCADE; ALTER TABLE MAINRPTINVMST ADD CONSTRAINT MAINRPTINVMST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE MAINRPTINVMST ADD CONSTRAINT MAINRPTINVMST_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE MAINRPTINVSLV ADD CONSTRAINT MAINRPTINVSLV_MAINID FOREIGN KEY (MAINID) REFERENCES MAINMEAN (ID) ON UPDATE CASCADE; ALTER TABLE MAINRPTINVSLV ADD CONSTRAINT MAINRPTINVSLV_MSTID FOREIGN KEY (MSTID) REFERENCES MAINRPTINVMST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MANAGER_PRICE_ORGN ADD CONSTRAINT FK_MANAGER_PRICE_ORGN_ORGN FOREIGN KEY (ORGN_ID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE MANAGER_PRICE_ORGN ADD CONSTRAINT FK_MANAGER_PRICE_ORGN_PERS FOREIGN KEY (PERSONAL_ID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE MANAGER_PRICE_ORGN ADD CONSTRAINT FK_MANAGER_PRICE_ORGN_PRICE FOREIGN KEY (PRICELIST_ID) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE MBPDGV ADD CONSTRAINT MBPDGV_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID); ALTER TABLE MBPDGV ADD CONSTRAINT MBPDGV_PODR FOREIGN KEY (PODR) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE MBPDGV ADD CONSTRAINT MBPDGV_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE MBPGDD ADD CONSTRAINT MBPGDD_DGVID FOREIGN KEY (DGVID) REFERENCES MBPDGV (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MBPGDD ADD CONSTRAINT MBPGDD_GDDID FOREIGN KEY (GDDID) REFERENCES MBPGDD (ID) ON UPDATE CASCADE; ALTER TABLE MBPGDD ADD CONSTRAINT MBPGDD_MBPID FOREIGN KEY (MBPID) REFERENCES MBPMEAN (ID) ON UPDATE CASCADE; ALTER TABLE MBPMEAN ADD CONSTRAINT MBPMEAN_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE MBPMEAN ADD CONSTRAINT MBPMEAN_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID); ALTER TABLE MDOCS ADD CONSTRAINT FK_MDOCS_ORGN FOREIGN KEY (TO_ID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE MDOCS ADD CONSTRAINT FK_MDOCS_PERSONAL FOREIGN KEY (MANAGER_ID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE MDOC_GOODS ADD CONSTRAINT FK_MDOC_GOODS_GOODS FOREIGN KEY (GOOD_ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE MDOC_GOODS ADD CONSTRAINT FK_MDOC_GOODS_MDOCS FOREIGN KEY (MDOC_ID) REFERENCES MDOCS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MOBIL_MAIN ADD CONSTRAINT FK_MOBIL_MAIN_ACOPRLST1 FOREIGN KEY (BEZNAL_OPER) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE MOBIL_MAIN ADD CONSTRAINT FK_MOBIL_MAIN_ACOPRLST2 FOREIGN KEY (NAL_OPER) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE MOBIL_MAIN ADD CONSTRAINT FK_MOBIL_MAIN_PRICELISTS FOREIGN KEY (BASE_PRICE_LIST_ID) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE MOG_DISCOUNT ADD CONSTRAINT FK_MOG_DISCOUNT_GOODS FOREIGN KEY (GROOP_ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE MOG_DISCOUNT ADD CONSTRAINT FK_MOG_DISCOUNT_ORGN FOREIGN KEY (ORGN_ID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE MOG_DISCOUNT ADD CONSTRAINT FK_MOG_DISCOUNT_PERSONAL FOREIGN KEY (PERSONAL_ID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE OBJ_ATTACH ADD CONSTRAINT OBJ_ATTACH_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OBJ_ATTACH ADD CONSTRAINT OBJ_ATTACH_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE OBJ_CLASS ADD CONSTRAINT OBJ_CLASS_OBJ_TYP FOREIGN KEY (OBJ_TYP) REFERENCES OBJ_TYPE (ID) ON UPDATE CASCADE; ALTER TABLE OBJ_MSG ADD CONSTRAINT OBJ_MSG_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OBJ_MSG ADD CONSTRAINT OBJ_MSG_PARENTID FOREIGN KEY (PARENTID) REFERENCES OBJ_MSG (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE OBJ_MSG ADD CONSTRAINT OBJ_MSG_SENDUSERID FOREIGN KEY (SENDUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE OBJ_MSGREAD ADD CONSTRAINT OBJ_MSGREAD_MSGID FOREIGN KEY (MSGID) REFERENCES OBJ_MSG (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OBJ_MSGREAD ADD CONSTRAINT OBJ_MSGREAD_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE OBJ_STAGE ADD CONSTRAINT OBJ_STAGE_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON UPDATE CASCADE; ALTER TABLE OBJ_STAGE ADD CONSTRAINT OBJ_STAGE_STAGEID FOREIGN KEY (STAGEID) REFERENCES OBJ_STAGESTD (ID) ON UPDATE CASCADE; ALTER TABLE OBJ_STAGEROUTESTD ADD CONSTRAINT OBJ_STAGEROUTESTD_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE OBJ_STAGESTD ADD CONSTRAINT OBJ_STAGESTD_STAGEROUTEID FOREIGN KEY (STAGEROUTEID) REFERENCES OBJ_STAGEROUTESTD (ID) ON UPDATE CASCADE; ALTER TABLE OPERACT ADD CONSTRAINT OPERACT_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERACT ADD CONSTRAINT OPERACT_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERADD ADD CONSTRAINT OPERADD_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERADD ADD CONSTRAINT OPERADD_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERADD ADD CONSTRAINT OPERADD_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERATTEST ADD CONSTRAINT OPERATTEST_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERATTEST ADD CONSTRAINT OPERATTEST_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERAWARD ADD CONSTRAINT OPERAWARD_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERAWARD ADD CONSTRAINT OPERAWARD_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERDELETE ADD CONSTRAINT OPERDELETE_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERDELETE ADD CONSTRAINT OPERDELETE_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERDELETE ADD CONSTRAINT OPERDELETE_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERFIO ADD CONSTRAINT OPERFIO_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERFIO ADD CONSTRAINT OPERFIO_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERREMOVE ADD CONSTRAINT OPERREMOVE_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERREMOVE ADD CONSTRAINT OPERREMOVE_PODRPOSTNEWID FOREIGN KEY (PODRPOSTNEWID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERREMOVE ADD CONSTRAINT OPERREMOVE_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERREST ADD CONSTRAINT OPERREST_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERREST ADD CONSTRAINT OPERREST_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERSTUDY ADD CONSTRAINT OPERSTUDY_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERSTUDY ADD CONSTRAINT OPERSTUDY_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERTRIP ADD CONSTRAINT OPERTRIP_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE OPERTRIP ADD CONSTRAINT OPERTRIP_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE OPERTRIP ADD CONSTRAINT OPERTRIP_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGN ADD CONSTRAINT ORGN_MANAGER FOREIGN KEY (MANAGER) REFERENCES PRSNCARD (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGN ADD CONSTRAINT ORGN_NALORGNID FOREIGN KEY (NALORGNID) REFERENCES ORGN (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGN ADD CONSTRAINT ORGN_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGN ADD CONSTRAINT ORGN_ORGNACNID FOREIGN KEY (ORGNACNID) REFERENCES PERSONAL (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGN ADD CONSTRAINT ORGN_ORGNDIRID FOREIGN KEY (ORGNDIRID) REFERENCES PERSONAL (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGN ADD CONSTRAINT ORGN_PRICEID FOREIGN KEY (PRICEID) REFERENCES PRICELIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGNBANKACCN ADD CONSTRAINT ORGNBANKACCN_ACCNNDSID FOREIGN KEY (ACCNNDSID) REFERENCES ORGNBANKACCN (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGNBANKACCN ADD CONSTRAINT ORGNBANKACCN_BANKID FOREIGN KEY (BANKID) REFERENCES BANKMFO (ID) ON UPDATE CASCADE; ALTER TABLE ORGNBANKACCN ADD CONSTRAINT ORGNBANKACCN_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE ORGNBANKACCN ADD CONSTRAINT ORGNBANKACCN_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ORGNGRPOPEMAIL ADD CONSTRAINT ORGNGRPOPEMAIL_EDUSERID FOREIGN KEY (EDUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE ORGNGRPOPEMAIL ADD CONSTRAINT ORGNGRPOPEMAIL_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGNGRPOPEMAIL ADD CONSTRAINT ORGNGRPOPEMAIL_ORGNGRPID FOREIGN KEY (ORGNGRPID) REFERENCES ORGN_GRP (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGNGRPREF ADD CONSTRAINT ORGNGRPREF_GRPID FOREIGN KEY (GRPID) REFERENCES ORGN_GRP (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGNGRPREF ADD CONSTRAINT ORGNGRPREF_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGNINFO ADD CONSTRAINT ORGNINFO_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGNINFO ADD CONSTRAINT ORGNINFO_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGNINFO ADD CONSTRAINT ORGNINFO_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ORGNINFO ADD CONSTRAINT ORGNINFO_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ORGNPRICELIST ADD CONSTRAINT ORGNPRICELIST_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGNPRICELIST ADD CONSTRAINT ORGNPRICELIST_PRLSID FOREIGN KEY (PRLSID) REFERENCES PRICELIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGN_GRP ADD CONSTRAINT ORGN_GRP_EDUSERID FOREIGN KEY (EDUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE ORGN_GRP ADD CONSTRAINT ORGN_GRP_OWNUSERID FOREIGN KEY (OWNUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE ORGN_GRPHIDE ADD CONSTRAINT ORGN_GRPHIDE_GRPID FOREIGN KEY (GRPID) REFERENCES ORGN_GRP (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGN_GRPHIDE ADD CONSTRAINT ORGN_GRPHIDE_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGN_MANAGER ADD CONSTRAINT ORGN_MANAGER_EDUSERID FOREIGN KEY (EDUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE ORGN_MANAGER ADD CONSTRAINT ORGN_MANAGER_MNGRID FOREIGN KEY (MNGRID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGN_MANAGER ADD CONSTRAINT ORGN_MANAGER_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ORGN_MANAGER ADD CONSTRAINT ORGN_MANAGER_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_FOTGRPID FOREIGN KEY (FOTGRPID) REFERENCES ZPLTFOTGRP (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_NALORGNID FOREIGN KEY (NALORGNID) REFERENCES ORGN (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_POSTID FOREIGN KEY (POSTID) REFERENCES PRSNPOST (ID); ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_PRSNCARDID FOREIGN KEY (PRSNCARDID) REFERENCES PRSNCARD (ID) ON UPDATE CASCADE; ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE PERSONAL ADD CONSTRAINT PERSONAL_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE PODRLIST ADD CONSTRAINT FK_PODRLIST FOREIGN KEY (BDG_CENTER_ID) REFERENCES BDG_CENTER (ID) ON UPDATE CASCADE; ALTER TABLE PODRLIST ADD CONSTRAINT PODRLIST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE PODRLIST ADD CONSTRAINT PODRLIST_PARENTID FOREIGN KEY (PARENTID) REFERENCES PODRLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE PODRLIST ADD CONSTRAINT PODRLIST_SPRSNID FOREIGN KEY (SPRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE PODRLIST ADD CONSTRAINT POSRLIST_MPRSNID FOREIGN KEY (MPRSNID) REFERENCES PERSONAL (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE PODRPOST ADD CONSTRAINT PODRPOST_BOSSID FOREIGN KEY (BOSSID) REFERENCES PODRPOST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE PODRPOST ADD CONSTRAINT PODRPOST_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE PODRPOST ADD CONSTRAINT PODRPOST_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE PODRPOST ADD CONSTRAINT PODRPOST_TABELID FOREIGN KEY (TABELID) REFERENCES ZPLTTABEL (ID) ON UPDATE CASCADE; ALTER TABLE PODRPOST ADD CONSTRAINT PRSNPOST_POSTID FOREIGN KEY (POSTID) REFERENCES PRSNPOST (ID); ALTER TABLE PODR_FUNCMANAGE ADD CONSTRAINT FK_PODR_FUNCMANAGE_F FOREIGN KEY (FUNC_ID) REFERENCES FUNCMANAGE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PODR_FUNCMANAGE ADD CONSTRAINT FK_PODR_FUNCMANAGE_P FOREIGN KEY (PODR_ID) REFERENCES PODRLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PODR_FUNCSUPPORT ADD CONSTRAINT FK_PODR_FUNCSUPPORT_F FOREIGN KEY (FUNC_ID) REFERENCES FUNCSUPPORT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PODR_FUNCSUPPORT ADD CONSTRAINT FK_PODR_FUNCSUPPORT_P FOREIGN KEY (PODR_ID) REFERENCES PODRLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE POST_FUNCMANAGE ADD CONSTRAINT FK_POST_FUNCMANAGE_F FOREIGN KEY (FUNC_ID) REFERENCES FUNCMANAGE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE POST_FUNCMANAGE ADD CONSTRAINT FK_POST_FUNCMANAGE_P FOREIGN KEY (POST_ID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE POST_FUNCSUPPORT ADD CONSTRAINT FK_POST_FUNCSUPPORT_F FOREIGN KEY (FUNC_ID) REFERENCES FUNCSUPPORT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE POST_FUNCSUPPORT ADD CONSTRAINT FK_POST_FUNCSUPPORT_P FOREIGN KEY (POST_ID) REFERENCES PODRPOST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRICEGOODS ADD CONSTRAINT PRICEGOODS_GDSKEY FOREIGN KEY (GDSKEY) REFERENCES GOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRICEGOODS ADD CONSTRAINT PRICEGOODS_PRICEID FOREIGN KEY (PRICEID) REFERENCES PRICELIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRICELIST ADD CONSTRAINT PRICELIST_BASEPRICEID FOREIGN KEY (BASEPRICEID) REFERENCES PRICELIST (ID) ON UPDATE CASCADE; ALTER TABLE PROFEXPERIENCE ADD CONSTRAINT FK_PROFEXPERIENCE_PRSNID FOREIGN KEY (PRSNID) REFERENCES PRSNCARD (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRSNATTACH ADD CONSTRAINT FK_PRSNATTACH_PRSNID FOREIGN KEY (PRSNID) REFERENCES PRSNCARD (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRSNCARD ADD CONSTRAINT PRSNCARD_NALORGNID FOREIGN KEY (NALORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_FOTGRPID FOREIGN KEY (FOTGRPID) REFERENCES ZPLTFOTGRP (ID); ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_PODRPOSTID FOREIGN KEY (PODRPOSTID) REFERENCES PODRPOST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_POSTID FOREIGN KEY (POSTID) REFERENCES PRSNPOST (ID) ON UPDATE CASCADE; ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID); ALTER TABLE PRSNMOVE ADD CONSTRAINT PRSNMOVE_TABELID FOREIGN KEY (TABELID) REFERENCES ZPLTTABEL (ID); ALTER TABLE PRSNOPEMAIL ADD CONSTRAINT PRSNOPEMAIL_EDUSERID FOREIGN KEY (EDUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE PRSNOPEMAIL ADD CONSTRAINT PRSNOPEMAIL_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRSNOPEMAIL ADD CONSTRAINT PRSNOPEMAIL_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRSNOPER ADD CONSTRAINT FK_PRSNOPER_CARD FOREIGN KEY (PRSNID) REFERENCES PRSNCARD (ID) ON UPDATE CASCADE; ALTER TABLE PRSNOPER ADD CONSTRAINT FK_PRSNOPER_ORGN FOREIGN KEY (ORGN_ID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE PRSNOPER ADD CONSTRAINT FK_PRSNOPER_OURORGN FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE PRSNOPER ADD CONSTRAINT FK_PRSNOPER_POST FOREIGN KEY (POST_ID) REFERENCES PRSNPOST (ID) ON UPDATE CASCADE; ALTER TABLE PRSNOPER ADD CONSTRAINT FK_PRSNOPER_PRSN FOREIGN KEY (PRSNID) REFERENCES PRSNCARD (ID) ON UPDATE CASCADE; ALTER TABLE PRSNOPER ADD CONSTRAINT FK_PRSNOPER_TYPE FOREIGN KEY (OPERTYPE_ID) REFERENCES PRSNOPERTYPE (ID) ON UPDATE CASCADE; ALTER TABLE PRSNPOSTPROF ADD CONSTRAINT FK_PRSNPOSTPROF_POSTID FOREIGN KEY (POSTID) REFERENCES PRSNPOST (ID) ON UPDATE CASCADE; ALTER TABLE PRSNPOSTPROF ADD CONSTRAINT FK_PRSNPOSTPROF_PRSNID FOREIGN KEY (PRSNID) REFERENCES PRSNCARD (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRSNTEST ADD CONSTRAINT PRSNTEST_HPTID FOREIGN KEY (HPTID) REFERENCES HBPRSNTEST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PRSNTEST ADD CONSTRAINT PRSNTEST_PRSNID FOREIGN KEY (PRSNID) REFERENCES PRSNCARD (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PTANSW ADD CONSTRAINT PTANSW_QUESTID FOREIGN KEY (QUESTID) REFERENCES PTQUEST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PTQUEST ADD CONSTRAINT PTQUEST_HPTID FOREIGN KEY (HPTID) REFERENCES HBPRSNTEST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PTQUEST ADD CONSTRAINT PTQUEST_PARENTID FOREIGN KEY (PARENTID) REFERENCES PTQUEST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE REGION ADD CONSTRAINT REGION_OWNER FOREIGN KEY (OWNER) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE REPLICATIONLOG ADD CONSTRAINT REPLICATIONLOG_OFFICE FOREIGN KEY (OFFICE) REFERENCES REPLICATIONOFFICE (ID); ALTER TABLE REPLICATIONLOG ADD CONSTRAINT REPLICATIONLOG_OFFICEID FOREIGN KEY (OFFICEID) REFERENCES REPLICATIONOFFICE (ID); ALTER TABLE REPLICATIONLOGFLD ADD CONSTRAINT REPLICATIONLOGFLD_RID FOREIGN KEY (RID) REFERENCES REPLICATIONLOGREC (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE REPLICATIONLOGREC ADD CONSTRAINT REPLICATIONLOGREC_OFFICE FOREIGN KEY (OFFICE) REFERENCES REPLICATIONOFFICE (ID); ALTER TABLE REPLICATIONLOGREC ADD CONSTRAINT REPLICATIONLOGREC_OFFICEID FOREIGN KEY (OFFICEID) REFERENCES REPLICATIONOFFICE (ID); ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_EUSERID FOREIGN KEY (EUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_GDDKEY FOREIGN KEY (GDDKEY) REFERENCES GDDDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_GDDKTKEY FOREIGN KEY (GDDKTKEY) REFERENCES GDDKT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_GDSKEY FOREIGN KEY (GDSKEY) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_MANAGER FOREIGN KEY (MANAGER) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE RESERVLOG ADD CONSTRAINT RESERVLOG_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE RIGHT_LIST ADD CONSTRAINT FK_RIGHT_LIST_PARENT FOREIGN KEY (PARENT_CODE) REFERENCES RIGHT_LIST (CODE) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_ACCNID FOREIGN KEY (ACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_ACCNNDSID FOREIGN KEY (ACCNNDSID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_MANAGER FOREIGN KEY (MANAGER) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_OURACCNID FOREIGN KEY (OURACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_OURACCNNDSID FOREIGN KEY (OURACCNNDSID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID); ALTER TABLE SALE ADD CONSTRAINT SALE_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE SALE ADD CONSTRAINT SALE_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE SALEACCN ADD CONSTRAINT SALEACCN_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE SALEACCN ADD CONSTRAINT SALEACCN_SALEKEY FOREIGN KEY (SALEKEY) REFERENCES SALE (ID) ON UPDATE CASCADE; ALTER TABLE SALECROS ADD CONSTRAINT SALECROS_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVDT (ID) ON UPDATE CASCADE; ALTER TABLE SALECROS ADD CONSTRAINT SALECROS_SALEKEY FOREIGN KEY (SALEKEY) REFERENCES SALE (ID) ON UPDATE CASCADE; ALTER TABLE SALECROS ADD CONSTRAINT SALECROS_SZDTCRID FOREIGN KEY (SZDTCRID) REFERENCES SZDTCR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SALEDTDATA ADD CONSTRAINT SALEDTDATA_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE SALEDTDATA ADD CONSTRAINT SALEDTDATA_SALEID FOREIGN KEY (SALEID) REFERENCES SALE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SALEDTVKCR ADD CONSTRAINT SALEDTVKCR_SALEID FOREIGN KEY (SALEID) REFERENCES SALE (ID) ON UPDATE CASCADE; ALTER TABLE SALEDTVKCR ADD CONSTRAINT SALEDTVKCR_VKSLID FOREIGN KEY (VKSLID) REFERENCES VKSL (ID) ON UPDATE CASCADE; ALTER TABLE SALEDUCR ADD CONSTRAINT SALEDUCR_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVDTU (ID) ON UPDATE CASCADE; ALTER TABLE SALEDUCR ADD CONSTRAINT SALEDUCR_SALEKEY FOREIGN KEY (SALEKEY) REFERENCES SALE (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_ACCNID FOREIGN KEY (ACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_ACCNNDSID FOREIGN KEY (ACCNNDSID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_BACCNID FOREIGN KEY (BACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_NAMEID FOREIGN KEY (NAMEID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_OURACCNID FOREIGN KEY (OURACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_OURACCNNDSID FOREIGN KEY (OURACCNNDSID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE SALEKT ADD CONSTRAINT SALEKT_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE SALEKTAC ADD CONSTRAINT SALEKTAC_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE SALEKTAC ADD CONSTRAINT SALEKTAC_SALEKEY FOREIGN KEY (SALEKEY) REFERENCES SALEKT (ID) ON UPDATE CASCADE; ALTER TABLE SALEKTCR ADD CONSTRAINT SALEKTCR_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVKT (ID) ON UPDATE CASCADE; ALTER TABLE SALEKTCR ADD CONSTRAINT SALEKTCR_SALEKEY FOREIGN KEY (SALEKEY) REFERENCES SALEKT (ID) ON UPDATE CASCADE; ALTER TABLE SALEKTDATA ADD CONSTRAINT SALEKTDATA_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE SALEKTDATA ADD CONSTRAINT SALEKTDATA_SALEID FOREIGN KEY (SALEID) REFERENCES SALEKT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SALEKTVKCR ADD CONSTRAINT SALEKTVKCR_SALEID FOREIGN KEY (SALEID) REFERENCES SALEKT (ID) ON UPDATE CASCADE; ALTER TABLE SALEKTVKCR ADD CONSTRAINT SALEKTVKCR_VKSLID FOREIGN KEY (VKSLID) REFERENCES VKSL (ID) ON UPDATE CASCADE; ALTER TABLE SALEKUCR ADD CONSTRAINT SALEKUCR_DGVKEY FOREIGN KEY (DGVKEY) REFERENCES DGVKTU (ID) ON UPDATE CASCADE; ALTER TABLE SALEKUCR ADD CONSTRAINT SALEKUCR_SALEKEY FOREIGN KEY (SALEKEY) REFERENCES SALEKT (ID) ON UPDATE CASCADE; ALTER TABLE SC_CARDS ADD CONSTRAINT FK_SC_CARDS_CARDTID FOREIGN KEY (CARDTID) REFERENCES SC_CARDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SC_CARDS ADD CONSTRAINT FK_SC_CARDS_GODSID FOREIGN KEY (GOODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE SC_CARDT ADD CONSTRAINT SC_CARDT_CONTACTID FOREIGN KEY (CONTACTID) REFERENCES CONTACTS (ID) ON UPDATE CASCADE; ALTER TABLE SC_CARDT ADD CONSTRAINT SC_CARDT_GDSKEY FOREIGN KEY (GDSKEY) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE SC_CARDT ADD CONSTRAINT SC_CARDT_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SC_CARDT ADD CONSTRAINT SC_CARDT_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT FK_SC_REMO_1 FOREIGN KEY (COUNTRYID) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT FK_SC_REMO_2 FOREIGN KEY (REGIONID) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT FK_SC_REMO_3 FOREIGN KEY (CITYID) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT SC_REMO_CARDTID FOREIGN KEY (CARDTID) REFERENCES SC_CARDT (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT SC_REMO_DTKTID FOREIGN KEY (DTKTID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT SC_REMO_INFOSRCID FOREIGN KEY (INFOSRCID) REFERENCES INFOSRC (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT SC_REMO_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT SC_REMO_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT SC_REMO_REMOTYPEID FOREIGN KEY (REMOTYPEID) REFERENCES SC_REMO_TYPE (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT SC_REMO_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO ADD CONSTRAINT SC_REMO_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMONT ADD CONSTRAINT FK_SC_REMONT_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMONT ADD CONSTRAINT SC_REMONT_JOBID FOREIGN KEY (JOBID) REFERENCES ZPLTJOBSLIST (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMONT ADD CONSTRAINT SC_REMONT_REMOID FOREIGN KEY (REMOID) REFERENCES SC_REMO (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SC_REMONT1 ADD CONSTRAINT SC_REMONT1_JOBID FOREIGN KEY (JOBID) REFERENCES ZPLTJOBSLIST (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMONT1 ADD CONSTRAINT SC_REMONT1_REMOID FOREIGN KEY (REMOID) REFERENCES SC_REMO (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SC_REMO_TYPE ADD CONSTRAINT SC_REMO_TYPE_DTKTID FOREIGN KEY (DTKTID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO_TYPE ADD CONSTRAINT SC_REMO_TYPE_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMO_TYPE_PARAMS ADD CONSTRAINT SC_REMO_TYPE_PARAMS_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SC_REMO_TYPE_PARAMS ADD CONSTRAINT SC_REMO_TYPE_PARAMS_REMOTYPEID FOREIGN KEY (REMOTYPEID) REFERENCES SC_REMO_TYPE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SC_REMO_TYPE_PARAMS ADD CONSTRAINT SC_REMO_TYPE_PARAMS_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SC_REMZAP ADD CONSTRAINT FK_SC_REMZAP_GOODSID FOREIGN KEY (GOODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMZAP ADD CONSTRAINT FK_SC_REMZAP_REMID FOREIGN KEY (REMID) REFERENCES SC_REMONT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SC_REMZAP1 ADD CONSTRAINT SC_REMZAP1_GOODSID FOREIGN KEY (GOODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE SC_REMZAP1 ADD CONSTRAINT SC_REMZAP1_REMOID FOREIGN KEY (REMOID) REFERENCES SC_REMO (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE STORACCN ADD CONSTRAINT STORACCN_DT FOREIGN KEY (DT) REFERENCES ACCNPLAN (ACCN) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE STORACCN ADD CONSTRAINT STORACCN_KT FOREIGN KEY (KT) REFERENCES ACCNPLAN (ACCN) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE STORACCN ADD CONSTRAINT STORACCN_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE STORACCN ADD CONSTRAINT STORACCN_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE STORACCN ADD CONSTRAINT STORACCN_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE STORGRP ADD CONSTRAINT STORGRP_DEFOULTCLIENTID FOREIGN KEY (DEFAULTCLIENTID) REFERENCES ORGN (ID); ALTER TABLE STORGRP ADD CONSTRAINT STORGRP_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE STORGRPREF ADD CONSTRAINT STORGRPREF_GRPID FOREIGN KEY (GRPID) REFERENCES STORGRP (ID) ON UPDATE CASCADE; ALTER TABLE STORGRPREF ADD CONSTRAINT STORGRPREF_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE STORGRP_NCOST ADD CONSTRAINT STORGRP_NCOST_STORGRPID FOREIGN KEY (STORGRPID) REFERENCES STORGRP (ID) ON UPDATE CASCADE; ALTER TABLE STORLIST ADD CONSTRAINT STORLIST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_CONTACTID FOREIGN KEY (CONTACTID) REFERENCES CONTACTS (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_MANAGER FOREIGN KEY (MANAGER) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_ORGACCNID FOREIGN KEY (ORGACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_OURACCNID FOREIGN KEY (OURACCNID) REFERENCES ORGNBANKACCN (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_STORGRPID FOREIGN KEY (STORGRPID) REFERENCES STORGRP (ID) ON UPDATE CASCADE; ALTER TABLE STORZAKAZDT ADD CONSTRAINT STORZAKAZDT_TRDPID FOREIGN KEY (TRDPID) REFERENCES TRADEPOINT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE STORZDTGDS ADD CONSTRAINT STORZDTGDS_DISCOUNTBONUSSETID FOREIGN KEY (DISCOUNTBONUSSETID) REFERENCES DK_DISCOUNTBONUSSETS (ID); ALTER TABLE STORZDTGDS ADD CONSTRAINT STORZDTGDS_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE STORZDTGDS ADD CONSTRAINT STORZDTGDS_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE STORZDTGDS ADD CONSTRAINT STORZDTGDS_PRICEID FOREIGN KEY (PRICEID) REFERENCES PRICELIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE STORZDTGDS ADD CONSTRAINT STORZDTGDS_SZID FOREIGN KEY (SZID) REFERENCES STORZAKAZDT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SUB ADD CONSTRAINT SUB_ACCN FOREIGN KEY (ACCN) REFERENCES ACCNPLAN (ACCN) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SUB ADD CONSTRAINT SUB_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SYSCONST ADD CONSTRAINT SYSCONST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SYSCONST ADD CONSTRAINT SYSCONST_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SYSLOG ADD CONSTRAINT SYSLOG_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SYSLOG ADD CONSTRAINT SYSLOG_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SYSLOG ADD CONSTRAINT SYSLOG_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE SYSLOGLOGIN ADD CONSTRAINT SYSLOGLOGIN_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE SYSLOGPROV ADD CONSTRAINT SYSLOGPROV_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE SZDTCR ADD CONSTRAINT SZDTCR_SALEID FOREIGN KEY (SALEID) REFERENCES SALE (ID) ON UPDATE CASCADE; ALTER TABLE SZDTCR ADD CONSTRAINT SZDTCR_SZDTID FOREIGN KEY (SZDTID) REFERENCES STORZAKAZDT (ID) ON UPDATE CASCADE; ALTER TABLE TRADEPOINT ADD CONSTRAINT TRADEPOINT_CITY FOREIGN KEY (CITY) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE TRADEPOINT ADD CONSTRAINT TRADEPOINT_COUNTRY FOREIGN KEY (COUNTRY) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE TRADEPOINT ADD CONSTRAINT TRADEPOINT_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE TRADEPOINT ADD CONSTRAINT TRADEPOINT_REGION FOREIGN KEY (REGION) REFERENCES REGION (ID) ON UPDATE CASCADE; ALTER TABLE USERDCATEGORY ADD CONSTRAINT FK_USERDCATEGORY_DC FOREIGN KEY (DCATEGORYID) REFERENCES DOCMCATEGORY (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERDCATEGORY ADD CONSTRAINT FK_USERDCATEGORY_U FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERDDOCFOLDER ADD CONSTRAINT FK_USERDDOCFOLDER_DF FOREIGN KEY (DDOCFOLDERID) REFERENCES DOCMDOCFOLDER (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERDDOCFOLDER ADD CONSTRAINT FK_USERDDOCFOLDER_U FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERDGRP ADD CONSTRAINT USERDGRP_DGRPID FOREIGN KEY (DGRPID) REFERENCES DOCMGROUPS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERDGRP ADD CONSTRAINT USERDGRP_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERGGRP ADD CONSTRAINT USERGGRP_GGRPID FOREIGN KEY (GGRPID) REFERENCES GOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERGGRP ADD CONSTRAINT USERGGRP_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERKASS ADD CONSTRAINT USERKASS_KASSID FOREIGN KEY (KASS_ID) REFERENCES KASSLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERKASS ADD CONSTRAINT USERKASS_USERID FOREIGN KEY (USER_ID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERLIST ADD CONSTRAINT USERLIST_PARENTID FOREIGN KEY (PARENTID) REFERENCES USERLIST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE USERLIST ADD CONSTRAINT USERLIST_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE USERORGN ADD CONSTRAINT USERORGN_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERORGN ADD CONSTRAINT USERORGN_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERPODR ADD CONSTRAINT USERPODR_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERPODR ADD CONSTRAINT USERPODR_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERPRLS ADD CONSTRAINT USERPRLS_EDUSERID FOREIGN KEY (EDUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE USERPRLS ADD CONSTRAINT USERPRLS_PRLSID FOREIGN KEY (PRLSID) REFERENCES PRICELIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERPRLS ADD CONSTRAINT USERPRLS_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERSTOR ADD CONSTRAINT USERSTOR_STOR_ID FOREIGN KEY (STOR_ID) REFERENCES STORLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USERSTOR ADD CONSTRAINT USERSTOR_USER_ID FOREIGN KEY (USER_ID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USER_GRPREF ADD CONSTRAINT USER_GRPREF_GRP_ID FOREIGN KEY (GRP_ID) REFERENCES USER_GRP (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USER_GRPREF ADD CONSTRAINT USER_GRPREF_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USER_RIGHT ADD CONSTRAINT FK_USER_RIGHT_ORGN FOREIGN KEY (ORGN_ID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE USER_RIGHT ADD CONSTRAINT FK_USER_RIGHT_USER FOREIGN KEY (USER_ID) REFERENCES USERLIST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE VENDORNAME ADD CONSTRAINT VENDORNAME_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE VENDORNAME ADD CONSTRAINT VENDORNAME_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_CURRTYP FOREIGN KEY (CURRTYP) REFERENCES CURRTYP (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_OPERID FOREIGN KEY (OPERID) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_OPERIDA FOREIGN KEY (OPERIDA) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_OPERIDIO FOREIGN KEY (OPERIDIO) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_OPERIDO FOREIGN KEY (OPERIDO) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_OPERIDSL FOREIGN KEY (OPERIDSL) REFERENCES ACOPRLST (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_ORGNAKCID FOREIGN KEY (ORGNAKCID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_ORGNDTID FOREIGN KEY (ORGNDTID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_ORGNKTID FOREIGN KEY (ORGNKTID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_ORGNSLID FOREIGN KEY (ORGNSLID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_ORGNVKDTID FOREIGN KEY (ORGNVKDTID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_ORGNVKKTID FOREIGN KEY (ORGNVKKTID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE VKSL ADD CONSTRAINT VKSL_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE VKSLACCR ADD CONSTRAINT VKSLACCR_ACCNID FOREIGN KEY (ACCNID) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE VKSLACCR ADD CONSTRAINT VKSLACCR_VKSLID FOREIGN KEY (VKSLID) REFERENCES VKSL (ID) ON UPDATE CASCADE; ALTER TABLE WORKCALCMST ADD CONSTRAINT WORKCALCMST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE WORKCALCNK ADD CONSTRAINT WORKCALCNK_MSTID FOREIGN KEY (MSTID) REFERENCES WORKCALCMST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKCALCNK ADD CONSTRAINT WORKCALCNK_NKID FOREIGN KEY (NKID) REFERENCES WORKHBNK (ID) ON UPDATE CASCADE; ALTER TABLE WORKCALCNKPRM ADD CONSTRAINT WORKCALCNKPRM_CALCNKID FOREIGN KEY (CALCNKID) REFERENCES WORKCALCNK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKCALCNKPRM ADD CONSTRAINT WORKCALCNKPRM_PARAMVALID FOREIGN KEY (PARAMVALID) REFERENCES GDSPARAMVAL (ID) ON UPDATE CASCADE; ALTER TABLE WORKCALCNKPRM ADD CONSTRAINT WORKCALCNKPRM_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKCALCPODR ADD CONSTRAINT WORKCALCPODR_CALCNKID FOREIGN KEY (CALCNKID) REFERENCES WORKCALCNK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKCALCPODR ADD CONSTRAINT WORKCALCPODR_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKCALCPROV ADD CONSTRAINT WORKCALCPROV_CALCID FOREIGN KEY (CALCID) REFERENCES WORKCALCMST (ID) ON UPDATE CASCADE; ALTER TABLE WORKCALCPROV ADD CONSTRAINT WORKCALCPROV_PROVID FOREIGN KEY (PROVID) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE WORKGODSTEMP ADD CONSTRAINT WORKGODSTEMP_GODSID FOREIGN KEY (ID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKGOODS ADD CONSTRAINT WORKGOODS_PARENTID FOREIGN KEY (PARENTID) REFERENCES WORKGOODS (ID); ALTER TABLE WORKGOODSGDS ADD CONSTRAINT WORKGOODSGDS_GDSID FOREIGN KEY (GDSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKGOODSGDS ADD CONSTRAINT WORKGOODSGDS_WKGID FOREIGN KEY (WKGID) REFERENCES WORKGOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKGOODSLINK ADD CONSTRAINT WORKGOODSLINK_WGMID FOREIGN KEY (WGMID) REFERENCES WORKGOODS (ID); ALTER TABLE WORKGOODSLINK ADD CONSTRAINT WORKGOODSLINK_WGSID FOREIGN KEY (WGSID) REFERENCES WORKGOODS (ID); ALTER TABLE WORKHBLN ADD CONSTRAINT WORKHBLN_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKHBLN ADD CONSTRAINT WORKHBLN_REFID FOREIGN KEY (REFID) REFERENCES WORKLINK (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKHBNK ADD CONSTRAINT WORKHBNK_PARENTID FOREIGN KEY (PARENTID) REFERENCES WORKHBNK (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKLINK ADD CONSTRAINT WORKLINK_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKLINK ADD CONSTRAINT WORKLINK_MAINDTLID FOREIGN KEY (MAINDTLID) REFERENCES WORKMAIN (ID); ALTER TABLE WORKLINK ADD CONSTRAINT WORKLINK_MODELDTLID FOREIGN KEY (MODELDTLID) REFERENCES WORKMODELDTL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKLINK ADD CONSTRAINT WORKLINK_MODELGDSID FOREIGN KEY (MODELGDSID) REFERENCES WORKMODELGDS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKLINK ADD CONSTRAINT WORKLINK_OWNER FOREIGN KEY (OWNER) REFERENCES WORKMAIN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKMAIN ADD CONSTRAINT WORKMAIN_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKMAIN ADD CONSTRAINT WORKMAIN_MODELID FOREIGN KEY (MODELID) REFERENCES WORKMODEL (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKMAIN ADD CONSTRAINT WORKMAIN_PARENTID FOREIGN KEY (PARENTID) REFERENCES WORKMAIN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKMAIN ADD CONSTRAINT WORKMAIN_SCRUSERID FOREIGN KEY (SCRUSERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKMAIN ADD CONSTRAINT WORKMAIN_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKMAINTOOL ADD CONSTRAINT WORKMAINTOOL_MAINID FOREIGN KEY (MAINID) REFERENCES WORKMAIN (ID) ON UPDATE CASCADE; ALTER TABLE WORKMAINTOOL ADD CONSTRAINT WORKMAINTOOL_TOOLID FOREIGN KEY (TOOLID) REFERENCES WORKTOOL (ID) ON UPDATE CASCADE; ALTER TABLE WORKMODEL ADD CONSTRAINT WORKMODEL_PARENTID FOREIGN KEY (PARENTID) REFERENCES WORKMODEL (ID); ALTER TABLE WORKMODELDTL ADD CONSTRAINT WORKMODELDTL_DETAILID FOREIGN KEY (DETAILID) REFERENCES WORKMODEL (ID) ON UPDATE CASCADE; ALTER TABLE WORKMODELDTL ADD CONSTRAINT WORKMODELDTL_MODELDTLID FOREIGN KEY (MODELDTLID) REFERENCES WORKMODELDTL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKMODELDTL ADD CONSTRAINT WORKMODELDTL_MODELID FOREIGN KEY (MODELID) REFERENCES WORKMODEL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKMODELDTL ADD CONSTRAINT WORKMODELDTL_PARENTID FOREIGN KEY (PARENTID) REFERENCES WORKMODELDTL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKMODELGDS ADD CONSTRAINT WORKMODELGDS_MODELDTLID FOREIGN KEY (MODELDTLID) REFERENCES WORKMODELDTL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKMODELGDS ADD CONSTRAINT WORKMODELGDS_MODELGDSID FOREIGN KEY (MODELGDSID) REFERENCES WORKMODELGDS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKMODELGDS ADD CONSTRAINT WORKMODELGDS_MODELID FOREIGN KEY (MODELID) REFERENCES WORKMODEL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKMODELGDS ADD CONSTRAINT WORKMODELGDS_WKGDSID FOREIGN KEY (WKGDSID) REFERENCES WORKGOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKNKDG ADD CONSTRAINT WORKNKDG_CALCNKID FOREIGN KEY (CALCNKID) REFERENCES WORKCALCNK (ID) ON UPDATE CASCADE; ALTER TABLE WORKNKDG ADD CONSTRAINT WORKNKDG_DGVID FOREIGN KEY (DGVID) REFERENCES DGVWKG (ID) ON UPDATE CASCADE; ALTER TABLE WORKNKDG ADD CONSTRAINT WORKNKDG_NKID FOREIGN KEY (NKID) REFERENCES WORKHBNK (ID) ON UPDATE CASCADE; ALTER TABLE WORKOPER ADD CONSTRAINT WORKOPER_MODELID FOREIGN KEY (MODELID) REFERENCES WORKMODEL (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKOPER ADD CONSTRAINT WORKOPER_OPERID FOREIGN KEY (OPERID) REFERENCES WORKOPERATION (ID) ON UPDATE CASCADE; ALTER TABLE WORKOPERATION ADD CONSTRAINT WORKOPERATION_PARENTID FOREIGN KEY (PARENTID) REFERENCES WORKOPERATION (ID) ON UPDATE CASCADE; ALTER TABLE WORKPLANSLV ADD CONSTRAINT WORKPLANSLV_MAINID FOREIGN KEY (MAINID) REFERENCES WORKMAIN (ID) ON UPDATE CASCADE; ALTER TABLE WORKPLANSLV ADD CONSTRAINT WORKPLANSLV_MSTID FOREIGN KEY (MSTID) REFERENCES WORKPLANMST (ID) ON UPDATE CASCADE; ALTER TABLE WORKPLANSTOR ADD CONSTRAINT WORKPLANSTOR_MSTID FOREIGN KEY (MSTID) REFERENCES WORKPLANMST (ID) ON UPDATE CASCADE; ALTER TABLE WORKPLANSTOR ADD CONSTRAINT WORKPLANSTOR_STORID FOREIGN KEY (STORID) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKREQUEST ADD CONSTRAINT WORKREQUEST_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKREQUEST ADD CONSTRAINT WORKREQUEST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE WORKREQUEST ADD CONSTRAINT WORKREQUEST_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE WORKREQUEST ADD CONSTRAINT WORKREQUEST_SZID FOREIGN KEY (SZID) REFERENCES STORZAKAZDT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKREQUESTGDS ADD CONSTRAINT WORKREQUESTGDS_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKREQUESTGDS ADD CONSTRAINT WORKREQUESTGDS_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKREQUESTGDS ADD CONSTRAINT WORKREQUESTGDS_WMID FOREIGN KEY (WMID) REFERENCES WORKZMST (ID) ON UPDATE CASCADE; ALTER TABLE WORKREQUESTGDS ADD CONSTRAINT WORKREQUESTGDS_WRID FOREIGN KEY (WRID) REFERENCES WORKREQUEST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKTOOL ADD CONSTRAINT WORKTOOL_TYPID FOREIGN KEY (TYPID) REFERENCES WORKTOOLTYP (ID) ON UPDATE CASCADE; ALTER TABLE WORKZAKAZ ADD CONSTRAINT WORKZAKAZ_INPSTOR1 FOREIGN KEY (INPSTOR1) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKZAKAZ ADD CONSTRAINT WORKZAKAZ_INPSTOR2 FOREIGN KEY (INPSTOR2) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKZAKAZ ADD CONSTRAINT WORKZAKAZ_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON UPDATE CASCADE; ALTER TABLE WORKZAKAZ ADD CONSTRAINT WORKZAKAZ_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE WORKZAKAZ ADD CONSTRAINT WORKZAKAZ_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKZCUTTING ADD CONSTRAINT WORKZCUTTING_GDDKEY FOREIGN KEY (GDDKEY) REFERENCES GDDKT (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKZCUTTING ADD CONSTRAINT WORKZCUTTING_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKZCUTTING ADD CONSTRAINT WORKZCUTTING_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKZCUTTING ADD CONSTRAINT WORKZCUTTING_ZID FOREIGN KEY (ZID) REFERENCES WORKZAKAZ (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKZMST ADD CONSTRAINT WORKZMST_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKZMST ADD CONSTRAINT WORKZMST_MID FOREIGN KEY (MID) REFERENCES WORKMAIN (ID) ON UPDATE CASCADE; ALTER TABLE WORKZMST ADD CONSTRAINT WORKZMST_OBJID FOREIGN KEY (OBJID) REFERENCES OBJ_CLASS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKZMST ADD CONSTRAINT WORKZMST_STOR FOREIGN KEY (STOR) REFERENCES STORLIST (ID) ON UPDATE CASCADE; ALTER TABLE WORKZMST ADD CONSTRAINT WORKZMST_WRGDSID FOREIGN KEY (WRGDSID) REFERENCES WORKREQUESTGDS (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKZMST ADD CONSTRAINT WORKZMST_ZID FOREIGN KEY (ZID) REFERENCES WORKZAKAZ (ID) ON UPDATE CASCADE; ALTER TABLE WORKZNK ADD CONSTRAINT WORKZNK_CALCNKID FOREIGN KEY (CALCNKID) REFERENCES WORKCALCNK (ID) ON UPDATE CASCADE; ALTER TABLE WORKZNK ADD CONSTRAINT WORKZNK_NKID FOREIGN KEY (NKID) REFERENCES WORKHBNK (ID) ON UPDATE CASCADE; ALTER TABLE WORKZNK ADD CONSTRAINT WORKZNK_ZKID FOREIGN KEY (ZKID) REFERENCES GDDKT (ID) ON UPDATE CASCADE; ALTER TABLE WORKZNK ADD CONSTRAINT WORKZNK_ZMID FOREIGN KEY (ZMID) REFERENCES WORKZMST (ID) ON UPDATE CASCADE; ALTER TABLE WORKZPARAM ADD CONSTRAINT WORKZPARAM_MSTID FOREIGN KEY (MSTID) REFERENCES WORKZMST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKZREF ADD CONSTRAINT WORKZREF_DTLID FOREIGN KEY (DTLID) REFERENCES WORKZMST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKZREF ADD CONSTRAINT WORKZREF_MSTID FOREIGN KEY (MSTID) REFERENCES WORKZSLV (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKZSLV ADD CONSTRAINT WORKZSLV_GODSID FOREIGN KEY (GODSID) REFERENCES GOODS (ID) ON UPDATE CASCADE; ALTER TABLE WORKZSLV ADD CONSTRAINT WORKZSLV_LID FOREIGN KEY (LID) REFERENCES WORKLINK (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE WORKZSLV ADD CONSTRAINT WORKZSLV_MSTID FOREIGN KEY (MSTID) REFERENCES WORKZMST (ID) ON UPDATE CASCADE; ALTER TABLE WORKZTOOL ADD CONSTRAINT WORKZTOOL_MSTID FOREIGN KEY (MSTID) REFERENCES WORKZMST (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE WORKZTOOL ADD CONSTRAINT WORKZTOOL_TOOLID FOREIGN KEY (TOOLID) REFERENCES WORKTOOL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCCRAC ADD CONSTRAINT ZPLTCALCCRAC_ACCNKEY FOREIGN KEY (ACCNKEY) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCCRAC ADD CONSTRAINT ZPLTCALCCRAC_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTCALCMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCDECR ADD CONSTRAINT ZPLTCALCDECR_DECRID FOREIGN KEY (DECRID) REFERENCES ZPLTDECR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCDECR ADD CONSTRAINT ZPLTCALCDECR_SLVID FOREIGN KEY (SLVID) REFERENCES ZPLTCALCSLV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCINCR ADD CONSTRAINT ZPLTCALCINCR_INCRID FOREIGN KEY (INCRID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCINCR ADD CONSTRAINT ZPLTCALCINCR_SLVID FOREIGN KEY (SLVID) REFERENCES ZPLTCALCSLV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCMST ADD CONSTRAINT ZPLTCALCMST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCMST ADD CONSTRAINT ZPLTCALCMST_VL1 FOREIGN KEY (VL1) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCMST ADD CONSTRAINT ZPLTCALCMST_VL2 FOREIGN KEY (VL2) REFERENCES "LEV" (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCSLV ADD CONSTRAINT ZPLTCALCSLV_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTCALCMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCSLV ADD CONSTRAINT ZPLTCALCSLV_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCSLVFOT ADD CONSTRAINT ZPLTCALCSLVFOT_FOTID FOREIGN KEY (FOTID) REFERENCES ZPLTDECRFOT (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCSLVFOT ADD CONSTRAINT ZPLTCALCSLVFOT_INCRID FOREIGN KEY (INCRID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTCALCSLVFOT ADD CONSTRAINT ZPLTCALCSLVFOT_SLVID FOREIGN KEY (SLVID) REFERENCES ZPLTCALCSLV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTDECR ADD CONSTRAINT ZPLTDECR_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTDECRFOT ADD CONSTRAINT ZPLTDECRFOT_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTDECRINCR ADD CONSTRAINT ZPLTDECRINCR_DECRID FOREIGN KEY (DECRID) REFERENCES ZPLTDECR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTDECRINCR ADD CONSTRAINT ZPLTDECRINCR_INCRID FOREIGN KEY (INCRID) REFERENCES ZPLTINCR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTDECRPRSN ADD CONSTRAINT ZPLTDECRPRSN_DECRID FOREIGN KEY (DECRID) REFERENCES ZPLTDECR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTDECRPRSN ADD CONSTRAINT ZPLTDECRPRSN_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTFOTGRPREF ADD CONSTRAINT ZPLTFOTGRPREF_FOTID FOREIGN KEY (FOTID) REFERENCES ZPLTDECRFOT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTFOTGRPREF ADD CONSTRAINT ZPLTFOTGRPREF_GRPID FOREIGN KEY (GRPID) REFERENCES ZPLTFOTGRP (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNMST ADD CONSTRAINT ZPLTGRPPRSNMST_INCR1ID FOREIGN KEY (INCR1ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNMST ADD CONSTRAINT ZPLTGRPPRSNMST_INCR2ID FOREIGN KEY (INCR2ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNMST ADD CONSTRAINT ZPLTGRPPRSNMST_INCR3ID FOREIGN KEY (INCR3ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNMST ADD CONSTRAINT ZPLTGRPPRSNMST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNMST ADD CONSTRAINT ZPLTGRPPRSNMST_PODRID FOREIGN KEY (PODRID) REFERENCES PODRLIST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNSLV ADD CONSTRAINT ZPLTGRPPRSNSLV_INCR1ID FOREIGN KEY (INCR1ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNSLV ADD CONSTRAINT ZPLTGRPPRSNSLV_INCR2ID FOREIGN KEY (INCR2ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNSLV ADD CONSTRAINT ZPLTGRPPRSNSLV_INCR3ID FOREIGN KEY (INCR3ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNSLV ADD CONSTRAINT ZPLTGRPPRSNSLV_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTGRPPRSNMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNSLV ADD CONSTRAINT ZPLTGRPPRSNSLV_POSTID FOREIGN KEY (POSTID) REFERENCES PRSNPOST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTGRPPRSNSLV ADD CONSTRAINT ZPLTGRPPRSNSLV_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTINCRFOT ADD CONSTRAINT ZPLTINCRFOT_FOTID FOREIGN KEY (FOTID) REFERENCES ZPLTDECRFOT (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTINCRFOT ADD CONSTRAINT ZPLTINCRFOT_INCRID FOREIGN KEY (INCRID) REFERENCES ZPLTINCR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTINCRINCR ADD CONSTRAINT ZPLTINCRINCR_DINCRID FOREIGN KEY (DINCRID) REFERENCES ZPLTINCR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTINCRINCR ADD CONSTRAINT ZPLTINCRINCR_MINCRID FOREIGN KEY (MINCRID) REFERENCES ZPLTINCR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTINCRPRSN ADD CONSTRAINT ZPLTINCRPRSN_INCRID FOREIGN KEY (INCRID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTINCRPRSN ADD CONSTRAINT ZPLTINCRPRSN_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPJOB ADD CONSTRAINT ZPLTJOBGRPJOB_JOBID FOREIGN KEY (JOBID) REFERENCES ZPLTJOBSLIST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPJOB ADD CONSTRAINT ZPLTJOBGRPJOB_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTJOBGRPMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPMST ADD CONSTRAINT ZPLTJOBGRPMST_BRIGADEID FOREIGN KEY (BRIGADEID) REFERENCES ZPLTGRPPRSNMST (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPMST ADD CONSTRAINT ZPLTJOBGRPMST_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPMST ADD CONSTRAINT ZPLTJOBGRPMST_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTCALCMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPMST ADD CONSTRAINT ZPLTJOBGRPMST_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPMST ADD CONSTRAINT ZPLTJOBGRPMST_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPPRSN ADD CONSTRAINT ZPLTJOBGRPPRSN_INCR1ID FOREIGN KEY (INCR1ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPPRSN ADD CONSTRAINT ZPLTJOBGRPPRSN_INCR2ID FOREIGN KEY (INCR2ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPPRSN ADD CONSTRAINT ZPLTJOBGRPPRSN_INCR3ID FOREIGN KEY (INCR3ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPPRSN ADD CONSTRAINT ZPLTJOBGRPPRSN_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTJOBGRPMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBGRPPRSN ADD CONSTRAINT ZPLTJOBGRPPRSN_PRSNSLVID FOREIGN KEY (PRSNSLVID) REFERENCES ZPLTCALCSLV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNMST ADD CONSTRAINT ZPLTJOBPRSNMST_CSDTKTHBID FOREIGN KEY (CSDTKTHBID) REFERENCES CSDTKTHB (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNMST ADD CONSTRAINT ZPLTJOBPRSNMST_INCR1ID FOREIGN KEY (INCR1ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNMST ADD CONSTRAINT ZPLTJOBPRSNMST_INCR2ID FOREIGN KEY (INCR2ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNMST ADD CONSTRAINT ZPLTJOBPRSNMST_INCR3ID FOREIGN KEY (INCR3ID) REFERENCES ZPLTINCR (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNMST ADD CONSTRAINT ZPLTJOBPRSNMST_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTCALCMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNMST ADD CONSTRAINT ZPLTJOBPRSNMST_ORGNID FOREIGN KEY (ORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNMST ADD CONSTRAINT ZPLTJOBPRSNMST_ORGNINFOID FOREIGN KEY (ORGNINFOID) REFERENCES ORGNINFO (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNSLV ADD CONSTRAINT ZPLTJOBPRSNSLV_JOBID FOREIGN KEY (JOBID) REFERENCES ZPLTJOBSLIST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNSLV ADD CONSTRAINT ZPLTJOBPRSNSLV_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTJOBPRSNMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBPRSNSLV ADD CONSTRAINT ZPLTJOBPRSNSLV_PRSNID FOREIGN KEY (PRSNID) REFERENCES ZPLTCALCSLV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBSLIST ADD CONSTRAINT ZPLTJOBSLIST_HBGDID FOREIGN KEY (HBGDID) REFERENCES HBGDDDU (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBSLIST ADD CONSTRAINT ZPLTJOBSLIST_INCRID FOREIGN KEY (INCRID) REFERENCES ZPLTINCR (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ZPLTJOBSLIST ADD CONSTRAINT ZPLTJOBSLIST_OWNER FOREIGN KEY (OWNER) REFERENCES ZPLTJOBSLIST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTJOBSLIST ADD CONSTRAINT ZPLTJOBSLIST_USERID FOREIGN KEY (USERID) REFERENCES USERLIST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPLATACCR ADD CONSTRAINT ZPLTPLATACCR_ACCNID FOREIGN KEY (ACCNID) REFERENCES ACCNPROV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPLATACCR ADD CONSTRAINT ZPLTPLATACCR_PLATID FOREIGN KEY (PLATID) REFERENCES ZPLTPLATMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPLATMST ADD CONSTRAINT ZPLTPLATMST_KASSID FOREIGN KEY (KASSID) REFERENCES KASSLIST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPLATMST ADD CONSTRAINT ZPLTPLATMST_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTCALCMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPLATMST ADD CONSTRAINT ZPLTPLATMST_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPLATSLV ADD CONSTRAINT ZPLTPLATSLV_MSTID FOREIGN KEY (MSTID) REFERENCES ZPLTPLATMST (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPLATSLV ADD CONSTRAINT ZPLTPLATSLV_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPLATSLV ADD CONSTRAINT ZPLTPLATSLV_SLVID FOREIGN KEY (CSLVID) REFERENCES ZPLTCALCSLV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPRSNDPN ADD CONSTRAINT ZPLTPRSNDPN_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTPRSNDPN ADD CONSTRAINT ZPLTPRSNDPN_PSLVID FOREIGN KEY (PSLVID) REFERENCES ZPLTPLATSLV (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTSERTMEDIC ADD CONSTRAINT ZPLTSERTMEDIC_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTSERTVACAT ADD CONSTRAINT ZPLTSERTVACAT_PRSNID FOREIGN KEY (PRSNID) REFERENCES PERSONAL (ID) ON UPDATE CASCADE; ALTER TABLE ZPLTSLVDAYCOMMENT ADD CONSTRAINT ZPLTSLVDAYCOMMENT_SLVID FOREIGN KEY (SLVID) REFERENCES ZPLTCALCSLV (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTTABELPLAN ADD CONSTRAINT ZPLTTABELPLAN_OURORGNID FOREIGN KEY (OURORGNID) REFERENCES ORGN (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE ZPLTTABELPLAN ADD CONSTRAINT ZPLTTABELPLAN_TABELID FOREIGN KEY (TABELID) REFERENCES ZPLTTABEL (ID) ON DELETE CASCADE ON UPDATE CASCADE; /******************************************************************************/ /*** Indices ***/ /******************************************************************************/ CREATE DESCENDING INDEX ACCNPROV_DAT_ ON ACCNPROV (DAT_); CREATE INDEX ACCNPROV_DOCUMENT ON ACCNPROV (DOCUMENT); CREATE DESCENDING INDEX BDG_GOODS_IDX_OBJ_GDD ON BDG_GOODS (OBJ_GDD_ID); CREATE DESCENDING INDEX BDG_PAPER_IDX_DAT_ ON BDG_PAPER (DAT_); CREATE INDEX BDG_PAPER_IDX_IMPORT_KEY ON BDG_PAPER (IMPORT_KEY); CREATE INDEX BDG_PAPER_IDX_OBJ_ID ON BDG_PAPER (OBJ_ID); CREATE INDEX IDX_CRDS_DGVDT_DATE ON CRDS_DGVDT (DGVDT_DATE); CREATE INDEX IDX_CRDS_DGVDT_NBR ON CRDS_DGVDT (DGVDT_NBR); CREATE INDEX CRDS_DGVKT_IDX1 ON CRDS_DGVKT (DGVKT_DATE); CREATE INDEX CRDS_DGVKT_IDX2 ON CRDS_DGVKT (DGVKT_NBR); CREATE UNIQUE DESCENDING INDEX CURRDATA_TYP_DAT_ ON CURRDATA (TYP, DAT_); CREATE INDEX DGVDT_SALEDATE ON DGVDT (SALEDATE); CREATE INDEX DGVDT_TYP ON DGVDT (TYP); CREATE INDEX IDX_DGVDT_NBR ON DGVDT (NBR); CREATE DESCENDING INDEX DGVKT_DAT_ ON DGVKT (DAT_); CREATE INDEX DGVKT_TYP ON DGVKT (TYP); CREATE INDEX IDX_DGVKT_NBR ON DGVKT (NBR); CREATE DESCENDING INDEX DGVWKG_INP_DATE ON DGVWKG (INP_DATE); CREATE DESCENDING INDEX DGVWKG_OUT_DATE ON DGVWKG (OUT_DATE); CREATE INDEX GOODS_BARCODE ON GOODS (BARCODE); CREATE INDEX GOODS_COD ON GOODS (COD); CREATE UNIQUE INDEX MANAGER_PRICE_ORGN_UNIQUE ON MANAGER_PRICE_ORGN (PERSONAL_ID, ORGN_ID, PRICELIST_ID); CREATE INDEX MDOCS_DATE_IDX ON MDOCS (DOC_DATE); CREATE UNIQUE INDEX GOODS_IN_DOC_IDX ON MDOC_GOODS (MDOC_ID, GOOD_ID); CREATE UNIQUE INDEX MOG_DISCOUNT_IDXUNIQUE ON MOG_DISCOUNT (ORGN_ID, PERSONAL_ID, GROOP_ID); CREATE INDEX ORGN_ACCNCODE ON ORGN (ACCNCODE); CREATE UNIQUE INDEX ORGN_IDX_CODE ON ORGN (CODE); CREATE INDEX ORGN_MFO_CODE ON ORGN (MFO_CODE); CREATE UNIQUE INDEX ORGN_NAME ON ORGN (NAME); CREATE INDEX ORGN_OKPOCODE ON ORGN (OKPOCODE); CREATE INDEX ORGNINFO_IDX_CODE ON ORGNINFO (CODE); CREATE DESCENDING INDEX SALE_DAT_ ON SALE (DAT_); CREATE INDEX SC_CARDT_IDX1 ON SC_CARDT (DAT_N); CREATE UNIQUE INDEX STORLIST_NAME ON STORLIST (OURORGNID, NAME); CREATE DESCENDING INDEX STORZAKAZDT_DAT_ ON STORZAKAZDT (DAT_); CREATE INDEX STORZAKAZDT_NBR ON STORZAKAZDT (NBR); CREATE INDEX WORKREQUEST_PDATE ON WORKREQUEST (PDATE); /******************************************************************************/ /*** Triggers ***/ /******************************************************************************/ SET TERM ^ ; /******************************************************************************/ /*** Triggers for tables ***/ /******************************************************************************/ /* Trigger: ACCNDOC_AU0 */ CREATE TRIGGER ACCNDOC_AU0 FOR ACCNDOC ACTIVE AFTER UPDATE POSITION 0 AS begin if ((New.Dat_ <> Old.Dat_) or New.Nbr <> Old.Nbr or New.Comment <> Old.Comment) then Update AccnProv set Dat_ = New.Dat_, Document = New.Nbr, Comment = New.Comment, UserName = New.UserName where AccnDocID = New.ID; end ^ /* Trigger: ACCNDOC_BI0 */ CREATE TRIGGER ACCNDOC_BI0 FOR ACCNDOC ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is null) then New.ID = Gen_ID(AccnDoc_ID, 1); if (New.Nbr is Null or New.Nbr = '') then New.Nbr = New.ID; end ^ /* Trigger: ACCNDOC_BU0 */ CREATE TRIGGER ACCNDOC_BU0 FOR ACCNDOC ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ACCNPLAN_BI0 */ CREATE TRIGGER ACCNPLAN_BI0 FOR ACCNPLAN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID=Gen_ID(AccnPlan_ID, 1); end ^ /* Trigger: ACCNPLAN_BU0 */ CREATE TRIGGER ACCNPLAN_BU0 FOR ACCNPLAN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.ID is Null or New.ID=0) then New.ID=Gen_ID(AccnPlan_ID,1); if ((Old.Group0<>0 and Old.Group0 is not null) and (New.Group0=0 or New.Group0 is null)) then Delete from Sub where Accn=Old.Accn and An=0; if ((Old.Group1<>0 and Old.Group1 is not null) and (New.Group1=0 or New.Group1 is null)) then Delete from Sub where Accn=Old.Accn and An=0; if ((Old.A1<>0 and Old.A1 is not null) and (New.A1=0 or New.A1 is null)) then Delete from Sub where Accn=Old.Accn and An=1; if ((Old.A2<>0 and Old.A2 is not null) and (New.A2=0 or New.A2 is null)) then Delete from Sub where Accn=Old.Accn and An=2; if ((Old.A3<>0 and Old.A3 is not null) and (New.A3=0 or New.A3 is null)) then Delete from Sub where Accn=Old.Accn and An=3; if ((Old.A4<>0 and Old.A4 is not null) and (New.A4=0 or New.A4 is null)) then Delete from Sub where Accn=Old.Accn and An=4; if ((Old.A5<>0 and Old.A5 is not null) and (New.A5=0 or New.A5 is null)) then Delete from Sub where Accn=Old.Accn and An=5; if ((Old.A6<>0 and Old.A6 is not null) and (New.A6=0 or New.A6 is null)) then Delete from Sub where Accn=Old.Accn and An=6; if ((Old.A7<>0 and Old.A7 is not null) and (New.A7=0 or New.A7 is null)) then Delete from Sub where Accn=Old.Accn and An=7; end ^ /* Trigger: ACCNPROV_BEFORE_INSERT */ CREATE TRIGGER ACCNPROV_BEFORE_INSERT FOR ACCNPROV ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; if (New.ID is Null) then New.ID = Gen_ID(AccnProv_ID, 1); end ^ /* Trigger: ACCNPROV_BEFORE_UPDATE */ CREATE TRIGGER ACCNPROV_BEFORE_UPDATE FOR ACCNPROV ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = Current_TimeStamp; end ^ /* Trigger: ACOPRLST_BEFORE_DELETE */ CREATE TRIGGER ACOPRLST_BEFORE_DELETE FOR ACOPRLST ACTIVE BEFORE DELETE POSITION 0 as begin /* Удалить проводки по операции */ delete from storaccn where operid=old.id and oper=old.oper; end ^ /* Trigger: ACOPRLST_BI0 */ CREATE TRIGGER ACOPRLST_BI0 FOR ACOPRLST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(AcOprLst_ID, 1); end ^ /* Trigger: ACOPRLST_BU0 */ CREATE TRIGGER ACOPRLST_BU0 FOR ACOPRLST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: BANKMFO_BEFORE_INSERT */ CREATE TRIGGER BANKMFO_BEFORE_INSERT FOR BANKMFO ACTIVE BEFORE INSERT POSITION 0 AS begin if(New.ID is null or New.ID=0) then New.ID=Gen_ID(BankMfo_ID, 1); end ^ /* Trigger: BANKMFO_BEFORE_UPDATE */ CREATE TRIGGER BANKMFO_BEFORE_UPDATE FOR BANKMFO ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: BDG_ATTR_BI */ CREATE TRIGGER BDG_ATTR_BI FOR BDG_ATTR ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_ATTR_ID,1); END ^ /* Trigger: BDG_ATTR_VAL_BI */ CREATE TRIGGER BDG_ATTR_VAL_BI FOR BDG_ATTR_VAL ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_ATTR_VAL_ID,1); END ^ /* Trigger: BDG_BASIS_BI */ CREATE TRIGGER BDG_BASIS_BI FOR BDG_BASIS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_BASIS_ID,1); END ^ /* Trigger: BDG_BASIS_PORTION_BI */ CREATE TRIGGER BDG_BASIS_PORTION_BI FOR BDG_BASIS_PORTION ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_BASIS_PORTION_ID,1); END ^ /* Trigger: BDG_CALC_AU0 */ CREATE TRIGGER BDG_CALC_AU0 FOR BDG_CALC ACTIVE AFTER UPDATE POSITION 0 AS begin if (old.adefault = 0 and new.adefault = 1) then begin if (new.plan_id is null) then update bdg_calc set adefault = 0 where plan_id is null and period_id = new.period_id and scheme_atype = new.scheme_atype and adefault = 1 and id <> new.id; else update bdg_calc set adefault = 0 where plan_id = new.plan_id and period_id = new.period_id and scheme_atype = new.scheme_atype and adefault = 1 and id <> new.id; end end ^ /* Trigger: BDG_CALC_BI */ CREATE TRIGGER BDG_CALC_BI FOR BDG_CALC ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_CALC_ID,1); if (new.adefault = 1) then begin if (new.plan_id is null) then update bdg_calc set adefault = 0 where plan_id is null and period_id = new.period_id and scheme_atype = new.scheme_atype and adefault = 1 and id <> new.id; else update bdg_calc set adefault = 0 where plan_id = new.plan_id and period_id = new.period_id and scheme_atype = new.scheme_atype and adefault = 1 and id <> new.id; end END ^ /* Trigger: BDG_CALC_BU0 */ CREATE TRIGGER BDG_CALC_BU0 FOR BDG_CALC ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: BDG_CALC_DATA_BI */ CREATE TRIGGER BDG_CALC_DATA_BI FOR BDG_CALC_DATA ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_CALC_DATA_ID,1); END ^ /* Trigger: BDG_CALC_GOODS_BI */ CREATE TRIGGER BDG_CALC_GOODS_BI FOR BDG_CALC_GOODS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_CALC_GOODS_ID,1); END ^ /* Trigger: BDG_CALC_ORDER_BI */ CREATE TRIGGER BDG_CALC_ORDER_BI FOR BDG_CALC_ORDER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_CALC_ORDER_ID,1); END ^ /* Trigger: BDG_CENTER_BI */ CREATE TRIGGER BDG_CENTER_BI FOR BDG_CENTER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_CENTER_ID,1); END ^ /* Trigger: BDG_DATA_STATE_BD0 */ CREATE TRIGGER BDG_DATA_STATE_BD0 FOR BDG_DATA_STATE ACTIVE BEFORE DELETE POSITION 0 AS begin /* Удаляем информацию о распределении затраты по ЦФУ */ if (old.atype = 20 and old.astate = 2) then execute procedure sp_bdg_clear_distr(old.plan_id, old.period_id); end ^ /* Trigger: BDG_DATA_STATE_BI */ CREATE TRIGGER BDG_DATA_STATE_BI FOR BDG_DATA_STATE ACTIVE BEFORE INSERT POSITION 0 as declare variable p_distr_id integer; declare variable f_distr_id integer; declare variable nbr integer; begin if (new.id is null) then new.id = gen_id(gen_bdg_data_state_id,1); new.lastedit = current_timestamp; if (new.atype = 20) then begin if (new.astate = 2) then begin p_distr_id = null; f_distr_id = null; /* распределяем затраты по цфу */ select p_distr_id, f_distr_id from bdg_period where id = new.period_id into :p_distr_id, :f_distr_id; if (new.plan_id is null) then begin if (f_distr_id is not null) then execute procedure sp_bdg_do_distr(:f_distr_id, null, new.period_id) returning_values (:nbr); end else begin if (p_distr_id is not null) then execute procedure sp_bdg_do_distr(:p_distr_id, new.plan_id, new.period_id) returning_values (:nbr); end end else /* удаляем информацию о распределении затраты по цфу */ execute procedure sp_bdg_clear_distr(new.plan_id, new.period_id); end end ^ /* Trigger: BDG_DATA_STATE_BU0 */ CREATE TRIGGER BDG_DATA_STATE_BU0 FOR BDG_DATA_STATE ACTIVE BEFORE UPDATE POSITION 0 AS declare variable p_distr_id integer; declare variable f_distr_id integer; declare variable nbr integer; begin new.lastedit = current_timestamp; if (new.atype = 20 and new.astate <> old.astate) then begin if (new.astate = 2) then begin /* распределяем затраты по ЦФУ */ p_distr_id = null; f_distr_id = null; select p_distr_id, f_distr_id from bdg_period where id = new.period_id into :p_distr_id, :f_distr_id; if (new.plan_id is null) then begin if (f_distr_id is not null) then select count(*) from sp_bdg_do_distr(:f_distr_id, null, new.period_id) sp into :nbr; end else begin if (p_distr_id is not null) then select count(*) from sp_bdg_do_distr(:p_distr_id, new.plan_id, new.period_id) sp into :nbr; end end else /* удаляем информацию о распределении затраты по цфу */ execute procedure sp_bdg_clear_distr(new.plan_id, new.period_id); end end ^ /* Trigger: BDG_DIRECTION_BI */ CREATE TRIGGER BDG_DIRECTION_BI FOR BDG_DIRECTION ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_DIRECTION_ID,1); END ^ /* Trigger: BDG_DISTR_BASIS_BI */ CREATE TRIGGER BDG_DISTR_BASIS_BI FOR BDG_DISTR_BASIS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_DISTR_BASIS_ID,1); new.lastedit = current_timestamp; END ^ /* Trigger: BDG_DISTR_BASIS_BU0 */ CREATE TRIGGER BDG_DISTR_BASIS_BU0 FOR BDG_DISTR_BASIS ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: BDG_DISTR_BI */ CREATE TRIGGER BDG_DISTR_BI FOR BDG_DISTR ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_DISTR_ID,1); new.lastedit = current_timestamp; END ^ /* Trigger: BDG_DISTR_BU0 */ CREATE TRIGGER BDG_DISTR_BU0 FOR BDG_DISTR ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: BDG_DISTR_ORDER_BI */ CREATE TRIGGER BDG_DISTR_ORDER_BI FOR BDG_DISTR_ORDER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_DISTR_ORDER_ID,1); END ^ /* Trigger: BDG_DISTR_PORTION_BI */ CREATE TRIGGER BDG_DISTR_PORTION_BI FOR BDG_DISTR_PORTION ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_DISTR_PORTION_ID,1); END ^ /* Trigger: BDG_DOC_BI */ CREATE TRIGGER BDG_DOC_BI FOR BDG_DOC ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_DOC_ID,1); new.lastedit = current_timestamp; if (new.amount is null) then new.amount = 0; END ^ /* Trigger: BDG_DOC_BI0 */ CREATE TRIGGER BDG_DOC_BI0 FOR BDG_DOC ACTIVE BEFORE INSERT POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: BDG_DOC_BU0 */ CREATE TRIGGER BDG_DOC_BU0 FOR BDG_DOC ACTIVE BEFORE UPDATE POSITION 0 AS begin if (new.amount is null) then new.amount = 0; end ^ /* Trigger: BDG_GOODS_AD0 */ CREATE TRIGGER BDG_GOODS_AD0 FOR BDG_GOODS ACTIVE AFTER DELETE POSITION 0 AS declare variable source_type integer; begin update bdg_paper set amount = amount - (old.quant * old.price) where id = old.paper_id; select p.source_type from bdg_paper p where p.id = old.paper_id into :source_type; /* Для реализации товаров - обновляем затраты на закупку */ if (source_type = 2) then update bdg_paper set amount = amount - (old.quant * old.src_price) where link_to = old.paper_id and source_type = 7; else /* Для затраты пр-ва - удаляем затраты на сырье */ if (source_type = 4) then delete from bdg_goods where link_to = old.id; else /* Для затраты сырья на пр-во - обновляем себестоимость */ if (source_type = 5) then update bdg_goods set src_price = src_price - (old.quant * old.price / quant) where id = old.link_to and quant <> 0; end ^ /* Trigger: BDG_GOODS_AI0 */ CREATE TRIGGER BDG_GOODS_AI0 FOR BDG_GOODS ACTIVE AFTER INSERT POSITION 0 AS declare variable source_type integer; begin if (new.paper_id is not null) then begin update bdg_paper set amount = amount + new.quant * new.price where id = new.paper_id; select p.source_type from bdg_paper p where p.id = new.paper_id into :source_type; /* Для реализации товаров - добавляем затраты на закупку */ if (source_type = 2) then update bdg_paper set amount = amount + new.quant * new.src_price where link_to = new.paper_id and source_type = 7; else /* Для затраты сырья на пр-во - обновляем себестоимость */ if (source_type = 5) then update bdg_goods set src_price = src_price + (new.quant * new.price / quant) where id = new.link_to and quant <> 0; end end ^ /* Trigger: BDG_GOODS_AU0 */ CREATE TRIGGER BDG_GOODS_AU0 FOR BDG_GOODS ACTIVE AFTER UPDATE POSITION 0 AS declare variable source_type integer; begin if (new.quant <> old.quant or new.price <> old.price or new.src_price <> old.src_price) then begin update bdg_paper set amount = amount - (old.quant * old.price) + (new.quant * new.price) where id = new.paper_id; select p.source_type from bdg_paper p where p.id = old.paper_id into :source_type; /* Для "реализации товаров" - обновляем затраты на закупку */ if (source_type = 2) then update bdg_paper set amount = amount - (old.quant * old.src_price) + (new.quant * new.src_price) where link_to = old.paper_id and source_type = 7; else begin /* Для "затраты сырья на пр-во" - обновляем себестоимость */ if (source_type = 5) then update bdg_goods set src_price = src_price - (old.quant * old.price / quant) + (new.quant * new.price / quant) where id = old.link_to and quant <> 0; end end end ^ /* Trigger: BDG_GOODS_BI */ CREATE TRIGGER BDG_GOODS_BI FOR BDG_GOODS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_GOODS_ID,1); new.lastedit = current_timestamp; if (new.quant is null) then new.quant = 0.0; if (new.price is null) then new.price = 0.0; if (new.src_price is null) then new.src_price = 0.0; END ^ /* Trigger: BDG_GOODS_BU0 */ CREATE TRIGGER BDG_GOODS_BU0 FOR BDG_GOODS ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; if (new.quant is null) then new.quant = 0; if (new.price is null) then new.price = 0; end ^ /* Trigger: BDG_INDICATOR_BI */ CREATE TRIGGER BDG_INDICATOR_BI FOR BDG_INDICATOR ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_INDICATOR_ID,1); END ^ /* Trigger: BDG_IND_VAL_BI */ CREATE TRIGGER BDG_IND_VAL_BI FOR BDG_IND_VAL ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_IND_VAL_ID,1); END ^ /* Trigger: BDG_ITEM_AD0 */ CREATE TRIGGER BDG_ITEM_AD0 FOR BDG_ITEM ACTIVE AFTER DELETE POSITION 0 AS begin if (old.owner is not null) then update bdg_item set child_count = child_count - 1 where id = old.owner; end ^ /* Trigger: BDG_ITEM_BI */ CREATE TRIGGER BDG_ITEM_BI FOR BDG_ITEM ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_ITEM_ID,1); if (new.result_type = 1) then begin new.costs_type = null; new.work_type = null; end if (new.owner is not null) then update bdg_item set child_count = child_count + 1 where id = new.owner; END ^ /* Trigger: BDG_ITEM_BU0 */ CREATE TRIGGER BDG_ITEM_BU0 FOR BDG_ITEM ACTIVE BEFORE UPDATE POSITION 0 AS begin /* Проверка на логику изменений */ if (old.atype <> new.atype) then exception bdg_bad_type_change; if (new.result_type = 1) then begin new.costs_type = null; new.work_type = null; end if (old.owner <> new.owner) then update bdg_item set child_count = child_count - 1 where id = old.owner; if (new.owner is not null) then update bdg_item set child_count = child_count + 1 where id = new.owner; end ^ /* Trigger: BDG_LINK_ITEM_CENTER_BI */ CREATE TRIGGER BDG_LINK_ITEM_CENTER_BI FOR BDG_LINK_ITEM_CENTER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_LINK_ITEM_CENTER_ID,1); END ^ /* Trigger: BDG_LINK_PAPER_ATTR_VAL_BI */ CREATE TRIGGER BDG_LINK_PAPER_ATTR_VAL_BI FOR BDG_LINK_PAPER_ATTR_VAL ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_LINK_PAPER_ATTR_VAL_ID,1); END ^ /* Trigger: BDG_LINK_USER_CENTER_BI */ CREATE TRIGGER BDG_LINK_USER_CENTER_BI FOR BDG_LINK_USER_CENTER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_LINK_USER_CENTER_ID,1); END ^ /* Trigger: BDG_LINK_USER_DIRECTION_BI */ CREATE TRIGGER BDG_LINK_USER_DIRECTION_BI FOR BDG_LINK_USER_DIRECTION ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_LINK_USER_DIRECTION_ID,1); END ^ /* Trigger: BDG_PAPER_AD0 */ CREATE TRIGGER BDG_PAPER_AD0 FOR BDG_PAPER ACTIVE AFTER DELETE POSITION 0 AS declare variable cnt integer; begin if (old.obj_id is not null) then begin select count(*) from bdg_paper where obj_id = old.obj_id into :cnt; if (cnt = 0) then update obj_class set bdg_state = 0 where id = old.obj_id; end end ^ /* Trigger: BDG_PAPER_AI0 */ CREATE TRIGGER BDG_PAPER_AI0 FOR BDG_PAPER ACTIVE AFTER INSERT POSITION 0 AS begin /* Изменение статуса "Объекта" */ if (new.obj_id is not null) then update obj_class set bdg_state = 1 where id = new.obj_id; end ^ /* Trigger: BDG_PAPER_AU0 */ CREATE TRIGGER BDG_PAPER_AU0 FOR BDG_PAPER ACTIVE AFTER UPDATE POSITION 0 AS begin /* Обновление зависимых документов */ if (new.atype = 0) then begin if ((new.amount <> old.amount) or (new.nds <> old.nds)) then update bdg_paper set amount = link_koef * new.amount, nds = link_koef * new.nds where link_to = new.id and link_koef is not null and atype = 1; end /* Изменение статуса "Объекта" */ if (new.obj_id is not null) then update obj_class set bdg_state = 4 where id = new.obj_id; /* Обновление статуса объекта */ if (new.obj_id is not null) then begin if (old.obj_id is null) then update obj_class set bdg_state = 1 where id = new.obj_id; end else if (old.obj_id is not null) then update obj_class set bdg_state = 0 where id = new.obj_id; end ^ /* Trigger: BDG_PAPER_BD0 */ CREATE TRIGGER BDG_PAPER_BD0 FOR BDG_PAPER ACTIVE BEFORE DELETE POSITION 0 AS begin execute procedure sp_bdg_check_paper_data_state(old.dat_, old.plan_id, old.item_id, old.atype); end ^ /* Trigger: BDG_PAPER_BI */ CREATE TRIGGER BDG_PAPER_BI FOR BDG_PAPER ACTIVE BEFORE INSERT POSITION 0 AS declare variable item_atype integer; BEGIN if (new.id is null) then new.id = gen_id(gen_bdg_paper_id,1); /* Обработка на соответствие типов статьи и документа */ if (new.item_id is not null) then begin select atype from bdg_item where id = new.item_id into :item_atype; if (new.atype <> :item_atype) then exception bdg_bad_paper_item_type; end /* Проверка состояния данных (Открыты/Закрыты) */ execute procedure sp_bdg_check_paper_data_state(new.dat_, new.plan_id, new.item_id, new.atype); /* Если это привязанный документ, то инициализируем даные */ if ((new.link_to is not null) and (new.atype = 1)) then begin select plan_id, amount * coalesce(new.link_koef, 0), nds * coalesce(new.link_koef, 0) from bdg_paper p where p.id = new.link_to into new.plan_id, new.amount, new.nds; end END ^ /* Trigger: BDG_PAPER_BU0 */ CREATE TRIGGER BDG_PAPER_BU0 FOR BDG_PAPER ACTIVE BEFORE UPDATE POSITION 0 AS declare variable item_atype integer; begin new.lastedit = current_timestamp; if (old.atype <> new.atype) then exception bdg_bad_type_change; if ((old.obj_id <> new.obj_id) and (old.obj_id is not null) and (new.obj_id is not null)) then exception bdg_paper_obj_change; /* Обработка на соответствие типов статьи и документа */ if (coalesce(old.item_id, 0) <> coalesce(new.item_id, 0)) then begin select atype from bdg_item where id = new.item_id into :item_atype; if (new.atype <> :item_atype) then exception bdg_bad_paper_item_type; end /* Проверка состояния данных (Открыты/Закрыты) */ if (new.center_id <> old.center_id or coalesce(new.item_id, 0) <> coalesce(old.item_id, 0) or new.dat_ <> old.dat_ or new.amount <> old.amount or new.nds <> old.nds -- or new.source_type <> old.source_type or coalesce(new.plan_id, 0) <> coalesce(old.plan_id, 0)) then begin execute procedure sp_bdg_check_paper_data_state(old.dat_, old.plan_id, old.item_id, old.atype); execute procedure sp_bdg_check_paper_data_state(new.dat_, new.plan_id, new.item_id, new.atype); end /* Обновление сумм при изменении коэффициента привязки */ if (coalesce(new.link_koef, 0) <> coalesce(old.link_koef, 0)) then begin select amount * coalesce(new.link_koef, 0), nds * coalesce(new.link_koef, 0) from bdg_paper where id = new.link_to into new.amount, new.nds; end end ^ /* Trigger: BDG_PERIOD_AD0 */ CREATE TRIGGER BDG_PERIOD_AD0 FOR BDG_PERIOD ACTIVE AFTER DELETE POSITION 0 AS declare variable bdate timestamp; declare variable edate timestamp; BEGIN if (old.owner is not null) then begin select coalesce(min(bdate), cast(current_date as timestamp)), max(edate) from bdg_period where owner = old.owner into :bdate, :edate; if (edate is null) then edate = bdate; update bdg_period set bdate = :bdate, edate = :edate where id = old.owner; end if (old.objid is not null) then delete from obj_class where id = old.objid; END ^ /* Trigger: BDG_PERIOD_AI0 */ CREATE TRIGGER BDG_PERIOD_AI0 FOR BDG_PERIOD ACTIVE AFTER INSERT POSITION 0 AS declare variable bdate timestamp; declare variable edate timestamp; BEGIN if (new.owner is not null) then begin select coalesce(min(bdate), cast(current_date as timestamp)), max(edate) from bdg_period where owner = new.owner into :bdate, :edate; if (edate is null) then edate = bdate; update bdg_period set bdate = :bdate, edate = :edate where id = new.owner; end END ^ /* Trigger: BDG_PERIOD_AU0 */ CREATE TRIGGER BDG_PERIOD_AU0 FOR BDG_PERIOD ACTIVE AFTER UPDATE POSITION 0 AS declare variable bdate timestamp; declare variable edate timestamp; begin if ((new.owner <> old.owner) or (old.owner is not null and new.owner is null)) then begin select coalesce(min(bdate), cast(current_date as timestamp)), max(edate) from bdg_period where owner = old.owner into :bdate, :edate; if (edate is null) then edate = bdate; update bdg_period set bdate = :bdate, edate = :edate where id = old.owner; end if (new.owner is not null) then begin select coalesce(min(bdate), cast(current_date as timestamp)), max(edate) from bdg_period where owner = new.owner into :bdate, :edate; if (edate is null) then edate = bdate; update bdg_period set bdate = :bdate, edate = :edate where id = new.owner; end if (new.bdate > new.edate) then exception bdg_period_date_reverse; end ^ /* Trigger: BDG_PERIOD_BI */ CREATE TRIGGER BDG_PERIOD_BI FOR BDG_PERIOD ACTIVE BEFORE INSERT POSITION 0 AS declare variable bdate timestamp; declare variable edate timestamp; BEGIN if (new.bdate > new.edate) then exception BDG_PERIOD_DATE_REVERSE; if (new.id is null) then new.id = gen_id(gen_bdg_period_id,1); if (new.owner is not null) then begin select coalesce(min(bdate), cast(current_date as timestamp)), max(edate) from bdg_period where owner = new.owner into :bdate, :edate; if (edate is null) then edate = bdate; update bdg_period set bdate = :bdate, edate = :edate where id = new.owner; end if (new.objid is null) then begin new.objid = gen_id(obj_class_id, 1); insert into obj_class(id, obj_typ) values (new.objid, 301); end END ^ /* Trigger: BDG_PERIOD_BU0 */ CREATE TRIGGER BDG_PERIOD_BU0 FOR BDG_PERIOD ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: BDG_PLAN_BI */ CREATE TRIGGER BDG_PLAN_BI FOR BDG_PLAN ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_PLAN_ID,1); END ^ /* Trigger: BDG_PRICE_BI */ CREATE TRIGGER BDG_PRICE_BI FOR BDG_PRICE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_PRICE_ID,1); END ^ /* Trigger: BDG_PRICE_GOODS_BI */ CREATE TRIGGER BDG_PRICE_GOODS_BI FOR BDG_PRICE_GOODS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_PRICE_GOODS_ID,1); END ^ /* Trigger: BDG_SCHEME_BI */ CREATE TRIGGER BDG_SCHEME_BI FOR BDG_SCHEME ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_SCHEME_ID,1); END ^ /* Trigger: BDG_SCHEME_OPER_BI */ CREATE TRIGGER BDG_SCHEME_OPER_BI FOR BDG_SCHEME_OPER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_SCHEME_OPER_ID,1); END ^ /* Trigger: BDG_SCHEME_ORDER_BI */ CREATE TRIGGER BDG_SCHEME_ORDER_BI FOR BDG_SCHEME_ORDER ACTIVE BEFORE INSERT POSITION 0 AS declare variable cnt integer; BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_SCHEME_ORDER_ID,1); select count (*) from bdg_scheme_order where id <> new.id and scheme_id = new.scheme_id and nbr = new.nbr and ((new.grou_ = 1 and grou_ = 1) or (new.grou_ in (0,2) and grou_ in (0,2))) into :cnt; if (cnt <> 0) then exception bdg_unique; END ^ /* Trigger: BDG_SCHEME_ORDER_BU0 */ CREATE TRIGGER BDG_SCHEME_ORDER_BU0 FOR BDG_SCHEME_ORDER ACTIVE BEFORE UPDATE POSITION 0 AS declare variable cnt integer; BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_SCHEME_ORDER_ID,1); if (old.nbr <> new.nbr) then begin select count (*) from bdg_scheme_order where id <> new.id and scheme_id = new.scheme_id and nbr = new.nbr and ((new.grou_ = 1 and grou_ = 1) or (new.grou_ in (0,2) and grou_ in (0,2))) into :cnt; if (cnt <> 0) then exception bdg_unique; end END ^ /* Trigger: BDG_SERV_AD0 */ CREATE TRIGGER BDG_SERV_AD0 FOR BDG_SERV ACTIVE AFTER DELETE POSITION 0 AS begin update bdg_paper set amount = amount - (old.quant * old.price) where id = old.paper_id; end ^ /* Trigger: BDG_SERV_AI0 */ CREATE TRIGGER BDG_SERV_AI0 FOR BDG_SERV ACTIVE AFTER INSERT POSITION 0 AS begin update bdg_paper set amount = amount + new.quant * new.price where id = new.paper_id; end ^ /* Trigger: BDG_SERV_AU0 */ CREATE TRIGGER BDG_SERV_AU0 FOR BDG_SERV ACTIVE AFTER UPDATE POSITION 0 AS begin if (old.paper_id = new.paper_id) then begin if (new.quant <> old.quant or new.price <> old.price) then update bdg_paper set amount = amount - (old.quant * old.price) + (new.quant * new.price) where id = new.paper_id; end else begin update bdg_paper set amount = amount - (old.quant * old.price) where id = old.paper_id; update bdg_paper set amount = amount + (new.quant * new.price) where id = new.paper_id; end end ^ /* Trigger: BDG_SERV_BI */ CREATE TRIGGER BDG_SERV_BI FOR BDG_SERV ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_SERV_ID,1); if (new.quant is null) then new.quant = 0; if (new.price is null) then new.price = 0; END ^ /* Trigger: BDG_SERV_BU0 */ CREATE TRIGGER BDG_SERV_BU0 FOR BDG_SERV ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; if (new.quant is null) then new.quant = 0; if (new.price is null) then new.price = 0; end ^ /* Trigger: BDG_SHEDULE_BI */ CREATE TRIGGER BDG_SHEDULE_BI FOR BDG_SHEDULE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_SHEDULE_ID,1); new.lastedit = current_timestamp; END ^ /* Trigger: BDG_SHEDULE_BU0 */ CREATE TRIGGER BDG_SHEDULE_BU0 FOR BDG_SHEDULE ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: BDG_SHEDULE_SHIFT_BI */ CREATE TRIGGER BDG_SHEDULE_SHIFT_BI FOR BDG_SHEDULE_SHIFT ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_SHEDULE_SHIFT_ID,1); new.lastedit = current_timestamp; END ^ /* Trigger: BDG_SHEDULE_SHIFT_BU0 */ CREATE TRIGGER BDG_SHEDULE_SHIFT_BU0 FOR BDG_SHEDULE_SHIFT ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: BDG_WGOODS_BI */ CREATE TRIGGER BDG_WGOODS_BI FOR BDG_WGOODS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_WGOODS_ID,1); END ^ /* Trigger: BDG_WPAPER_BI */ CREATE TRIGGER BDG_WPAPER_BI FOR BDG_WPAPER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BDG_WPAPER_ID,1); END ^ /* Trigger: BOOKSLDTACCR_BD0 */ CREATE TRIGGER BOOKSLDTACCR_BD0 FOR BOOKSLDTACCR ACTIVE BEFORE DELETE POSITION 0 AS begin Delete from AccnProv where ID = Old.AccnProvID; end ^ /* Trigger: BOOKSLDTACCR_BI0 */ CREATE TRIGGER BOOKSLDTACCR_BI0 FOR BOOKSLDTACCR ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(BookSlDtAcCr_ID, 1); end ^ /* Trigger: BOOKSLDTDAYS_BI0 */ CREATE TRIGGER BOOKSLDTDAYS_BI0 FOR BOOKSLDTDAYS ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(BookSlDtDays_ID, 1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: BOOKSLDT_AI0 */ CREATE TRIGGER BOOKSLDT_AI0 FOR BOOKSLDT ACTIVE AFTER INSERT POSITION 0 AS begin if (New.OperID is not Null) then Execute Procedure BookSlDt_GenAccnRec(New.ID); end ^ /* Trigger: BOOKSLDT_AU0 */ CREATE TRIGGER BOOKSLDT_AU0 FOR BOOKSLDT ACTIVE AFTER UPDATE POSITION 0 AS begin if (New.OperID is not Null) then Execute procedure BookSlDt_GenAccnRec(New.ID); end ^ /* Trigger: BOOKSLDT_BD0 */ CREATE TRIGGER BOOKSLDT_BD0 FOR BOOKSLDT ACTIVE BEFORE DELETE POSITION 0 AS begin delete from BookSlDtAcCr where BookSlDtID = Old.ID; end ^ /* Trigger: BOOKSLDT_BI0 */ CREATE TRIGGER BOOKSLDT_BI0 FOR BOOKSLDT ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(BookSlDt_ID, 1); if (New.SaleNds is Null) then New.SaleNds = 1; if (New.KNds is Null) then New.KNds = 1; if (New.KBN is Null) then New.KBN = 0; if (New.SBN is Null) then New.SBN = 0; if (New.SNN is Null) then New.SNN = 1; if (New.KSumma is Null) then New.KSumma = 0.0; end ^ /* Trigger: BOOKSLDT_BU0 */ CREATE TRIGGER BOOKSLDT_BU0 FOR BOOKSLDT ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; Delete from BookSlDtAcCr where BookSlDtID = Old.ID; end ^ /* Trigger: BOOKSLKTACCR_BD0 */ CREATE TRIGGER BOOKSLKTACCR_BD0 FOR BOOKSLKTACCR ACTIVE BEFORE DELETE POSITION 0 AS begin delete from AccnProv where ID = Old.AccnProvID; end ^ /* Trigger: BOOKSLKTACCR_BI0 */ CREATE TRIGGER BOOKSLKTACCR_BI0 FOR BOOKSLKTACCR ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(BookSlKtAcCr_ID, 1); end ^ /* Trigger: BOOKSLKTDAYS_BI0 */ CREATE TRIGGER BOOKSLKTDAYS_BI0 FOR BOOKSLKTDAYS ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(BookSlKtDays_ID, 1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: BOOKSLKT_AI0 */ CREATE TRIGGER BOOKSLKT_AI0 FOR BOOKSLKT ACTIVE AFTER INSERT POSITION 0 AS begin if (New.OperID is not Null) then Execute Procedure BookSlKt_GenAccnRec(New.ID); end ^ /* Trigger: BOOKSLKT_AU0 */ CREATE TRIGGER BOOKSLKT_AU0 FOR BOOKSLKT ACTIVE AFTER UPDATE POSITION 0 AS Declare Variable AccnProvID integer; Declare Variable AcCrID integer; begin For Select ID, AccnProvID from BookSlKtAcCr where BookSlKtID = Old.ID into :AcCrID, :AccnProvID do begin Delete from BookSlKtAcCr where ID = :AcCrID; end if (New.OperID is not Null) then Execute Procedure BookSlKt_GenAccnRec(New.ID); end ^ /* Trigger: BOOKSLKT_BI0 */ CREATE TRIGGER BOOKSLKT_BI0 FOR BOOKSLKT ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(BookSlKt_ID, 1); if (New.NNds is Null) then New.NNds = 0.0; if (New.FNds is Null) then New.FNds = 0.0; if (New.FFNds is Null) then New.FFNds = 0.0; if (New.NSumma is Null) then New.NSumma = 0.0; if (New.DAT_ is Null) then begin SELECT DAT_ FROM BOOKSLKTDAYS WHERE ID = New.BOOKDAYSID INTO New.DAT_; end end ^ /* Trigger: BOOKSLKT_BU0 */ CREATE TRIGGER BOOKSLKT_BU0 FOR BOOKSLKT ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.Summa is null) then New.Summa = 0.0; if (New.Nds is null) then New.Nds = 0.0; if (New.NSumma is null) then New.NSumma = 0.0; if (New.KSumma is null) then New.KSumma = 0.0; end ^ /* Trigger: CRDS_AVLGOODS_AI0 */ CREATE TRIGGER CRDS_AVLGOODS_AI0 FOR CRDS_AVLGOODS ACTIVE AFTER INSERT POSITION 0 AS begin if ( (new.avlgoods_quant < 0.00001) and (new.avlgoods_quant > -0.00001) ) then delete from crds_avlgoods where id = new.id; end ^ /* Trigger: CRDS_AVLGOODS_AU0 */ CREATE TRIGGER CRDS_AVLGOODS_AU0 FOR CRDS_AVLGOODS ACTIVE AFTER UPDATE POSITION 0 AS begin if ( (new.avlgoods_quant < 0.00001) and (new.avlgoods_quant > -0.00001) ) then delete from crds_avlgoods where id = new.id; end ^ /* Trigger: CRDS_AVLGOODS_BI */ CREATE TRIGGER CRDS_AVLGOODS_BI FOR CRDS_AVLGOODS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_CRDS_AVLGOODS_ID,1); END ^ /* Trigger: CRDS_AVLGOODS_BU0 */ CREATE TRIGGER CRDS_AVLGOODS_BU0 FOR CRDS_AVLGOODS ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: CRDS_DGVDT_BD0 */ CREATE TRIGGER CRDS_DGVDT_BD0 FOR CRDS_DGVDT ACTIVE BEFORE DELETE POSITION 0 AS begin delete from crds_gdddt where dgvdt_id = old.id; end ^ /* Trigger: CRDS_DGVDT_BI */ CREATE TRIGGER CRDS_DGVDT_BI FOR CRDS_DGVDT ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_CRDS_DGVDT_ID,1); END ^ /* Trigger: CRDS_DGVDT_BU0 */ CREATE TRIGGER CRDS_DGVDT_BU0 FOR CRDS_DGVDT ACTIVE BEFORE UPDATE POSITION 0 as declare variable id integer; declare variable src double precision; begin New.LastEdit = Current_TimeStamp; if (new.stor_id <> old.stor_id) then begin for select g.goods_id, g.goods_quant from crds_gdddt g where g.dgvdt_id = old.id into :id, :src do begin execute procedure SP_CRDS_SET_GDSAVL(:id, old.stor_id, :src); execute procedure SP_CRDS_SET_GDSAVL(:id, new.stor_id, -:src); end end end ^ /* Trigger: CRDS_DGVKT_BD0 */ CREATE TRIGGER CRDS_DGVKT_BD0 FOR CRDS_DGVKT ACTIVE BEFORE DELETE POSITION 0 AS begin delete from crds_gddkt where dgvkt_id = old.id; end ^ /* Trigger: CRDS_DGVKT_BI */ CREATE TRIGGER CRDS_DGVKT_BI FOR CRDS_DGVKT ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_CRDS_DGVKT_ID,1); END ^ /* Trigger: CRDS_DGVKT_BU0 */ CREATE TRIGGER CRDS_DGVKT_BU0 FOR CRDS_DGVKT ACTIVE BEFORE UPDATE POSITION 0 as declare variable id integer; declare variable src double precision; begin if (new.stor_id <> old.stor_id) then begin for select g.goods_id, g.goods_quant from crds_gddkt g where g.dgvkt_id = old.id into :id, :src do begin execute procedure SP_CRDS_SET_GDSAVL(:id, old.stor_id, -:src); execute procedure SP_CRDS_SET_GDSAVL(:id, new.stor_id, :src); end end end ^ /* Trigger: CRDS_GDDDT_BD0 */ CREATE TRIGGER CRDS_GDDDT_BD0 FOR CRDS_GDDDT ACTIVE BEFORE DELETE POSITION 0 AS declare variable v_store_id integer; begin select stor_id from crds_dgvdt where id = old.dgvdt_id into :v_store_id; execute procedure sp_crds_set_gdsavl(old.goods_id, :v_store_id, old.goods_quant); end ^ /* Trigger: CRDS_GDDDT_BI */ CREATE TRIGGER CRDS_GDDDT_BI FOR CRDS_GDDDT ACTIVE BEFORE INSERT POSITION 0 AS declare variable v_store_id integer; BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_CRDS_GDDDT_ID,1); select stor_id from crds_dgvdt where id = new.dgvdt_id into :v_store_id; execute procedure sp_crds_set_gdsavl (new.goods_id, :v_store_id, -new.goods_quant); END ^ /* Trigger: CRDS_GDDDT_BU0 */ CREATE TRIGGER CRDS_GDDDT_BU0 FOR CRDS_GDDDT ACTIVE BEFORE UPDATE POSITION 0 AS declare variable v_store_id integer; begin new.lastedit = current_timeStamp; select stor_id from crds_dgvdt where id = new.dgvdt_id into :v_store_id; if (new.goods_id = old.goods_id) then execute procedure sp_crds_set_gdsavl(new.goods_id, :v_store_id, -(new.goods_quant - old.goods_quant)); else begin execute procedure sp_crds_set_gdsavl(old.goods_id, :v_store_id, old.goods_quant); execute procedure sp_crds_set_gdsavl(new.goods_id, :v_store_id, -new.goods_quant); end end ^ /* Trigger: CRDS_GDDKT_BD0 */ CREATE TRIGGER CRDS_GDDKT_BD0 FOR CRDS_GDDKT ACTIVE BEFORE DELETE POSITION 0 AS declare variable v_store_id integer; begin select stor_id from crds_dgvkt where id = old.dgvkt_id into :v_store_id; execute procedure sp_crds_set_gdsavl(old.goods_id, :v_store_id, -old.goods_quant); end ^ /* Trigger: CRDS_GDDKT_BI */ CREATE TRIGGER CRDS_GDDKT_BI FOR CRDS_GDDKT ACTIVE BEFORE INSERT POSITION 0 AS declare variable v_store_id integer; BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_CRDS_GDDKT_ID,1); select stor_id from crds_dgvkt where id = new.dgvkt_id into :v_store_id; execute procedure sp_crds_set_gdsavl (new.goods_id, :v_store_id, new.goods_quant); END ^ /* Trigger: CRDS_GDDKT_BU0 */ CREATE TRIGGER CRDS_GDDKT_BU0 FOR CRDS_GDDKT ACTIVE BEFORE UPDATE POSITION 0 AS declare variable v_store_id integer; begin new.lastedit = current_timestamp; select stor_id from crds_dgvkt where id = new.dgvkt_id into :v_store_id; if (new.goods_id = old.goods_id) then execute procedure sp_crds_set_gdsavl(new.goods_id, :v_store_id, new.goods_quant - old.goods_quant); else begin execute procedure sp_crds_set_gdsavl(old.goods_id, :v_store_id, -old.goods_quant); execute procedure sp_crds_set_gdsavl(new.goods_id, :v_store_id, new.goods_quant); end end ^ /* Trigger: CSDTKT_AU0 */ CREATE TRIGGER CSDTKT_AU0 FOR CSDTKT ACTIVE AFTER UPDATE POSITION 0 AS declare variable CSID integer; declare variable xDate Date; declare variable eSumma Double Precision; begin /* корректировка сальдо */ if (New.ECSUMMA <> Old.ECSUMMA) then begin select xDate from F_Quarter_End(New.DAT_+1) into :xDate; Select ID from CSDTKT where OurOrgnID=New.OurOrgnID and DAT_=:xDate and CurrTyp=New.CurrTyp and NameID=New.NameID and OrgnInfoID=New.OrgnInfoID and CSDTKTHBID=New.CSDTKTHBID into :CSID; if (:CSID is not Null) then begin Select Sum(CSumma) from CurrStorDtKt where OurOrgnID=New.OurOrgnID and EDATE=:XDate and CurrTyp=New.CurrTyp and NameID=New.NameID and OrgnInfoID=New.OrgnInfoID and CSDTKTHBID=New.CSDTKTHBID into :eSumma; if (:eSumma is Null) then eSumma = 0.0; eSumma = :eSumma + New.ecSumma; Update CSDTKT set BCSUMMA=New.ECSUMMA, ECSUMMA=:ESUMMA where ID=:CSID; end end end ^ /* Trigger: CSDTKT_BD1 */ CREATE TRIGGER CSDTKT_BD1 FOR CSDTKT ACTIVE BEFORE DELETE POSITION 1 AS begin delete from CurrStorDtKt where CSMID=Old.ID; end ^ /* Trigger: CSDTKT_BI0 */ CREATE TRIGGER CSDTKT_BI0 FOR CSDTKT ACTIVE BEFORE INSERT POSITION 0 AS declare variable xDate Date; declare variable csID integer; declare variable bSumma double precision; begin /* начало текущего квартала */ select xDate from F_Quarter_Beg(New.DAT_) into :xDate; /* конец предыдущего квартала */ select xDate from F_Quarter_End(:xDate-1) into :xDate; select ID, ECSUMMA from CSDTKT where OurOrgnID=New.OurOrgnID and DAT_=:xDate and CurrTyp=New.CurrTyp and NameID=New.NameID and OrgnInfoID=New.OrgnInfoID and CSDTKTHBID=New.CSDTKTHBID into :CSID, :bSumma; if (:CSID is not Null) then New.BCSUMMA=:bSumma; else New.BCSUMMA=0.0; end ^ /* Trigger: CSDTKT_BU0 */ CREATE TRIGGER CSDTKT_BU0 FOR CSDTKT ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: CTLGDISTR_BI */ CREATE TRIGGER CTLGDISTR_BI FOR CTLGDISTR ACTIVE BEFORE INSERT POSITION 0 AS declare variable cnt integer; BEGIN IF (NEW.ITEM_ID IS NULL) THEN NEW.ITEM_ID = GEN_ID(GEN_CTLGDISTR_ID,1); IF (not NEW.ORGN_ID IS NULL) THEN NEW.PERSONAL_ID = NULL; IF (not NEW.PERSONAL_ID IS NULL) THEN NEW.ORGN_ID = NULL; IF (NEW.distr_period IS NULL) THEN NEW.distr_period = 0; select count(*) from ctlgdistr where item_id = new.item_id and distr_return is null into :cnt; if (cnt <> 0) then exception e_ctlg_distr; END ^ /* Trigger: CTLGDISTR_BU0 */ CREATE TRIGGER CTLGDISTR_BU0 FOR CTLGDISTR ACTIVE BEFORE UPDATE POSITION 0 AS begin IF ((not NEW.ORGN_ID IS NULL) and (OLD.ORGN_ID IS NULL)) THEN NEW.PERSONAL_ID = NULL; IF ((not NEW.PERSONAL_ID IS NULL)and(OLD.PERSONAL_ID IS NULL)) THEN NEW.ORGN_ID = NULL; IF (NEW.distr_period IS NULL) THEN NEW.distr_period = 0; end ^ /* Trigger: CTLGENTITY_BI */ CREATE TRIGGER CTLGENTITY_BI FOR CTLGENTITY ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ENTITY_ID IS NULL) THEN NEW.ENTITY_ID = GEN_ID(GEN_CTLGENTITY_ID,1); END ^ /* Trigger: CTLGITEM_BI */ CREATE TRIGGER CTLGITEM_BI FOR CTLGITEM ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ITEM_ID IS NULL) THEN NEW.ITEM_ID = GEN_ID(GEN_CTLGITEM_ID,1); END ^ /* Trigger: CTLGKIND_BI */ CREATE TRIGGER CTLGKIND_BI FOR CTLGKIND ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.KIND_ID IS NULL) THEN NEW.KIND_ID = GEN_ID(GEN_CTLGKIND_ID,1); END ^ /* Trigger: CTLGTHEME_BI */ CREATE TRIGGER CTLGTHEME_BI FOR CTLGTHEME ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.THEME_ID IS NULL) THEN NEW.THEME_ID = GEN_ID(GEN_CTLGTHEME_ID,1); END ^ /* Trigger: CURRDATA_BI0 */ CREATE TRIGGER CURRDATA_BI0 FOR CURRDATA ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID=Gen_ID(CurrData_ID,1); end ^ /* Trigger: CURRDATA_BU0 */ CREATE TRIGGER CURRDATA_BU0 FOR CURRDATA ACTIVE BEFORE UPDATE POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID=Gen_ID(CurrData_ID,1); New.LastEdit = Current_TimeStamp; end ^ /* Trigger: CURRSTORDAYSACCR_BI0 */ CREATE TRIGGER CURRSTORDAYSACCR_BI0 FOR CURRSTORDAYSACCR ACTIVE BEFORE INSERT POSITION 0 AS begin if ((New.ID is Null) or (New.ID=0)) then New.ID = Gen_ID(CurrStorDaysAcCr_ID,1); end ^ /* Trigger: CURRSTORDAYS_AD0 */ CREATE TRIGGER CURRSTORDAYS_AD0 FOR CURRSTORDAYS ACTIVE AFTER DELETE POSITION 0 AS declare variable NextDay Date; begin NextDay = Null; /* Select Min(Dat_) from CurrStorDays where AccnID=Old.AccnID and DAT_ > Old.DAT_ into :NextDay; if (:NextDay is not Null) then -- пересчитать следующий за текущим день Update CurrStorDays set cSumma=cSumma where AccnID=Old.AccnID and DAT_ = :NextDay; */ end ^ /* Trigger: CURRSTORDAYS_AI0 */ CREATE TRIGGER CURRSTORDAYS_AI0 FOR CURRSTORDAYS ACTIVE AFTER INSERT POSITION 0 AS begin if (New.OperID is not Null and New.OperID<>0) then Execute procedure CurrStorDays_GenAccnRec(New.ID); end ^ /* Trigger: CURRSTORDAYS_AU0 */ CREATE TRIGGER CURRSTORDAYS_AU0 FOR CURRSTORDAYS ACTIVE AFTER UPDATE POSITION 0 AS declare variable DayID integer; declare variable bCurs double precision; declare variable eCurs double precision; declare variable cDt double precision; declare variable cKt double precision; declare variable Summ double precision; declare variable cSumma double precision; declare variable Dat_ Date; begin if ((New.cSumma <> Old.cSumma) or (New.Curs <> OLd.Curs)) then begin cSumma = New.cSumma; bCurs = New.Curs; /* корректируем остаток и курсовую разницу следующего дня */ Select Min(DAT_) from CurrStorDays where AccnID=New.AccnID and DAT_ > New.DAT_ into :Dat_; if (:Dat_ is Not Null) then Select ID, Curs from CurrStorDays where AccnID=New.AccnID and Dat_ = :Dat_ into :DayID, :eCurs; if (:DayID is not Null) then begin /* приход */ Select Sum(cSumma) from CurrStor where DayID=:DayID and Typ=1 into :cDt; if (:cDt is Null) then cDt = 0.0; /* расход */ Select Sum(cSumma) from CurrStor where DayID=:DayID and Typ=2 into :cKt; if (:cKt is Null) then cKt = 0.0; Summ = :cSumma * (:eCurs-:bCurs); /* курсовая разница */ cSumma = :cSumma + :cDt - :cKt; /* остаток */ Update CurrStorDays set cSumma=:cSumma, Summ = :Summ where ID=:DayID; end end Execute Procedure CurrStorDays_GenAccnRec(New.ID); end ^ /* Trigger: CURRSTORDAYS_BD0 */ CREATE TRIGGER CURRSTORDAYS_BD0 FOR CURRSTORDAYS ACTIVE BEFORE DELETE POSITION 0 AS declare variable CrID integer; declare variable AccnID integer; begin for Select ID, AccnID from CurrStorDaysAcCr where DayID=Old.ID into :CrID, :AccnID do begin Delete from AccnProv where ID=:AccnID; Delete from CurrStorDaysAcCr where ID=:CrID; end end ^ /* Trigger: CURRSTORDAYS_BI0 */ CREATE TRIGGER CURRSTORDAYS_BI0 FOR CURRSTORDAYS ACTIVE BEFORE INSERT POSITION 0 AS declare variable CurrTyp integer; declare variable PrevDay TimeStamp; declare variable PrevCurs double precision; declare variable PrevSumma double precision; declare variable DayID Integer; declare variable OperID Integer; declare variable OurOrgnID integer; begin select CurrTyp from OrgnBankAccn where ID=New.AccnID into :CurrTyp; Select Val from Currency_GetValue(:CurrTyp, New.DAT_) into New.Curs; Select Max(DAT_) from CurrStorDays where AccnID=New.AccnID and DAT_ < New.DAT_ into :PrevDay; if (:PrevDay is Null) then begin New.cSumma = 0.0; New.Summa = 0.0; New.Summ = 0.0; end else begin Select ID, cSumma, Curs from CurrStorDays where AccnID=New.AccnID and DAT_=:PrevDay into DayID, New.cSumma, :PrevCurs; New.Summa = Cast((New.cSumma * New.Curs)*100.00 as Integer)/100.00; PrevSumma = Cast((New.cSumma * :PrevCurs)*100.00 as Integer)/100.00; New.Summ = Cast(New.cSumma*(New.Curs-:PrevCurs)*100.00 as integer)/100.00; end if (New.OperID is Null) then begin Select OrgnID from OrgnBankAccn where ID=New.AccnID into :OurOrgnID; Select Cast(VAL as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='DefOperCode_CurrSumm' into :OperID; select ID from AcOprLst where ID=:OperID into New.OperID; end end ^ /* Trigger: CURRSTORDAYS_BU0 */ CREATE TRIGGER CURRSTORDAYS_BU0 FOR CURRSTORDAYS ACTIVE BEFORE UPDATE POSITION 0 AS declare variable PrevDay Date; declare variable PrevCurs double precision; declare variable DayID Integer; declare variable cDt Double Precision; declare variable cKt Double Precision; declare variable AccnID integer; declare variable CrID integer; begin Select Max(DAT_) from CurrStorDays where AccnID=New.AccnID and DAT_ < New.DAT_ into :PrevDay; if (:PrevDay is Null) then begin New.cSumma = 0.0; New.Summ = 0.0; Select Sum(cSumma) from CurrStor where DayID=New.ID and Typ=1 into :cDt; Select Sum(cSumma) from CurrStor where DayID=New.ID and Typ=2 into :cKt; if (:cDt is Null) then cDt = 0.0; if (:cKt is Null) then cKt = 0.0; New.cSumma = :cDt - :cKt; New.Summa = Cast((New.cSumma * New.Curs)*100.00 as Integer) / 100.00; end else begin Select ID, cSumma, Curs from CurrStorDays where AccnID=New.AccnID and DAT_=:PrevDay into DayID, New.cSumma, :PrevCurs; New.Summ = (Cast(New.cSumma*New.Curs *100.00 as Integer) / 100.00) - (Cast(New.cSumma*:PrevCurs*100.00 as Integer) / 100.00); Select Sum(cSumma) from CurrStor where DayID=New.ID and Typ=1 into :cDt; Select Sum(cSumma) from CurrStor where DayID=New.ID and Typ=2 into :cKt; if (:cDt is Null) then cDt = 0.0; if (:cKt is Null) then cKt = 0.0; New.cSumma = New.cSumma + :cDt - :cKt; New.Summa = Cast((New.cSumma * New.Curs)*100.00 as Integer) / 100.00; end for Select ID, AccnID from CurrStorDaysAcCr where DayID=Old.ID into :CrID, :AccnID do begin Delete from AccnProv where ID=:AccnID; Delete from CurrStorDaysAcCr where ID=:CrID; end end ^ /* Trigger: CURRSTORDTKT_BD0 */ CREATE TRIGGER CURRSTORDTKT_BD0 FOR CURRSTORDTKT ACTIVE BEFORE DELETE POSITION 0 AS declare variable CSID integer; begin Select ID from CSDTKT where ID=OLd.CSMID into :CSID; if (:CSID is not null) then Update CSDTKT set ECSUMMA = ECSUMMA - Old.CSUMMA, UserName=Old.UserName where ID=Old.CSMID; end ^ /* Trigger: CURRSTORDTKT_BI0 */ CREATE TRIGGER CURRSTORDTKT_BI0 FOR CURRSTORDTKT ACTIVE BEFORE INSERT POSITION 0 AS declare variable xDate Date; declare variable CSID integer; begin Select xDate from F_Quarter_End(New.DAT_) into :xDate; New.EDATE = :xDate; Execute procedure CSDTKT_NEWQUARTER New.OurOrgnID, New.EDATE, New.UserName; Select ID from CSDTKT where OurOrgnID=New.OurOrgnID and DAT_=New.EDate and CurrTyp=New.CurrTyp and NameID=New.NameID and OrgnInfoID=New.OrgnInfoID and CSDTKTHBID=New.CSDTKTHBID into :CSID; if (:CSID is Null) then begin CSID = Gen_ID(CSDTKT_ID, 1); Insert into CSDTKT(ID, OurOrgnID, DAT_, NameID, CurrTyp, BCSUMMA, ECSUMMA, UserName, OrgnInfoID, CSDTKTHBID) Values(:CSID, New.OurOrgnID, :xDate, New.NameID, New.CurrTyp, 0.0, New.CSUMMA, New.UserName, New.OrgnInfoID, New.CSDTKTHBID); New.CSMID = :CSID; end else begin New.CSMID = :CSID; Update CSDTKT set ECSUMMA = ECSUMMA + New.CSUMMA, UserName=New.UserName where ID=:CSID; end end ^ /* Trigger: CURRSTORDTKT_BU0 */ CREATE TRIGGER CURRSTORDTKT_BU0 FOR CURRSTORDTKT ACTIVE BEFORE UPDATE POSITION 0 AS declare variable xDate Date; declare variable csDate Date; declare variable csNameID integer; declare variable csCurrTyp integer; declare variable csOrgnInfoID integer; declare variable csCSDTKTHBID integer; begin New.LastEdit = Current_TimeStamp; if ((New.DAT_ <> Old.DAT_) or (New.NameID <> Old.NameID) or (New.CurrTyp<>Old.CurrTyp) or (New.CSUMMA<>OLd.CSUMMA)) then begin /* конец квартала */ Select xDate from F_Quarter_End(New.DAT_) into :xDate; New.EDate = :xDate; /* задолженность */ Select DAT_, NameID, CurrTyp, OrgnInfoID, CSDTKTHBID from CSDTKT where ID=Old.CSMID into :csDate, :csNameID, :csCurrTyp, :csOrgnInfoID, :csCSDTKTHBID; if ((:xDate<>:csDate) or (New.NameID<>:csNameID) or (New.CurrTyp<>:csCurrTyp) or (New.OrgnInfoID<>:csOrgnInfoID) or (New.CSDTKTHBID<>:csCSDTKTHBID)) then begin /* изменилось: квартал, контрагент, валюта, категория, контракт */ Update CSDTKT set ECSUMMA=ECSUMMA-Old.CSUMMA, UserName=New.UserName where ID=Old.CSMID; New.CSMID=Null; end if (New.CSMID is Null) then begin Select ID from CSDTKT where OurOrgnID=OLd.OurOrgnID and DAT_=:xDate and CurrTyp=New.CurrTyp and NameID=New.NameID and OrgnInfoID=New.OrgnInfoID and CSDTKTHBID=New.CSDTKTHBID into New.CSMID; if (New.CSMID is Null) then begin New.CSMID = Gen_ID(CSDTKT_ID, 1); Insert into CSDTKT(ID, OurOrgnID, DAT_, NameID, CurrTyp, BCSUMMA, ECSUMMA, UserName, OrgnInfoID, CSDTKTHBID) Values(New.CSMID, New.OurOrgnID, :xDate, New.NameID, New.CurrTyp, 0.0, New.CSUMMA, New.UserName, New.OrgnInfoID, New.CSDTKTHBID); end else begin Update CSDTKT set ECSUMMA=ECSUMMA+New.CSUMMA, UserName=New.UserName where ID=OLd.CSMID; end end else begin Update CSDTKT set ECSUMMA=ECSUMMA-Old.CSUMMA+New.CSUMMA, UserName=New.UserName where New.CSUMMA<>Old.CSUMMA and ID=OLd.CSMID; end end end ^ /* Trigger: CURRSTOR_AD */ CREATE TRIGGER CURRSTOR_AD FOR CURRSTOR ACTIVE AFTER DELETE POSITION 0 as begin update CurrStorDays set cSumma=cSumma where ID=Old.DayID; end ^ /* Trigger: CURRSTOR_AI0 */ CREATE TRIGGER CURRSTOR_AI0 FOR CURRSTOR ACTIVE AFTER INSERT POSITION 0 AS begin -- корректируем остаток за текущий день if (New.Typ = 1) then Update CurrStorDays Set cSumma = cSumma + New.cSumma where ID=New.DayID; if (New.Typ = 2) then Update CurrStorDays Set cSumma = cSumma - New.cSumma where ID=New.DayID; end ^ /* Trigger: CURRSTOR_BI0 */ CREATE TRIGGER CURRSTOR_BI0 FOR CURRSTOR ACTIVE BEFORE INSERT POSITION 0 AS declare variable CurrStorDaysID integer; begin if (New.ID is Null) then New.ID = Gen_ID(CurrStor_ID,1); New.Summa = Cast(New.cSumma * New.Curs*100 as Integer)/100; select ID from CurrStorDays where DAT_ = New.DAT_ and AccnID=New.AccnID into :CurrStorDaysID; if (:CurrStorDaysID is Null) then begin CurrStorDaysID = Gen_ID(CurrStorDays_ID,1); insert into CurrStorDays(ID, AccnID, DAT_) Values(:CurrStorDaysID, New.AccnID, New.DAT_); end New.DayID = :CurrStorDaysID; end ^ /* Trigger: CURRSTOR_BU0 */ CREATE TRIGGER CURRSTOR_BU0 FOR CURRSTOR ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; New.Summa = Cast(New.cSumma * New.Curs*100 as Integer)/100; end ^ /* Trigger: CURRTYP_BI0 */ CREATE TRIGGER CURRTYP_BI0 FOR CURRTYP ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(CurrTyp_ID, 1); end ^ /* Trigger: CURRTYP_BU0 */ CREATE TRIGGER CURRTYP_BU0 FOR CURRTYP ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DGDTACCN_ACCN */ CREATE TRIGGER DGDTACCN_ACCN FOR DGDTACCN ACTIVE AFTER DELETE POSITION 0 as begin delete from accnprov where accnprov.id=old.accnkey; end ^ /* Trigger: DGDTACCN_BI0 */ CREATE TRIGGER DGDTACCN_BI0 FOR DGDTACCN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DgDtAccn_ID, 1); end ^ /* Trigger: DGKTACCN_ACCN */ CREATE TRIGGER DGKTACCN_ACCN FOR DGKTACCN ACTIVE AFTER DELETE POSITION 0 as begin delete from accnprov where accnprov.id=old.accnkey; end ^ /* Trigger: DGKUACCN_BI0 */ CREATE TRIGGER DGKUACCN_BI0 FOR DGKUACCN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DgKuAccn_ID, 1); end ^ /* Trigger: DGVDTKT_LOG_AD */ CREATE TRIGGER DGVDTKT_LOG_AD FOR DGVDTKT_LOG ACTIVE AFTER DELETE POSITION 0 as declare variable No_Valid integer; declare variable DgvKtID integer; declare variable DgvDtID integer; begin if (Old.GddKtID is not Null) then begin Select DgvKey from GddKt where ID=Old.GddKtID into :DgvKtID; if (Exists (Select L.ID from GddKt K join DgvDtKt_Log L on L.GddKtID=K.ID where K.DgvKey=:DgvKtID)) then begin -- есть корректирующие позиции No_Valid = 1; end else begin -- нет корректирующих позиций No_Valid = 0; Update DgvKt set No_Valid=:No_Valid, No_LastEdit=1 where ID=:DgvKtID; end end if (Old.GddDtID is not Null) then begin Select DgvKey from GddDt where ID=Old.GddDtID into :DgvDtID; if (Exists (Select L.ID from GddDt D join DgvDtKt_Log L on L.GddDtID=D.ID where D.DgvKey=:DgvDtID)) then begin -- есть корректирующие позиции No_Valid = 1; end else begin -- нет корректирующих позиций No_Valid = 0; Update DgvDt set No_Valid=:No_Valid, No_LastEdit=1 where ID=:DgvDtID; end end end ^ /* Trigger: DGVDTKT_LOG_AI */ CREATE TRIGGER DGVDTKT_LOG_AI FOR DGVDTKT_LOG ACTIVE AFTER INSERT POSITION 0 as declare variable DgvID integer; begin if (New.GddKtID is not Null) then begin select DgvKey from GddKt where ID=New.GddKtID into :DgvID; update DgvKt set No_Valid=1, No_LastEdit=1 where ID=:DgvID; end if (New.GddDtID is not Null) then begin select DgvKey from GddDt where ID=New.GddDtID into :DgvID; update DgvDt set No_Valid=1, No_LastEdit=1 where ID=:DgvID; end end ^ /* Trigger: DGVDTKT_LOG_BI */ CREATE TRIGGER DGVDTKT_LOG_BI FOR DGVDTKT_LOG ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(DgvDtKt_Log_ID, 1); end ^ /* Trigger: DGVDTUD_AFTER_INSERT */ CREATE TRIGGER DGVDTUD_AFTER_INSERT FOR DGVDTUD ACTIVE AFTER INSERT POSITION 0 as Declare Variable Proc Double Precision; Declare Variable Priority integer; Declare Variable NID integer; begin for Select ID, Proc, Priority from HBDTNL where TYP=1 into :NID, :Proc, :Priority do begin Insert into GddDtUNL (ID, DgvID, DTNLID, Proc, Priority) Values(Gen_ID(GddDtUNL_ID,1),New.ID,:NID,:Proc,:Priority); end end ^ /* Trigger: DGVDTUD_BEFORE_INSERT */ CREATE TRIGGER DGVDTUD_BEFORE_INSERT FOR DGVDTUD ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(DgvDtUD_ID, 1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: DGVDTUD_BEFORE_UPDATE */ CREATE TRIGGER DGVDTUD_BEFORE_UPDATE FOR DGVDTUD ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DGVDTU_AD0 */ CREATE TRIGGER DGVDTU_AD0 FOR DGVDTU ACTIVE AFTER DELETE POSITION 0 AS begin if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: DGVDTU_AFTER_INSERT */ CREATE TRIGGER DGVDTU_AFTER_INSERT FOR DGVDTU ACTIVE AFTER INSERT POSITION 0 as begin if (new.OperID is not null and New.OperID <> 0) then Execute Procedure DgvDtU_GenAccnRec New.ID; end ^ /* Trigger: DGVDTU_AFTER_UPDATE */ CREATE TRIGGER DGVDTU_AFTER_UPDATE FOR DGVDTU ACTIVE AFTER UPDATE POSITION 0 as begin Execute Procedure DgvDtU_DelAccnRec Old.ID; if (new.OperID is not null and New.OperID <> 0) then Execute Procedure DgvDtU_GenAccnRec New.ID; end ^ /* Trigger: DGVDTU_AU0_BDG */ CREATE TRIGGER DGVDTU_AU0_BDG FOR DGVDTU ACTIVE AFTER UPDATE POSITION 1 AS declare variable updflag integer; begin updflag = 0; if ((New.DAT_ <> Old.DAT_) or (New.DAT_ is Null and Old.DAT_ is not Null) or (New.DAT_ is not Null and Old.DAT_ is Null) ) then updflag = 1; if ((New.Out_Date <> Old.Out_Date) or (New.Out_Date is Null and Old.Out_Date is not null) or (New.Out_Date is not Null and Old.Out_Date is null) ) then updflag = 1; if (CoalEsce(New.Nbr,'') <> CoalEsce(Old.Nbr,'')) then updflag = 1; if (CoalEsce(New.Summa,0) <> CoalEsce(Old.Summa,0)) then updflag = 1; if (CoalEsce(New.CSumma,0) <> CoalEsce(Old.CSumma,0)) then updflag = 1; if (CoalEsce(New.Curs,0) <> CoalEsce(Old.Curs,0)) then updflag = 1; if (CoalEsce(New.CurrTyp,0) <> CoalEsce(Old.CurrTyp,0)) then updflag = 1; if (CoalEsce(New.NameID,0) <> CoalEsce(Old.NameID,0)) then updflag = 1; if (CoalEsce(New.Comment,'') <> CoalEsce(Old.Comment,'')) then updflag = 1; if (CoalEsce(New.OrgnInfoID,0) <> CoalEsce(Old.OrgnInfoID,0)) then updflag = 1; update obj_class set bdg_state = 3 where :updflag=1 and id = new.objid and bdg_state in (1, 4); end ^ /* Trigger: DGVDTU_BEFORE_DELETE */ CREATE TRIGGER DGVDTU_BEFORE_DELETE FOR DGVDTU ACTIVE BEFORE DELETE POSITION 0 as begin Execute Procedure DgvDtU_DelAccnRec Old.ID; end ^ /* Trigger: DGVDTU_BEFORE_INSERT */ CREATE TRIGGER DGVDTU_BEFORE_INSERT FOR DGVDTU ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(DgvDtU_ID,1); if (New.NBR is Null or New.NBR = '') then New.NBR = New.ID; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 193); end end ^ /* Trigger: DGVDTU_BEFORE_UPDATE */ CREATE TRIGGER DGVDTU_BEFORE_UPDATE FOR DGVDTU ACTIVE BEFORE UPDATE POSITION 0 AS Declare Variable Eps Double Precision; Declare Variable nlbSumma Double Precision; Declare Variable Priority Integer; Declare Variable sPriority Integer; Declare Variable Proc Double Precision; begin New.LastEdit = Current_TimeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 193); end Select CoalEsce(Sum(Quant*Price), 0.0) from GddDtU where DgvKey=New.ID into New.bSumma; New.Summa=New.bSumma; if (New.CurrTyp is not Null) then Select Sum(Quant*cPrice) from GddDtU where DgvKey=New.ID into New.cSumma; nlbSumma=New.bSumma; sPriority = 0; for Select Priority, Proc from GDDDTUNL where DgvID=New.DgvID order by Priority into :Priority, :Proc do begin if(Priority <> sPriority) then begin nlbSumma = New.Summa; sPriority = :Priority; end New.Summa = New.Summa + nlbSumma / 100.00 * :Proc; if (New.CurrTyp is not Null and New.Curs <> 0.0) then New.cSumma = New.Summa / New.Curs; end if (New.CurrTyp is not Null and New.SCSumma = 0.0) then New.SaleSumma = 0.0; if (New.Summa<>OLd.Summa or New.SaleSumma<>Old.SaleSumma) then begin if (New.CurrTyp is Null) then begin eps = new.salesumma-new.summa; end else begin Eps = New.SCSumma-New.CSumma; end if (Abs(:Eps) <= 0.005 or Eps > 0.0) then begin select max(S.Dat_) from SaleDuCr Cr, Sale S where (Cr.DgvKey=New.ID) and (S.ID=Cr.SaleKey) into new.saledate; end else New.SaleDate = Null; end if (New.No_LastEdit = 1) then begin if (Old.LastEdit is not Null) then New.LastEdit = Old.LastEdit; if (CoalEsce(Old.UserName,'')<>'') then New.UserName = Old.UserName; end if (New.No_LastEdit is Null or New.No_LastEdit <> 0) then New.No_LastEdit = 0; end ^ /* Trigger: DGVDT_AD0 */ CREATE TRIGGER DGVDT_AD0 FOR DGVDT ACTIVE AFTER DELETE POSITION 0 AS declare variable SlSumma double precision; begin if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; if (Old.SZID is not Null) then begin Update StorZakazDt set State = 0 where ID = Old.SZID and not Exists (Select ID from DgvDt where SZID = Old.SZID) and State > 0; Execute Procedure StorZakazDt_slSumma(Old.SZID) returning_values (:SlSumma); end end ^ /* Trigger: DGVDT_AFTER_UPDATE */ CREATE TRIGGER DGVDT_AFTER_UPDATE FOR DGVDT ACTIVE AFTER UPDATE POSITION 0 AS declare variable DgvID integer; begin if(((New.TYP=1) or (New.TYP=7)) and New.Out_Date is not null) then begin Update dgvkt Set Dat_=New.Out_Date, Nbr=New.Nbr, Comment=New.Comment, PrsnID=New.PrsnID, NameID=New.NameID, ZID=New.ZID where ID=New.DgvKey; end if (New.Typ = 10) then begin if (New.Out_Date != Old.Out_Date or (New.Out_Date is Null and Old.Out_Date is not Null) or (New.Out_Date is not Null and Old.Out_Date is Null)) then select DgvID from DgvDt_CRecalc(New.ID) into :DgvID; end execute procedure dgvdt_delaccnrec OLd.ID; if (New.OperID is not Null) then execute procedure dgvdt_genaccnrec New.ID; /* формирование списка основных средств */ if (New.Typ=2) then Execute Procedure DgvDt_GenMainMean(New.ID); if (BIN_AND(Old.State, 0x01)=0 AND BIN_AND(New.State, 0x01) <> 0 ) then begin -- установлен признак: чек напечатан update sc_remo Set Date_Out=Current_TimeStamp where DgvKey=New.ID; end end ^ /* Trigger: DGVDT_AI0 */ CREATE TRIGGER DGVDT_AI0 FOR DGVDT ACTIVE AFTER INSERT POSITION 0 AS begin if (New.Typ = 0 and New.Out_Date is Null and New.Manager is not Null) then begin -- Execute Procedure DgvDt_ReservLog(New.ID, Current_TimeStamp, Null); end end ^ /* Trigger: DGVDT_AU0_BDG */ CREATE TRIGGER DGVDT_AU0_BDG FOR DGVDT ACTIVE AFTER UPDATE POSITION 1 AS declare variable updflag integer; begin updflag = 0; if ((New.DAT_ <> Old.DAT_) or (New.DAT_ is Null and Old.DAT_ is not Null) or (New.DAT_ is not Null and Old.DAT_ is Null) ) then updflag = 1; if ((New.Out_Date <> Old.Out_Date) or (New.Out_Date is Null and Old.Out_Date is not null) or (New.Out_Date is not Null and Old.Out_Date is null) ) then updflag = 1; if (CoalEsce(New.Nbr,'') <> CoalEsce(Old.Nbr,'')) then updflag = 1; if (CoalEsce(New.Summa,0) <> CoalEsce(Old.Summa,0)) then updflag = 1; if (CoalEsce(New.CSumma,0) <> CoalEsce(Old.CSumma,0)) then updflag = 1; if (CoalEsce(New.Curs,0) <> CoalEsce(Old.Curs,0)) then updflag = 1; if (CoalEsce(New.CurrTyp,0) <> CoalEsce(Old.CurrTyp,0)) then updflag = 1; if (CoalEsce(New.NameID,0) <> CoalEsce(Old.NameID,0)) then updflag = 1; if (CoalEsce(New.Stor,0) <> CoalEsce(Old.Stor,0)) then updflag = 1; if (CoalEsce(New.StorID,0) <> CoalEsce(Old.StorID,0)) then updflag = 1; if (CoalEsce(New.Comment,'') <> CoalEsce(Old.Comment,'')) then updflag = 1; if (CoalEsce(New.OrgnInfoID,0) <> CoalEsce(Old.OrgnInfoID,0)) then updflag = 1; update obj_class set bdg_state = 3 where :updflag=1 and id = new.objid and bdg_state in (1, 4); end ^ /* Trigger: DGVDT_BEFORE_DELETE */ CREATE TRIGGER DGVDT_BEFORE_DELETE FOR DGVDT ACTIVE BEFORE DELETE POSITION 0 AS begin if (Old.SaleKtID is not Null) then Delete From SaleKt Where ID = Old.SaleKtID; /* удаление приходных накладных */ if (Old.DgvKey is Not Null and Old.DgvKey <> 0) then begin if (OLd.Typ = 1) then begin /* внутренняя передача */ Delete from DgvKt where ID=Old.DgvKey and Typ=1; end if (Old.Typ = 7) then begin /* переоценка товара */ Delete from DgvKt where ID=Old.DgvKey and Typ=3; end end /* удаление проводок */ execute procedure dgvdt_delaccnrec old.ID; /* услуги в расходной накладной */ Delete From gdddtddu where DgvKey=Old.ID; /* товары в расходной накладной */ Delete from GddDt where DgvKey=Old.ID; end ^ /* Trigger: DGVDT_BEFORE_UPDATE */ CREATE TRIGGER DGVDT_BEFORE_UPDATE FOR DGVDT ACTIVE BEFORE UPDATE POSITION 0 AS declare variable salesumma double precision; declare variable eps double precision; Declare Variable uSumma Double Precision; Declare Variable SCSUMMA Double Precision; Declare Variable CSumma Double Precision; declare variable uCSumma Double precision; declare variable DgvKey Integer; declare variable SaleKtID integer; declare variable SlKtID integer; declare variable ObjID integer; declare variable Out_Date TimeStamp; declare variable GoodsOutBeforeInp integer; declare variable OurOrgnID integer; declare variable NID integer; BEGIN New.LastEdit = Current_TimeStamp; if (New.RealTyp is Null) then New.RealTyp = 0; if (New.NdsTyp is Null) then New.NdsTyp = 1; if (New.ProcNds is Null) then New.ProcNds = 20.00; if (New.NameID=0) then New.NameID = Null; if (New.SNameID=0) then New.SNameID = Null; -- номер расходной накладной if ((New.Typ in (0, 11)) and (New.RNbr is Null or New.RNbr = '') and New.Out_Date is not Null and Old.Out_Date is Null) then begin Select OurOrgnID from StorList where ID = New.Stor into :OurOrgnID; Select ID from Nbr_Gen_Nbr('Nbr_DgvDt_RNbr', :OurOrgnID) into :NID; if (:NID > 0) then New.RNbr = :NID; end if (New.ObjID is Null) then begin ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(:ObjID, 199); New.ObjID = :ObjID; end if ((New.StorOut = 1 and (Old.StorOut = 0 or Old.StorOut is Null)) or (New.StorOut = 0 and Old.StorOut = 1)) then begin if (New.KUserID is Null) then Select ID from UserList where Name = New.UserName into New.KUserID; New.KLastEdit = Current_TimeStamp; end if (New.Typ = 11) then begin New.SaleSumma = 0.0; New.SaleDate = Null; end -- сумма накладной select sum(quant*price), Sum(Quant*TPrice) from gdddt where dgvkey=new.id into new.summa, :CSumma; if (new.summa is null) then new.summa=0.0; if (:CSumma is null) then CSumma=0.0; Select Sum(Quant*Price), Sum(Quant*TPrice) from gdddtddu where DgvKey=New.ID into :uSumma, :uCSumma; if(:uSumma is null) then uSumma=0.0; if(:uCSumma is null) then uCSumma=0.0; New.CSumma = :CSumma+:uCSumma; New.Summa = New.Summa+:uSumma; -- при простановке / изменении даты выдачи - она должна быть не раньше макс. даты прихода исходного товара if (New.Out_Date is not Null and (Old.Out_Date is Null or (New.Out_Date < Old.Out_Date))) then begin Select CoalEsce(SC.Val, 0) from StorList S left join SysConst_GetValue(S.OurOrgnID, 'GoodsOutBeforeInp') SC on 0=0 where S.ID = New.Stor into :GoodsOutBeforeInp; -- признак - разрешить выдачу рашьше прихода if (:GoodsOutBeforeInp <> 1) then begin -- проверить/исправить дату выдачи Select Max(KK.DAT_) from GddDt D join GddKt K on K.ID = D.GddKey join DgvKt KK on KK.ID = K.DgvKey where D.DgvKey = New.ID into :Out_Date; if (:Out_Date is not Null and :Out_Date > New.Out_Date) then New.Out_Date = :Out_Date; end end if (New.Typ = 0) then begin select sum(summa) from salecros where dgvkey=new.id into :salesumma; if (:SaleSumma is null or :SaleSumma < 0.0) then SaleSumma=0.0; new.SaleSumma=:SaleSumma; eps = new.salesumma-new.summa; if (:eps > 0.0 or Abs(:eps) < 0.005) then begin select max(S.Dat_) from salecros SC, sale S where (SC.DgvKey = New.ID) and (S.ID = SC.SaleKey) into New.SaleDate; end else New.SaleDate = null; end if (New.Typ = 10 or New.Typ = 0) then begin -- реализация / экспорт select sum(SC.CSumma), Sum(SC.Summa) from SaleCros SC, Sale S where SC.dgvkey=new.id and S.ID=SC.SaleKey into :SCSumma, :SaleSumma; if (:SCSumma is null or :SCSumma < 0.0) then SCSumma = 0.0; if (:SaleSumma is null or :SaleSumma < 0.0) then SaleSumma = 0.0; new.SCSumma=:SCSumma; New.SaleSumma = :SaleSumma; if (New.CurrTyp is not Null) then eps = New.SCSUMMA - New.CSumma; else Eps = New.SaleSumma - New.Summa; if (:eps > 0.0 or Abs(:eps) < 0.005) then begin select max(sale.dat_) from salecros, sale where (salecros.dgvkey = new.id) and (sale.id = salecros.salekey) into New.SaleDate; end else New.SaleDate = null; end if (New.Typ in(0, 10) and New.Summa=0.0) then New.SaleDate = New.Out_Date; if (New.Typ in (1, 2, 3, 4, 6, 7, 8, 9)) then begin -- не реализация if (New.Out_Date is Null) then begin New.SaleSumma = 0.0; New.SaleDate = Null; end else begin New.SaleSumma = New.Summa; New.SaleDate = New.Out_Date; end end -- Защита: запретить менять склад во внутр. передаче при проставленной дате выдачи if (New.Typ=1 and New.StorID <> Old.StorID) then begin if(Old.Out_Date is not null) then New.StorID = Old.StorID; end if (New.Typ in (1, 7)) then begin -- внутр. передача / переоценка -- Проставлена дата выдачи во внутр. передаче/переоценке - сформировать приходную накладную if ((NEW.OUT_DATE is not Null) and (OLD.OUT_DATE is null)) then begin execute procedure DgvDt_GenDgvKt (New.ID, New.StorID, New.Out_Date) returning_values :DgvKey; New.DgvKey = :DgvKey; end -- убрана дата выдачи во внутр. передаче/переоценке - удалить приходную накладную if ((NEW.OUT_DATE is Null) and (OLD.OUT_DATE is not null)) then begin delete from DgvKt where ID = Old.DgvKey; New.DgvKey = Null; end -- дата выдачи (передачи товара) должна быть не позже даты расхода товара со склада-получателя -- если оттуда уже выдавался товар if (Old.Out_Date is not Null and New.Out_Date is not Null and New.Out_Date <> Old.Out_Date) then begin Select Min(DD.Out_Date) from GddDt D -- позиции товара текущей накладной join GddKt K on K.GddKey = D.ID -- позиции товара в приходе от этой накладной (на складе-получателе) join GddDt D1 on D1.GddKey = K.ID -- позиции в расходе со склада получателя от текущей передачи join DgvDt DD on DD.ID = D1.DgvKey -- расходные накладные из текущего прихода where D.DgvKey = New.ID and DD.Out_Date is not Null into :Out_Date; if (:Out_Date is not Null and :Out_Date < New.Out_Date) then New.Out_Date = :Out_Date; end end if (new.saledate is null or new.out_date is null) then new.closed = 0; else new.closed = 1; if (New.Typ = 9) then begin -- Возврат Поставщику -- Создать "оплату" SlKtID = Null; Select ID from SaleKt where ID=Old.SaleKtID into :SlKtID; if ((Old.SaleKtID is null or :SlKtID is Null) and New.Out_Date is Not Null) then begin Select OurOrgnID from StorList where ID = New.Stor into :OurOrgnID; SaleKtID = Gen_ID(SaleKt_ID, 1); Insert into SaleKt (ID, OurOrgnID, Nbr, DAT_, SaleDate, Summa, NameID, Comment, UserName) Values(:SaleKtID, :OurOrgnID, New.Nbr, New.Out_Date, New.Out_Date, New.Summa, New.NameID, New.Comment, New.UserName); New.SaleKtID = :SaleKtID; end -- Удалить "оплату" if ((Old.SaleKtID is not null and :SlKtID is not Null) and New.Out_Date is Null) then begin Delete From SaleKt where ID = Old.SaleKtID; New.SaleKtID = Null; end -- Обновить "оплату" if ((Old.SaleKtID is not null and :SlKtID is not Null) and New.Out_Date is not Null) then begin Update SaleKt Set Nbr=New.Nbr, Dat_ = New.Out_Date, SaleDate=New.Out_Date, Summa=New.Summa, NameID=New.NameID, Comment=New.Comment, UserName=New.UserName where ID=Old.SaleKtID; end end -- дата реализации if (New.RealTyp = 0) then New.RealDate = New.Out_Date; if (New.RealTyp = 1) then begin if ((New.SaleDate is Null) or (New.out_date is Null)) then New.RealDate = null; else if(New.SaleDate > New.Out_Date) then New.RealDate = New.SaleDate; else New.RealDate = New.Out_Date; end if (Old.Manager is Null and New.Manager is not Null) then begin update ReservLog set Manager = New.Manager where dgvkey = New.ID and Manager is Null; end if (Old.PrsnID is Null and New.PrsnID is not Null) then begin update ReservLog set PrsnID = New.PrsnID where dgvkey = New.ID and PrsnID is Null; end if (New.No_LastEdit = 1) then begin if (Old.LastEdit is not Null) then New.LastEdit = Old.LastEdit; if (CoalEsce(Old.UserName,'')<>'') then New.UserName = Old.UserName; end if (New.No_LastEdit is Null or New.No_LastEdit <> 0) then New.No_LastEdit = 0; end ^ /* Trigger: DGVDT_BI0 */ CREATE TRIGGER DGVDT_BI0 FOR DGVDT ACTIVE BEFORE INSERT POSITION 0 AS declare variable ObjID integer; declare variable OurOrgnID integer; declare variable NID integer; begin if (New.NameID=0) then New.NameID = Null; if (New.SNameID=0) then New.SNameID = Null; Select OurOrgnID from StorList where ID = New.Stor into :OurOrgnID; if (New.DAT_ is Null) then New.DAT_ = Current_Date; -- номер документа if (New.Nbr is Null or New.Nbr = '') then begin if (New.Typ in (0, 11)) then Select ID from Nbr_Gen_Nbr('Nbr_DgvDt_Nbr', :OurOrgnID) into :NID; else NID = -1; if (:NID > 0) then New.Nbr = :NID; else New.Nbr = New.ID; end -- номер расходной накладной if ((New.Typ in (0, 11)) and (New.RNbr is Null or New.RNbr = '') and New.Out_Date is not Null) then begin Select ID from Nbr_Gen_Nbr('Nbr_DgvDt_RNbr', :OurOrgnID) into :NID; if (:NID > 0) then New.RNbr = :NID; end if (New.Summa is Null) then New.Summa = 0.0; if (New.SaleSumma is Null) then New.SaleSumma = 0.0; if (New.RealTyp is Null) then New.RealTyp = 0; if (New.NdsTyp is Null) then New.NdsTyp = 1; if (New.Closed is Null) then New.Closed = 0; if (New.Subscribe is Null) then New.Subscribe = 0; if (New.StorOut is Null) then New.StorOut = 0; if (New.StorMod is Null) then New.StorMod = 0; if (New.StorOut = 1) then begin if (New.KUserID is Null) then Select ID from UserList where Name = New.UserName into New.KUserID; New.KLastEdit = Current_TimeStamp; end ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(:ObjID, 199); New.ObjID = :ObjID; if (New.SZID is not Null) then begin /* накладная из заказа */ if (New.OurAccnID is Null) then Select OurAccnID from StorZakazDt where ID = New.SZID into New.OurAccnID; if (New.AccnOrgID is Null) then Select OrgAccnID from StorZakazDt where ID = New.SZID into New.AccnOrgID; end end ^ /* Trigger: DGVDT_TASK_BI */ CREATE TRIGGER DGVDT_TASK_BI FOR DGVDT_TASK ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID=0 or New.ID is Null) then New.ID = Gen_ID(DgvDt_Task_ID, 1); end ^ /* Trigger: DGVDUGRP_BI0 */ CREATE TRIGGER DGVDUGRP_BI0 FOR DGVDUGRP ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DgvDuGrp_ID,1); end ^ /* Trigger: DGVDUGRP_BU0 */ CREATE TRIGGER DGVDUGRP_BU0 FOR DGVDUGRP ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DGVKTU_AD0 */ CREATE TRIGGER DGVKTU_AD0 FOR DGVKTU ACTIVE AFTER DELETE POSITION 0 AS begin if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: DGVKTU_AFTER_UPDATE */ CREATE TRIGGER DGVKTU_AFTER_UPDATE FOR DGVKTU ACTIVE AFTER UPDATE POSITION 0 as begin execute procedure dgvktu_delaccnrec New.ID; execute procedure dgvktu_genaccnrec New.ID; end ^ /* Trigger: DGVKTU_AU0_BDG */ CREATE TRIGGER DGVKTU_AU0_BDG FOR DGVKTU ACTIVE AFTER UPDATE POSITION 1 AS declare variable updflag integer; begin updflag = 0; if ((New.DAT_ <> Old.DAT_) or (New.DAT_ is Null and Old.DAT_ is not Null) or (New.DAT_ is not Null and Old.DAT_ is Null) ) then updflag = 1; if (CoalEsce(New.Nbr,'') <> CoalEsce(Old.Nbr,'')) then updflag = 1; if (CoalEsce(New.Summa,0) <> CoalEsce(Old.Summa,0)) then updflag = 1; if (CoalEsce(New.CSumma,0) <> CoalEsce(Old.CSumma,0)) then updflag = 1; if (CoalEsce(New.Curs,0) <> CoalEsce(Old.Curs,0)) then updflag = 1; if (CoalEsce(New.CurrTyp,0) <> CoalEsce(Old.CurrTyp,0)) then updflag = 1; if (CoalEsce(New.NameID,0) <> CoalEsce(Old.NameID,0)) then updflag = 1; if (CoalEsce(New.Comment,'') <> CoalEsce(Old.Comment,'')) then updflag = 1; if (CoalEsce(New.OrgnInfoID,0) <> CoalEsce(Old.OrgnInfoID,0)) then updflag = 1; update obj_class set bdg_state = 3 where :updflag=1 and id = new.objid and bdg_state in (1, 4); end ^ /* Trigger: DGVKTU_BEFORE_DELETE */ CREATE TRIGGER DGVKTU_BEFORE_DELETE FOR DGVKTU ACTIVE BEFORE DELETE POSITION 0 as begin execute procedure dgvktu_delaccnrec old.id; end ^ /* Trigger: DGVKTU_BEFORE_INSERT */ CREATE TRIGGER DGVKTU_BEFORE_INSERT FOR DGVKTU ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 192); end end ^ /* Trigger: DGVKTU_BEFORE_UPDATE */ CREATE TRIGGER DGVKTU_BEFORE_UPDATE FOR DGVKTU ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 192); end if(New.SCSumma is null) then New.SCSumma = 0.0; -- SaleDate if (New.cTyp = 0) then begin -- факт оплаты: нац. валюта if (New.SaleSumma <> Old.SaleSumma or New.Summa <> Old.Summa) then begin if ((Abs(New.SaleSumma-New.Summa) <= 0.005) or (New.SaleSumma > New.Summa) ) then Select Max(S.Dat_) from SaleKuCr SC, SaleKt S where SC.DgvKey = New.ID and S.ID = SC.SaleKey into New.SaleDate; else New.SaleDate = Null; end end if (New.cTyp = 1) then begin -- факт оплаты: иностр. валюта if (New.scSumma <> Old.scSumma or New.cSumma <> Old.cSumma) then begin -- exception Common_exception 'Оплата: ' || Cast(New.scSumma-New.cSumma as varchar(30)); if ((Abs(New.scSumma-New.cSumma) <= 0.005) or (New.scSumma > New.cSumma)) then begin Select Max(S.Dat_) from SaleKuCr SC, SaleKt S where SC.DgvKey = New.ID and S.ID = SC.SaleKey into New.SaleDate; end else New.SaleDate = Null; end end if (not exists(Select ID from SaleKuCr where DgvKey = New.ID)) then begin New.SaleSumma = 0.0; New.scSumma = 0.0; end if (New.No_LastEdit = 1) then begin if (Old.LastEdit is not Null) then New.LastEdit = Old.LastEdit; if (CoalEsce(Old.UserName,'')<>'') then New.UserName = Old.UserName; end if (New.No_LastEdit is Null or New.No_LastEdit <> 0) then New.No_LastEdit = 0; end ^ /* Trigger: DGVKTU_DGVDT_REF_BI */ CREATE TRIGGER DGVKTU_DGVDT_REF_BI FOR DGVKTU_DGVDT_REF ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID = 0) then New.ID = Gen_ID(DgvKtU_DgvDt_Ref_ID, 1); end ^ /* Trigger: DGVKT_AD1 */ CREATE TRIGGER DGVKT_AD1 FOR DGVKT ACTIVE AFTER DELETE POSITION 1 AS begin if (Old.Typ=5 and Old.CurrTyp is not Null and Old.CSDTKTHBID is not Null and Old.OrgnInfoID is not Null) then begin Delete from CurrStorDtKt where DocTyp=4 and DocID = Old.ID; end end ^ /* Trigger: DGVKT_AFTER_DELETE */ CREATE TRIGGER DGVKT_AFTER_DELETE FOR DGVKT ACTIVE AFTER DELETE POSITION 0 AS begin if (old.typ=2) then begin /* возврат товара Заказчиком */ /* поменять ссылку */ update dgvdt set dgvkey= (select Min(id) from dgvkt where dgvkey=old.dgvkey) where id=old.dgvkey; end if (Old.Typ=4) then begin /* оприходование изделий в заказе */ /* отменить списание материалов */ Delete from DgvDt where ID = OLd.DgvKey and ZID=Old.ZID and Typ = 8; end if (Old.Typ=4 and Old.ZID is not Null) then begin Update WorkZakaz set bDate = (Select Min(KK.DAT_) from DgvKt KK where KK.ZID=Old.ZID and KK.Typ=4) where ID=Old.ZID; Update WorkZakaz set eDate = (Select Max(KK.DAT_) from DgvKt KK where KK.ZID=Old.ZID and KK.Typ=4) where ID=Old.ZID and ZTrash=1; end if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: DGVKT_AFTER_UPDATE */ CREATE TRIGGER DGVKT_AFTER_UPDATE FOR DGVKT ACTIVE AFTER UPDATE POSITION 0 as declare variable ID Integer; declare variable MinDate TimeStamp; declare variable MaxDate TimeStamp; begin if (New.Stor <> Old.Stor) then begin for Select ID from GddKt where DgvKey=New.ID and Quant <> 0 into :ID do Update GddKtQnt set Stor=New.Stor where ID = :ID; end Execute Procedure Dgvkt_DelAccnRec New.ID; if (new.OperID is not Null) then Execute Procedure DgvKt_GenAccnRec New.ID; if ((New.Typ=4) and (New.ZID is not Null) and (New.DAT_ <> Old.DAT_)) then begin Select Min(KK.DAT_), Max(KK.DAT_) from DgvKt KK where KK.ZID=New.ZID and KK.Typ=4 into :MinDate, :MaxDate; Update WorkZakaz set bDate = :MinDate where ID=New.ZID and (bDate <> :MinDate or bDate is Null); Update WorkZakaz set eDate = :MaxDate where ID=New.ZID and ZTrash=1 and (eDate <> :MaxDate or eDate is Null); end end ^ /* Trigger: DGVKT_AI0 */ CREATE TRIGGER DGVKT_AI0 FOR DGVKT ACTIVE AFTER INSERT POSITION 0 AS declare variable MinDate TimeStamp; begin if (New.Typ=4 and New.ZID is not Null) then begin Select Min(KK.DAT_) from DgvKt KK where KK.ZID=New.ZID and KK.Typ=4 into :MinDate; Update WorkZakaz set bDate = :MinDate where ID=New.ZID and (bDate <> :MinDate or bDate is Null); end end ^ /* Trigger: DGVKT_AI1 */ CREATE TRIGGER DGVKT_AI1 FOR DGVKT ACTIVE AFTER INSERT POSITION 1 AS declare variable CSID integer; declare variable OurOrgnID integer; begin /* задолженность в валюте */ if (New.Typ=5 and New.CurrTyp is not null and New.CSDTKTHBID is not Null and New.OrgnInfoID is not Null) then begin Select OurOrgnID from StorList where ID=New.Stor into :OurOrgnID; if (New.NameID <> :OurOrgnID) then begin CSID = Gen_ID(CurrStorDtKt_ID,1); insert into CurrStorDtKt(ID, OurOrgnID, DAT_, NameID, CurrTyp, Curs, CSUMMA, CSUMM, DocTyp, DocID, UserName, OrgnInfoID, CSDTKTHBID) Values(:CSID, :OurOrgnID, New.DAT_, New.NameID, New.CurrTyp, New.Curs, New.CSUMMA, New.CSUMMA, 4, New.ID, New.UserName, New.OrgnInfoID, New.CSDTKTHBID); end end end ^ /* Trigger: DGVKT_AU1 */ CREATE TRIGGER DGVKT_AU1 FOR DGVKT ACTIVE AFTER UPDATE POSITION 1 AS declare variable CSID integer; declare variable OurOrgnID integer; begin if (Old.Typ=5 and Old.CurrTyp is not Null and Old.CSDTKTHBID is not Null and Old.OrgnInfoID is not Null) then begin Select ID from CurrStorDtKt where DocTyp=4 and DocID = Old.ID into :CSID; end if ((New.Typ<>5) or (New.CurrTyp is Null) or (New.CSDTKTHBID is Null) or (New.OrgnInfoID is Null)) then begin if (:CSID is not Null) then Delete from CurrStorDtKt where ID = :CSID; end else begin if (:CSID is Null) then begin Select OurOrgnID from StorList where ID=New.Stor into :OurOrgnID; if (New.NameID <> :OurOrgnID) then begin CSID = Gen_ID(CurrStorDtKt_ID,1); insert into CurrStorDtKt(ID, OurOrgnID, DAT_, NameID, CurrTyp, Curs, CSUMMA, CSUMM, DocTyp, DocID, UserName, OrgnInfoID, CSDTKTHBID) Values(:CSID, :OurOrgnID, New.DAT_, New.NameID, New.CurrTyp, New.Curs, New.CSUMMA, New.CSUMMA, 4, New.ID, New.UserName, New.OrgnInfoID, New.CSDTKTHBID); end end else begin Update CurrStorDtKt Set DAT_=New.Dat_, NameID=New.NameID, CurrTyp=New.CurrTyp, Curs=New.Curs, CSUMMA=New.CSUMMA, CSUMM=New.CSUMMA, DocID=New.ID, UserName=New.UserName, OrgnInfoID=New.OrgnInfoID, CSDTKTHBID=New.CSDTKTHBID where ID=:CSID and ((Dat_ <> New.Dat_) or (NameID<>New.NameID) or (CurrTyp<>New.CurrTyp) or (Curs <> New.Curs) or (CSUMMA<>New.CSUMMA) or (DocID<>New.ID) or (OrgnInfoID<>New.OrgnInfoID) or (CSDTKTHBID<>New.CSDTKTHBID)); end end end ^ /* Trigger: DGVKT_AU2_BDG */ CREATE TRIGGER DGVKT_AU2_BDG FOR DGVKT ACTIVE AFTER UPDATE POSITION 2 AS declare variable updflag integer; begin updflag = 0; if ((New.DAT_ <> Old.DAT_) or (New.DAT_ IS Null and Old.DAT_ is not null) or (New.DAT_ is not Null and Old.DAT_ is null) ) then updflag = 1; if (CoalEsce(New.Nbr,'') <> CoalEsce(Old.Nbr,'')) then updflag = 1; if (CoalEsce(New.Summa,0) <> CoalEsce(Old.Summa,0)) then updflag = 1; if (CoalEsce(New.CSumma,0) <> CoalEsce(Old.CSumma,0)) then updflag = 1; if (CoalEsce(New.Curs,0) <> CoalEsce(Old.Curs,0)) then updflag = 1; if (CoalEsce(New.CurrTyp,0) <> CoalEsce(Old.CurrTyp,0)) then updflag = 1; if (CoalEsce(New.NameID,0) <> CoalEsce(Old.NameID,0)) then updflag = 1; if (CoalEsce(New.Stor,0) <> CoalEsce(Old.Stor,0)) then updflag = 1; if (CoalEsce(New.StorID,0) <> CoalEsce(Old.StorID,0)) then updflag = 1; if (CoalEsce(New.Comment,'') <> CoalEsce(Old.Comment,'')) then updflag = 1; if (CoalEsce(New.OrgnInfoID,0) <> CoalEsce(Old.OrgnInfoID,0)) then updflag = 1; update obj_class set bdg_state = 3 where :updflag=1 and id = new.objid and bdg_state in (1, 4); end ^ /* Trigger: DGVKT_BEFORE_DELETE */ CREATE TRIGGER DGVKT_BEFORE_DELETE FOR DGVKT ACTIVE BEFORE DELETE POSITION 0 AS Declare Variable ID integer; declare variable KID integer; begin ID=Old.ID; execute procedure dgvkt_delaccnrec :id; Delete From Sale Where ID=Old.SaleDtID; KID = Null; for Select K.ID from GddKt K, GddDt D where K.DgvKey=Old.ID and D.GddKey=K.ID into :KID do KID=:KID; if (:KID is Not Null) then exception DgvKt_QuantSource; if (Old.Typ=4 and Old.ZID is not null) then /* Оприходование изделий */ /* удаляем списание материалов и комплектующих по заказу */ Delete from DgvDt where ID=Old.DgvKey and ZID=Old.ZID and Typ=8; Delete from GddKtDDU where DgvKey = Old.ID; Delete From GddKt K where K.DgvKey=Old.ID; end ^ /* Trigger: DGVKT_BEFORE_UPDATE */ CREATE TRIGGER DGVKT_BEFORE_UPDATE FOR DGVKT ACTIVE BEFORE UPDATE POSITION 0 AS declare variable saledate Date; declare variable saledat Date; declare variable salesumma double precision; declare variable salesumm double precision; declare variable summ double precision; declare variable summa double precision; Declare Variable SaleDtID integer; Declare Variable rSumma Double Precision; Declare Variable cSumma Double Precision; declare variable SCSumma double precision; declare variable SCSumm double precision; declare variable CUSumm Double Precision; declare variable USumm Double Precision; declare variable OurOrgnID integer; declare variable Diff double precision; begin New.LastEdit = Current_TimeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 198); end if ((New.StorOut = 1 and (Old.StorOut = 0 or Old.StorOut is Null)) or (New.StorOut = 0 and Old.StorOut = 1)) then begin if (New.KUserID is Null) then Select ID from UserList where Name = New.UserName into New.KUserID; New.KLastEdit = Current_TimeStamp; end if ((New.Curs is null) or (New.Curs = 0.0)) then New.Curs = 1.0; if(New.SCSumma is null) then New.SCSumma = 0.0; -- Сумма в национальной валюте Summa = 0.0; USumm = 0.0; select CoalEsce(SUM(price * source), 0.0) from gddkt where dgvkey=new.id into :Summa; if(:Summa is null) then Summa = 0.0; if (New.Typ in (0, 5)) then begin USumm = 0.0; -- услуги включены в себестоимость товара end else begin Select CoalEsce(Sum(Quant*Price), 0.0) from gddktddu where DgvKey=New.ID into :USumm; end New.Summa = :Summa + :USumm; if(New.Summa is null) then New.Summa = 0.0; -- Сумма в иностранной валюте if(New.TYP = 5) then begin Select Sum(Source*TPrice) from GddKt where DgvKey=New.ID into :cSumma; If(:cSumma is null) then cSumma=0.0; Select Sum(U.Quant*U.TPrice) from gddktddu U where U.DgvKey=New.ID --and (U.OrgnID is null or U.OrgnID=New.NameID) into :CUSUMM; if (:CUSumm is null) then CUSumm = 0.0; New.cSumma = :cSumma + :CUSumm; end salesumma = 0.0; scsumma=0.0; saledate=null; for select s.dat_,sc.summa,sc.csumma from salektcr sc left join salekt s on s.id=sc.salekey where sc.dgvkey = New.ID into :saledat,:salesumm,:scsumm do begin if ((:saledate is null)or(:saledat>:saledate)) then saledate=:saledat; salesumma=:salesumma+:salesumm; SCSumma=:SCSumma+:SCSumm; end new.salesumma=:salesumma; if(:SCSUMMA is null) then SCSUMMA = 0.0; new.SCSumma = :SCSumma; new.saledate = :saledate; if (:salesumma < :summa) then new.saledate = null; if (New.TYP = 5 and New.SCSumma < New.CSumma) then New.SaleDate = Null; if (New.Typ = 5) then begin -- дата оплаты - импорт if ((Abs(New.SCSumma-New.CSumma) <= 0.005) or (New.SCSumma > New.CSumma)) then new.saledate = :saledate; else new.saledate = null; end else begin -- дата оплаты - не импорт if ((Abs(:salesumma - :summa) <= 0.005) or (:salesumma > :summa) ) then new.saledate = :saledate; else New.SaleDate = Null; end if (New.Typ=2) then begin /* DgvKtRetnType */ SaleDtID = Null; select ID from Sale where ID=New.SaleDtID into :SaleDtID; rSumma=0; For Select k.source*d.price from gddkt k, gdddt d where k.dgvkey=New.ID and d.ID=K.GddKey into :Summ do rSumma=:rSumma+:Summ; if(SaleDtID is Null) then begin /* Insert sale record (return goods) */ select OurOrgnID from StorList where ID = New.Stor into :OurOrgnID; SaleDtID = Gen_ID(Sale_ID, 1); New.SaleDtID = SaleDtID; insert Into Sale(ID, OurOrgnID, Dat_, Nbr, Summa, Summ, NameID, Comment, System_Flag, UserName) Values(:SaleDtID, :OurOrgnID, New.Dat_, New.Nbr, :rSumma, :rSumma, New.NameID, New.Comment, 2, New.UserName); end else begin /* update sale (return goods) */ Update Sale Set Dat_=New.Dat_, Summa=:rSumma, NameID=New.NameID, Nbr=New.Nbr, UserName=New.UserName where ID=:SaleDtID; end end if (New.TYP<>0 and New.TYP<>5) then begin New.SaleDate = New.DAT_; New.SaleSumma = New.Summa; /* automatic sell */ end if ((New.Typ=0 or New.Typ=5) and (New.Stor<>Old.Stor)) then begin -- не изменять склад, если уже началась выдача товара из этого документа if ( EXISTS (SELECT First 1 k.ID FROM GddKt k JOIN GddDt d ON d.GddKey=k.ID where (k.DgvKey=New.ID) ) ) then begin New.Stor=Old.Stor; end end if ( CoalEsce(New.V_DgvKtID,0) <> CoalEsce(Old.V_DgvKtID,0) or CoalEsce(New.V_DgvDtID,0) <> CoalEsce(Old.V_DgvDtID,0) ) then begin select No_Valid, Diff from DgvKt_LogCheckDelta(New.ID, New.V_DgvKtID, New.V_DgvDtID) into New.No_Valid, :Diff; -- exception common_exception 'No Valid: ' || new.no_valid || ' ID: ' || New.ID || ' Diff: ' || :Diff; end if (New.No_LastEdit = 1) then begin if (Old.LastEdit is not Null) then New.LastEdit = Old.LastEdit; if (CoalEsce(Old.UserName,'')<>'') then New.UserName = Old.UserName; end if (New.No_LastEdit is Null or New.No_LastEdit <> 0) then New.No_LastEdit = 0; end ^ /* Trigger: DGVKT_BI0 */ CREATE TRIGGER DGVKT_BI0 FOR DGVKT ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DgvKt_ID, 1); if (New.ProcNds is Null) then Select NdsProc from StorList where ID = New.Stor into New.ProcNds; if (New.DAT_ is Null) then New.DAT_ = Current_Date; if (New.Nbr is null or New.Nbr='') then New.Nbr = New.ID; if ((New.Curs is null) or (New.Curs = 0.0)) then New.Curs = 1.0; if (New.TrngTyp is Null) then New.TrngTyp = 0; if (New.Trns is Null) then New.Trns = 0.0; if (New.tamp is Null) then New.Tamp = 0.0; if (New.Tams is Null) then New.Tams = 0.0; if (New.SaleSumma is Null) then New.salesumma = 0.0; if (New.CSumma is Null) then New.CSumma = 0.0; if (New.StorOut is Null) then New.StorOut = 0; if (New.StorMod is Null) then New.StorMod = 0; if (New.StorOut = 1) then begin if (New.KUserID is Null) then Select ID from UserList where Name = New.UserName into New.KUserID; New.KLastEdit = Current_TimeStamp; end if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 198); end New.ZPosNo = 0; if (New.Typ=4 and New.ZID is not Null) then begin select CoalEsce(Max(KK.ZPosNo),0) + 1 from DgvKt KK where ZID=New.ZID and New.Typ=4 into New.ZPosNo; end end ^ /* Trigger: DGVWKG_BEFORE_DELETE */ CREATE TRIGGER DGVWKG_BEFORE_DELETE FOR DGVWKG ACTIVE BEFORE DELETE POSITION 0 AS begin Delete From WorkNkDg where DgvID=Old.ID; end ^ /* Trigger: DGVWKG_BU0 */ CREATE TRIGGER DGVWKG_BU0 FOR DGVWKG ACTIVE BEFORE UPDATE POSITION 0 as begin Update GddKt K Set K.ZNBR=New.Nbr where (K.DgvKey=New.DgvKtID) and ((K.ZNBR <> New.Nbr) or (K.ZNBR is null)); if (New.INP_DATE is Not Null and New.Out_Date <> New.Inp_Date) then begin New.Out_Date = New.Inp_Date; Update DgvDt set Out_Date = New.Inp_Date where ID=New.DgvDtID and Out_Date <> New.Inp_Date; end end ^ /* Trigger: DKBILLCOUNT_AD0 */ CREATE TRIGGER DKBILLCOUNT_AD0 FOR DKBILLCOUNT ACTIVE AFTER DELETE POSITION 0 AS begin if (Old.Cnt <> 0) then Update DkBill set CntSum = CntSum - Old.Cnt where ID = Old.BillID; end ^ /* Trigger: DKBILLCOUNT_AI0 */ CREATE TRIGGER DKBILLCOUNT_AI0 FOR DKBILLCOUNT ACTIVE AFTER INSERT POSITION 0 AS begin if (New.Cnt <> 0) then Update DkBill Set CntSum = CntSum + New.Cnt where ID = New.BillID; end ^ /* Trigger: DKBILLCOUNT_AU0 */ CREATE TRIGGER DKBILLCOUNT_AU0 FOR DKBILLCOUNT ACTIVE AFTER UPDATE POSITION 0 AS begin if (New.Cnt <> Old.Cnt) then Update DkBill set CntSum = CntSum - Old.Cnt + New.Cnt where ID = New.BillID; end ^ /* Trigger: DKBILLCOUNT_BI0 */ CREATE TRIGGER DKBILLCOUNT_BI0 FOR DKBILLCOUNT ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DkBillCount_ID, 1); end ^ /* Trigger: DKBILLCOUNT_BU0 */ CREATE TRIGGER DKBILLCOUNT_BU0 FOR DKBILLCOUNT ACTIVE BEFORE UPDATE POSITION 0 AS begin New.Cnt = New.CntEnd-New.CntBeg; end ^ /* Trigger: DKBILLGDS_BI0 */ CREATE TRIGGER DKBILLGDS_BI0 FOR DKBILLGDS ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DkBillGds_ID, 1); end ^ /* Trigger: DKBILLGDS_BU0 */ CREATE TRIGGER DKBILLGDS_BU0 FOR DKBILLGDS ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DKBILLPRSN_BI0 */ CREATE TRIGGER DKBILLPRSN_BI0 FOR DKBILLPRSN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DkBillPrsn_ID, 1); end ^ /* Trigger: DKBILL_BU0 */ CREATE TRIGGER DKBILL_BU0 FOR DKBILL ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DK_ACCESSCOMMANDUSERREF_BI0 */ CREATE TRIGGER DK_ACCESSCOMMANDUSERREF_BI0 FOR DK_ACCESSCOMMANDUSERREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_AccessCommandUserref_id, 1); end ^ /* Trigger: DK_ACCESSCOMMANDUSERREF_BU0 */ CREATE TRIGGER DK_ACCESSCOMMANDUSERREF_BU0 FOR DK_ACCESSCOMMANDUSERREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_ACCESSCOMMAND_BI0 */ CREATE TRIGGER DK_ACCESSCOMMAND_BI0 FOR DK_ACCESSCOMMAND ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_AccessCommand_id, 1); end ^ /* Trigger: DK_ACCESSCOMMAND_BU0 */ CREATE TRIGGER DK_ACCESSCOMMAND_BU0 FOR DK_ACCESSCOMMAND ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_ACCESSDATAUSERREF_BI0 */ CREATE TRIGGER DK_ACCESSDATAUSERREF_BI0 FOR DK_ACCESSDATAUSERREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_AccessDatauserref_id, 1); end ^ /* Trigger: DK_ACCESSDATAUSERREF_BU0 */ CREATE TRIGGER DK_ACCESSDATAUSERREF_BU0 FOR DK_ACCESSDATAUSERREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_ACCESSDATA_BI0 */ CREATE TRIGGER DK_ACCESSDATA_BI0 FOR DK_ACCESSDATA ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_AccessData_id, 1); end ^ /* Trigger: DK_ACCESSDATA_BU0 */ CREATE TRIGGER DK_ACCESSDATA_BU0 FOR DK_ACCESSDATA ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_BNS_BI0 */ CREATE TRIGGER DK_BNS_BI0 FOR DK_BNS ACTIVE BEFORE INSERT POSITION 0 AS begin if(New.ID is null or New.ID=0) then New.ID=Gen_ID(GEN_DK_BNS_ID, 1); end ^ /* Trigger: DK_BNS_ORGN_BI0 */ CREATE TRIGGER DK_BNS_ORGN_BI0 FOR DK_BNS_ORGN ACTIVE BEFORE INSERT POSITION 0 AS begin if(New.ID is null or New.ID=0) then New.ID=Gen_ID(GEN_DK_BNS_ORGN_ID, 1); end ^ /* Trigger: DK_BNS_ORGN_LOG_BI0 */ CREATE TRIGGER DK_BNS_ORGN_LOG_BI0 FOR DK_BNS_ORGN_LOG ACTIVE BEFORE INSERT POSITION 0 AS begin if(New.ID is null or New.ID=0) then New.ID=Gen_ID(GEN_DK_BNS_ORGN_LOG_ID, 1); end ^ /* Trigger: DK_BNS_PRICEGOODS_BI0 */ CREATE TRIGGER DK_BNS_PRICEGOODS_BI0 FOR DK_BNS_PRICEGOODS ACTIVE BEFORE INSERT POSITION 0 AS begin if(New.ID is null or New.ID=0) then New.ID=Gen_ID(GEN_DK_BNS_PRICEGOODS_ID, 1); end ^ /* Trigger: DK_BONUSACCRUAL_BI0 */ CREATE TRIGGER DK_BONUSACCRUAL_BI0 FOR DK_BONUSACCRUAL ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(dk_bonusAccrual_ID, 1); end ^ /* Trigger: DK_BONUSACCRUAL_BU0 */ CREATE TRIGGER DK_BONUSACCRUAL_BU0 FOR DK_BONUSACCRUAL ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DK_COMMAND_BI0 */ CREATE TRIGGER DK_COMMAND_BI0 FOR DK_COMMAND ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_Command_id, 1); end ^ /* Trigger: DK_COMMAND_BU0 */ CREATE TRIGGER DK_COMMAND_BU0 FOR DK_COMMAND ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_DATA_BI0 */ CREATE TRIGGER DK_DATA_BI0 FOR DK_DATA ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_Data_id, 1); end ^ /* Trigger: DK_DATA_BU0 */ CREATE TRIGGER DK_DATA_BU0 FOR DK_DATA ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_DISCOUNTBONUSSETGOODS_BI */ CREATE TRIGGER DK_DISCOUNTBONUSSETGOODS_BI FOR DK_DISCOUNTBONUSSETGOODS ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(gen_dk_discountbonussetgoods_id,1); end ^ /* Trigger: DK_DISCOUNTBONUSSETORGN_BI */ CREATE TRIGGER DK_DISCOUNTBONUSSETORGN_BI FOR DK_DISCOUNTBONUSSETORGN ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(gen_dk_discountbonussetorgn,1); end ^ /* Trigger: DK_DISCOUNTBONUSSETSTORGRP_ */ CREATE TRIGGER DK_DISCOUNTBONUSSETSTORGRP_ FOR DK_DISCOUNTBONUSSETSTORGRP ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(gen_dk_discountbonussetstorgrp,1); end ^ /* Trigger: DK_DISCOUNTBONUSSETS_BI */ CREATE TRIGGER DK_DISCOUNTBONUSSETS_BI FOR DK_DISCOUNTBONUSSETS ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(gen_dk_discountbonussets_id,1); end ^ /* Trigger: DK_DISCOUNTBONUSSETS_BU */ CREATE TRIGGER DK_DISCOUNTBONUSSETS_BU FOR DK_DISCOUNTBONUSSETS ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DK_DSCNT_BI0 */ CREATE TRIGGER DK_DSCNT_BI0 FOR DK_DSCNT ACTIVE BEFORE INSERT POSITION 0 AS begin if(New.ID is null or New.ID=0) then New.ID=Gen_ID(GEN_DK_DSCNT_ID, 1); end ^ /* Trigger: DK_GIFTCERTIFICATE_BI */ CREATE TRIGGER DK_GIFTCERTIFICATE_BI FOR DK_GIFTCERTIFICATE ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(DK_GIFTCERTIFICATE_ID, 1); end ^ /* Trigger: DK_GODGODPAMLANREF_BI0 */ CREATE TRIGGER DK_GODGODPAMLANREF_BI0 FOR DK_GODGODPAMLANREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(dk_godgodpamlanref_ID, 1); end ^ /* Trigger: DK_GODGODPAMLANREF_BU0 */ CREATE TRIGGER DK_GODGODPAMLANREF_BU0 FOR DK_GODGODPAMLANREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_GODPAMLANREF_BI0 */ CREATE TRIGGER DK_GODPAMLANREF_BI0 FOR DK_GODPAMLANREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_GODPAMLANREF_ID, 1); end ^ /* Trigger: DK_GODPAMLANREF_BU0 */ CREATE TRIGGER DK_GODPAMLANREF_BU0 FOR DK_GODPAMLANREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_GODPAMVALLANREF_BI0 */ CREATE TRIGGER DK_GODPAMVALLANREF_BI0 FOR DK_GODPAMVALLANREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_GODPAMVALLANREF_ID, 1); end ^ /* Trigger: DK_GODPAMVALLANREF_BU0 */ CREATE TRIGGER DK_GODPAMVALLANREF_BU0 FOR DK_GODPAMVALLANREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_GOODSLANGUAGEREF_BI0 */ CREATE TRIGGER DK_GOODSLANGUAGEREF_BI0 FOR DK_GOODSLANGUAGEREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(dk_goodslanguageref_ID, 1); end ^ /* Trigger: DK_GOODSLANGUAGEREF_BU0 */ CREATE TRIGGER DK_GOODSLANGUAGEREF_BU0 FOR DK_GOODSLANGUAGEREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_GOODSPACK_BI */ CREATE TRIGGER DK_GOODSPACK_BI FOR DK_GOODSPACK ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(DK_GOODSPACK_ID, 1); end ^ /* Trigger: DK_GOODSPACK_BU */ CREATE TRIGGER DK_GOODSPACK_BU FOR DK_GOODSPACK ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DK_LANGUAGE_BI0 */ CREATE TRIGGER DK_LANGUAGE_BI0 FOR DK_LANGUAGE ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(dk_language_ID, 1); end ^ /* Trigger: DK_LANGUAGE_BU0 */ CREATE TRIGGER DK_LANGUAGE_BU0 FOR DK_LANGUAGE ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_MAILINGTHEMES_BI0 */ CREATE TRIGGER DK_MAILINGTHEMES_BI0 FOR DK_MAILINGTHEMES ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(dk_mailingthemes_ID, 1); end ^ /* Trigger: DK_MAILINGTHEMES_BU0 */ CREATE TRIGGER DK_MAILINGTHEMES_BU0 FOR DK_MAILINGTHEMES ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_MAILINGTYPES_BI0 */ CREATE TRIGGER DK_MAILINGTYPES_BI0 FOR DK_MAILINGTYPES ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_MAILINGTYPES_ID, 1); end ^ /* Trigger: DK_MAILINGTYPES_BU0 */ CREATE TRIGGER DK_MAILINGTYPES_BU0 FOR DK_MAILINGTYPES ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_MAILTHEMETYPESORGNREF_BI0 */ CREATE TRIGGER DK_MAILTHEMETYPESORGNREF_BI0 FOR DK_MAILTHEMETYPESORGNREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_MAILTHEMETYPESORGNREF_ID, 1); New.lastedit = current_timestamp; end ^ /* Trigger: DK_MAILTHEMETYPESORGNREF_BU0 */ CREATE TRIGGER DK_MAILTHEMETYPESORGNREF_BU0 FOR DK_MAILTHEMETYPESORGNREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_MAILTYPEORGNREF_BI0 */ CREATE TRIGGER DK_MAILTYPEORGNREF_BI0 FOR DK_MAILTYPEORGNREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DK_MAILTYPEORGNREF_ID, 1); New.lastedit = current_timestamp; end ^ /* Trigger: DK_MAILTYPEORGNREF_BU0 */ CREATE TRIGGER DK_MAILTYPEORGNREF_BU0 FOR DK_MAILTYPEORGNREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_PENALPROITY_BI0 */ CREATE TRIGGER DK_PENALPROITY_BI0 FOR DK_PENALPROITY ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(dk_penalproity_id, 1); end ^ /* Trigger: DK_PENALPROITY_BU0 */ CREATE TRIGGER DK_PENALPROITY_BU0 FOR DK_PENALPROITY ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_PRSNGRPREF_BI0 */ CREATE TRIGGER DK_PRSNGRPREF_BI0 FOR DK_PRSNGRPREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(dk_PRSNGRPref_ID, 1); end ^ /* Trigger: DK_PRSNGRPREF_BU0 */ CREATE TRIGGER DK_PRSNGRPREF_BU0 FOR DK_PRSNGRPREF ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DK_PRSNGRP_BI0 */ CREATE TRIGGER DK_PRSNGRP_BI0 FOR DK_PRSNGRP ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(dk_PRSNGRP_ID, 1); end ^ /* Trigger: DK_PRSNGRP_BU0 */ CREATE TRIGGER DK_PRSNGRP_BU0 FOR DK_PRSNGRP ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: DOCCOMMENT_BI */ CREATE TRIGGER DOCCOMMENT_BI FOR DOCCOMMENT ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(DocComment_ID, 1); end ^ /* Trigger: DOCMCATEGORY_BU0 */ CREATE TRIGGER DOCMCATEGORY_BU0 FOR DOCMCATEGORY ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DOCMDOCDOCUMENT_BI0 */ CREATE TRIGGER DOCMDOCDOCUMENT_BI0 FOR DOCMDOCDOCUMENT ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DocmDocDocument_ID,1); if (New.PackType = 0) then New.PackSize = New.FileSize; end ^ /* Trigger: DOCMDOCDOCUMENT_BU0 */ CREATE TRIGGER DOCMDOCDOCUMENT_BU0 FOR DOCMDOCDOCUMENT ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.PackType = 0) then New.PackSize = New.FileSize; end ^ /* Trigger: DOCMDOCFOLDER_BI0 */ CREATE TRIGGER DOCMDOCFOLDER_BI0 FOR DOCMDOCFOLDER ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DocmDocFolder_ID,1); end ^ /* Trigger: DOCMDOCFOLDER_BU0 */ CREATE TRIGGER DOCMDOCFOLDER_BU0 FOR DOCMDOCFOLDER ACTIVE BEFORE UPDATE POSITION 0 AS Declare Variable ParentID integer; begin New.LastEdit = Current_TimeStamp; /* проверка циклов в дереве */ if ((New.ParentID is not Null) and (Old.ParentID is Null or New.ParentID <> Old.ParentID)) then begin ParentID = New.ParentID; while (:ParentID is not Null) do begin Select ParentID from DocmDocFolder where ID = :ParentID into :ParentID; if (:ParentID = New.ID) then New.ParentID = Old.ParentID; end end end ^ /* Trigger: DOCMGROUPS_AI0 */ CREATE TRIGGER DOCMGROUPS_AI0 FOR DOCMGROUPS ACTIVE AFTER INSERT POSITION 0 AS begin Insert Into UserDGrp (DGrpID, UserID, UserName) Select New.ID, U.ID, New.UserName from UserList U where U.Rights > 0; end ^ /* Trigger: DOCMGROUPS_BI0 */ CREATE TRIGGER DOCMGROUPS_BI0 FOR DOCMGROUPS ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID=Gen_ID(DocmGroups_ID,1); end ^ /* Trigger: DOCMGROUPS_BU0 */ CREATE TRIGGER DOCMGROUPS_BU0 FOR DOCMGROUPS ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.ParentID = New.ID) then New.ParentID = Null; end ^ /* Trigger: DOCMMSGFOLDER_BI0 */ CREATE TRIGGER DOCMMSGFOLDER_BI0 FOR DOCMMSGFOLDER ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DocmMsgFolder_ID,1); end ^ /* Trigger: DOCMMSGRUSERS_AD0 */ CREATE TRIGGER DOCMMSGRUSERS_AD0 FOR DOCMMSGRUSERS ACTIVE AFTER DELETE POSITION 0 AS begin Update DocmMsg set RecvCount = RecvCount - 1 where ID = Old.MsgID; end ^ /* Trigger: DOCMMSGRUSERS_AI0 */ CREATE TRIGGER DOCMMSGRUSERS_AI0 FOR DOCMMSGRUSERS ACTIVE AFTER INSERT POSITION 0 AS begin Update DocmMsg set RecvCount = RecvCount + 1 where ID = New.MsgID; end ^ /* Trigger: DOCMMSGRUSERS_BI0 */ CREATE TRIGGER DOCMMSGRUSERS_BI0 FOR DOCMMSGRUSERS ACTIVE BEFORE INSERT POSITION 0 AS declare variable FolderTyp Integer; begin if (New.ID is Null) then New.ID = Gen_ID(DocmMsgRUsers_ID,1); select System_Flag from DocmMsgFolder where ID=New.FolderID into :FolderTyp; if (:FolderTyp=-1) then /* Draft */ New.SendDateTime = Null; end ^ /* Trigger: DOCMMSGRUSERS_BU0 */ CREATE TRIGGER DOCMMSGRUSERS_BU0 FOR DOCMMSGRUSERS ACTIVE BEFORE UPDATE POSITION 0 AS declare variable FolderTyp Integer; declare variable FolderID_Inbox Integer; begin if (New.FolderID <> Old.FolderID) then begin select System_Flag from DocmMsgFolder where ID=New.FolderID into :FolderTyp; if (:FolderTyp=-1) then /* Draft */ New.SendDateTime = Null; if (:FolderTyp=-4) then begin /* Outbox */ New.SendDateTime = Current_TimeStamp; end if (:FolderTyp=-3) then begin /* Send */ New.SendDateTime = Current_TimeStamp; /* поместить в Inbox */ Select ID from DocmMsgFolder where System_Flag = -5 into :FolderID_Inbox; Insert Into DocmMsgRUsers(ID, RUserID, FolderID, MsgID, RecvName, RecvAddr) Values(Gen_ID(DocmMsgRUsers_ID,1), New.RUserID, :FolderID_Inbox, New.MsgID, New.RecvName, New.RecvAddr); end end if (New.ParentID is not Null) then begin if (New.RecvDateTime is not Null and Old.RecvDateTime is Null) then Update DocmMsgRUsers set RecvDateTime = New.RecvDateTime where ID=New.ParentID; if (New.ReadDateTime is not Null and Old.ReadDateTime is Null) then Update DocmMsgRUsers set ReadDateTime = New.ReadDateTime where ID=New.ParentID; end end ^ /* Trigger: DOCMMSG_BI0 */ CREATE TRIGGER DOCMMSG_BI0 FOR DOCMMSG ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DocmMsg_ID,1); end ^ /* Trigger: DOCMTASKCATEGORY_BI0 */ CREATE TRIGGER DOCMTASKCATEGORY_BI0 FOR DOCMTASKCATEGORY ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DocmTaskCategory_ID, 1); end ^ /* Trigger: DOCMTASKFINANCE_BI0 */ CREATE TRIGGER DOCMTASKFINANCE_BI0 FOR DOCMTASKFINANCE ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(DocmTaskFinance_ID, 1); end ^ /* Trigger: DOCMTASKHBCATEGORY_BI0 */ CREATE TRIGGER DOCMTASKHBCATEGORY_BI0 FOR DOCMTASKHBCATEGORY ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DocmTaskHbCategory_ID, 1); end ^ /* Trigger: DOCMTASKHBCATEGORY_BU0 */ CREATE TRIGGER DOCMTASKHBCATEGORY_BU0 FOR DOCMTASKHBCATEGORY ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DOCMTASKHB_BU0 */ CREATE TRIGGER DOCMTASKHB_BU0 FOR DOCMTASKHB ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DOCMTASKSTAGE_AD0 */ CREATE TRIGGER DOCMTASKSTAGE_AD0 FOR DOCMTASKSTAGE ACTIVE AFTER DELETE POSITION 0 AS Declare Variable IPriority integer; Declare Variable RPriority integer; Declare Variable ID integer; begin /* корректировка приоритетов */ /* оставшихся активных этапов */ if (Old.StageCommit = 0) then begin -- удаляется активный этап IPriority = Old.IPriority; ID = Null; Select Min(ID) from DocmTaskStage where IUserID = Old.IUserID and StageCommit = 0 and IPriority >= :IPriority into :ID; if (:ID is not Null) then Update DocmTaskStage Set IPriority = :IPriority where ID = :ID and IPriority <> :IPriority; RPriority = Old.RPriority; ID = Null; Select Min(ID) from DocmTaskStage where RUserID = Old.RUserID and StageCommit = 0 and RPriority >= :RPriority into :ID; if (:ID is not Null) then Update DocmTaskStage Set RPriority = :RPriority where ID = :ID and RPriority <> :RPriority; end end ^ /* Trigger: DOCMTASKSTAGE_AU0 */ CREATE TRIGGER DOCMTASKSTAGE_AU0 FOR DOCMTASKSTAGE ACTIVE AFTER UPDATE POSITION 0 AS Declare Variable IPriority integer; Declare Variable RPriority integer; Declare Variable ID integer; begin if (New.IPriority <> Old.IPriority) then begin if (New.IPriority < Old.IPriority) then begin -- приоритет повышается (0 - самый высокий) IPriority = New.IPriority; for Select ID from DocmTaskStage where IUserID = New.IUserID and StageCommit = 0 and IPriority >= New.IPriority and ID <> Old.ID order by IPriority, ID into :ID do begin IPriority = :IPriority + 1; Update DocmTaskStage set IPriority = :IPriority where ID = :ID and IPriority <> :IPriority; end end end if (New.RPriority <> Old.RPriority) then begin if (New.RPriority < Old.RPriority) then begin RPriority = New.RPriority; for Select ID from DocmTaskStage where RUserID = New.RUserID and StageCommit = 0 and RPriority >= New.RPriority and ID <> Old.ID order by RPriority, ID into :ID do begin RPriority = :RPriority + 1; Update DocmTaskStage set RPriority = :RPriority where ID = :ID and RPriority <> :RPriority; end end end end ^ /* Trigger: DOCMTASKSTAGE_BI0 */ CREATE TRIGGER DOCMTASKSTAGE_BI0 FOR DOCMTASKSTAGE ACTIVE BEFORE INSERT POSITION 0 AS Declare Variable IPriority integer; Declare Variable RPriority integer; begin /* для текущего этапа ставим приоритет самый низкий */ /* из существующих незавершенных этапов */ Select Max(IPriority) from DocmTaskStage where IUserID = New.IUserID and StageCommit = 0 into :IPriority; if (:IPriority is Null) then New.IPriority = 0; else New.IPriority = :IPriority + 1; Select Max(RPriority) from DocmTaskStage where RUserID = New.RUserID and StageCommit = 0 into :RPriority; if (:RPriority is Null) then New.RPriority = 0; else New.RPriority = :RPriority + 1; end ^ /* Trigger: DOCMTASKSTAGE_BU0 */ CREATE TRIGGER DOCMTASKSTAGE_BU0 FOR DOCMTASKSTAGE ACTIVE BEFORE UPDATE POSITION 0 AS begin if (New.StageRead = 1 and Old.StageRead <> 1) then New.ReadDateTime = Current_TimeStamp; if (New.StageRead = 0 and Old.StageRead <> 0) then New.ReadDateTime = Null; if (New.StageClose = 1 and Old.StageClose <> 1) then New.CloseDateTime = Current_TimeStamp; if (New.StageClose = 0 and Old.StageClose <> 0 and New.StageAbort = 0) then New.CloseDateTime = Null; if (New.StageAbort = 1 and Old.StageAbort <> 1) then New.CloseDateTime = Current_TimeStamp; if (New.StageAbort = 0 and Old.StageAbort <> 0 and New.StageClose = 0) then New.CloseDateTime = Null; if (New.StageCommit = 1 and Old.StageCommit <> 1) then New.CommitDateTime = Current_TimeStamp; if (New.StageCommit = 0 and Old.StageCommit <> 0) then New.CommitDateTime = Null; end ^ /* Trigger: DOCMTASKWORK_AD0 */ CREATE TRIGGER DOCMTASKWORK_AD0 FOR DOCMTASKWORK ACTIVE AFTER DELETE POSITION 0 AS begin Execute Procedure DocmTask_WorkCalc(Old.TaskID); end ^ /* Trigger: DOCMTASKWORK_AI0 */ CREATE TRIGGER DOCMTASKWORK_AI0 FOR DOCMTASKWORK ACTIVE AFTER INSERT POSITION 0 AS begin Execute Procedure DocmTask_WorkCalc(New.TaskID); -- Если статус задачи "Новая" - изменить на "В работе" update DocmTask Set State=3 where ID=New.TaskID and State=0; end ^ /* Trigger: DOCMTASKWORK_AU0 */ CREATE TRIGGER DOCMTASKWORK_AU0 FOR DOCMTASKWORK ACTIVE AFTER UPDATE POSITION 0 AS begin Execute Procedure DocmTask_WorkCalc(New.TaskID); end ^ /* Trigger: DOCMTASKWORK_BI0 */ CREATE TRIGGER DOCMTASKWORK_BI0 FOR DOCMTASKWORK ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(DocmTaskWork_ID, 1); end ^ /* Trigger: DOCMTASKWORK_BU0 */ CREATE TRIGGER DOCMTASKWORK_BU0 FOR DOCMTASKWORK ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: DOCMTASK_AD0 */ CREATE TRIGGER DOCMTASK_AD0 FOR DOCMTASK ACTIVE AFTER DELETE POSITION 0 AS begin if (old.taskid is not null) then execute procedure docmtask_update_by_children(old.taskid); end ^ /* Trigger: DOCMTASK_AI0 */ CREATE TRIGGER DOCMTASK_AI0 FOR DOCMTASK ACTIVE AFTER INSERT POSITION 0 AS begin if (New.IUserID is not Null and New.MUserID is not null and New.MUserID <> New.IUserID and New.Subject <> '') then begin /* инициатор поставил задачу - информировать ответственного */ execute procedure DocmTask_GenMsg(New.ID, New.IUserID, New.MUserID, 0); end if (new.taskid is not null) then execute procedure docmtask_update_by_children(new.taskid); end ^ /* Trigger: DOCMTASK_AU0 */ CREATE TRIGGER DOCMTASK_AU0 FOR DOCMTASK ACTIVE AFTER UPDATE POSITION 0 AS begin /* подзадачи обновляют фактическое начало и общее время главной задачи... */ -- if (new.taskid is not null) then -- execute procedure docmtask_update_by_children(new.taskid); if ((New.IUserID is not Null) and (New.MUserID is not Null) and (New.Subject <> '') and (New.IUserID <> New.MUserID)) then begin if ((Old.Subject = '') or (Old.MuserID is Null)) then Execute Procedure DocmTask_GenMsg(New.ID, New.IUserID, New.MUserID, 0); else begin /* Увеличил диапазон проверки изменений*/ if (New.Subject <> Old.Subject) then Execute Procedure DocmTask_GenMsg(New.ID, New.IUserID, New.MUserID, 1); if (New.contactid <> Old.contactid) then Execute Procedure DocmTask_GenMsg(New.ID, New.IUserID, New.MUserID, 5); if (New.MUserID <> Old.MUserID) then Execute Procedure DocmTask_GenMsg(New.ID, New.IUserID, New.MUserID, 6); if (New.priority<>Old.priority) then Execute Procedure DocmTask_GenMsg(New.ID, New.IUserID, New.MUserID, 7); if ((New.SDATE <> Old.SDATE) or (New.EDATE <> Old.EDATE)) then Execute Procedure DocmTask_GenMsg(New.ID, New.IUserID, New.MUserID, 8); if (new.state <> old.state and new.state = 4) then Execute Procedure DocmTask_GenMsg(New.ID, New.MUserID, New.IUserID, 4); end end /* Отсылка сообщения об ознакомлении с задачей */ if (old.is_accepted = 0 and new.is_accepted = 1) then execute procedure docmtask_genmsg(new.id, new.muserid, new.iuserid, 9); end ^ /* Trigger: DOCMTASK_BD0 */ CREATE TRIGGER DOCMTASK_BD0 FOR DOCMTASK ACTIVE BEFORE DELETE POSITION 0 AS begin if (Old.ObjID is not Null) then delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: DOCMTASK_BI0 */ CREATE TRIGGER DOCMTASK_BI0 FOR DOCMTASK ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID=Gen_ID(DocmTask_ID,1); if (New.Typ is Null) then New.Typ = 0; -- дата/время создания задачи if (New.BDATE is Null) then New.BDATE = Current_TimeStamp; New.ObjID = Gen_ID(Obj_Class_ID, 1); insert into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 101); if (New.EFDate is not Null and New.EFMDate is Null) then New.EFMDate = New.EFDate; if (new.source_type is null) then new.source_type = 0; end ^ /* Trigger: DOCMTASK_BU0 */ CREATE TRIGGER DOCMTASK_BU0 FOR DOCMTASK ACTIVE BEFORE UPDATE POSITION 0 AS Declare Variable TaskID integer; begin New.LastEdit = Current_TimeStamp; if (New.Typ is Null) then New.Typ = 0; if (new.ftime <> old.ftime and old.ftime = 0.0 and New.State = 0) then begin New.State = 3; -- в работе end if (New.State = 3 and Old.State < 3) then begin -- простановка статуса - в работе if (New.BFDate is Null) then New.BFDate = Current_TimeStamp; end if (New.State = 4 and Old.State < 4) then begin -- простановка статуса - завершено if (New.BFDate is Null) then New.BFDate = Current_TimeStamp; if (New.EFDate is Null) then New.EFDate = Current_TimeStamp; end if (New.State = 5 and Old.State < 5) then begin -- простановка статуса - закрыто if (New.BFDate is Null) then New.BFDate = Current_TimeStamp; if (New.EFDate is Null) then New.EFDate = Current_TimeStamp; end if (New.Typ = 1) then begin -- доставка if (New.EFDate is not Null) then begin if (New.State < 4) then New.State = 4; -- завершено end end else begin -- не доставка if ((new.efdate is not null or new.fproc = 100) and (new.grou_ = 0)) then begin if (New.State < 4) then New.State = 4; -- завершено -- New.State = 5; -- закрыто end end /* проверка циклов в дереве задачи / подзадачи */ if ((New.TaskID is not Null) and (Old.TaskID is Null or New.TaskID <> Old.TaskID)) then begin TaskID = New.TaskID; while (:TaskID is not Null) do begin Select TaskID from DocmTask where ID = :TaskID into :TaskID; if (:TaskID = New.ID) then New.TaskID = Old.TaskID; end end if ((New.fProc >= 100.00) and (New.EFDATE is Null)) then /* если задача завершена, но не указан срок факт. завершения... */ New.EFDATE = Current_TimeStamp; if (New.EFDate is not Null and New.FProc < 100.00) then New.FProc = 100.00; if (Old.ObjID is Null and New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); Insert into Obj_Class(ID, Obj_Typ) values(New.ObjID, 101); end /* при простановке плановой даты завершения проставить */ /* плановую дату завершения исполнителем - если она не указана */ if (Old.EDate is null and New.EDate is not Null and Old.EFEDate is Null and New.EFEDate is Null) then New.EFEDate = New.EDate; /* если убирают фактическую дату завершения задачи - */ /* убрать фактическую дату завершения исполнитем */ if (New.EFDate is not Null and New.EFMDate is Null) then New.EFMDate = New.EFDate; /* зата занесения исполнитем иомента завершения задачи */ if ((New.EFMDATE <> Old.EFMDATE) or (New.EFMDate is not Null and Old.EFMDate is Null) or (New.EFMDate is Null and Old.EFMDate is not Null)) then New.EFMEDITDATE = Current_TimeStamp; end ^ /* Trigger: ECRGOODS_BI0 */ CREATE TRIGGER ECRGOODS_BI0 FOR ECRGOODS ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is null) then New.ID = Gen_ID(ECRGoods_ID, 1); end ^ /* Trigger: EDUCATION_BI */ CREATE TRIGGER EDUCATION_BI FOR EDUCATION ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(EDUCATION_ID,1); END ^ /* Trigger: FRREPORTTREEUSER_AI0 */ CREATE TRIGGER FRREPORTTREEUSER_AI0 FOR FRREPORTTREEUSER ACTIVE AFTER INSERT POSITION 0 as declare variable ParentID integer; declare variable RID integer; declare variable ID Integer; begin /* -- Проверить доступ вверх по иерархии Select ParentID from FrReportTree where ID=New.FrRpID into :ParentID; if (:ParentID is not Null) then begin -- Не корень -- Есть ли доступ к родителю RID = Null; Select ID from FrReportTreeUser where FrRpID=:ParentID and UserID=New.UserID and OurOrgnID=New.OurOrgnID into :RID; if (:RID is Null) then begin -- доступа нет - разрешаем Insert into FrReportTreeUser(FrRpID, UserID, OurOrgnID, UserName) Values(:ParentID, New.UserID, New.OurOrgnID, New.UserName); -- Выше по иерархии - сработает иттерация после вставки end end -- Распространить права доступа аниз по иерархии for select ID from FrReportTree where ParentID=New.FrRpID into :ID do begin RID = Null; Select ID from FrReportTreeUser where FrRpID=:ID and UserID=New.UserID and OurOrgnID=New.OurOrgnID into :RID; if (:RID is Null) then begin -- доступа нет - разрешаем Insert into FrReportTreeUser(FrRpID, UserID, OurOrgnID, UserName) Values(:ID, New.UserID, New.OurOrgnID, New.UserName); -- Ниже по иерархии - сработает иттерация после вставки end end */ end ^ /* Trigger: FRREPORTTREEUSER_BD0 */ CREATE TRIGGER FRREPORTTREEUSER_BD0 FOR FRREPORTTREEUSER ACTIVE BEFORE DELETE POSITION 0 as begin Delete From FrReportTreeUser U where U.ID in (Select U1.ID from FrReportTree T, FrReportTreeUser U1 where T.ParentID=Old.FrRpID and U1.FrRpID=T.ID and U1.UserID=OLd.UserID); end ^ /* Trigger: FRREPORTTREEUSER_BI0 */ CREATE TRIGGER FRREPORTTREEUSER_BI0 FOR FRREPORTTREEUSER ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null) then New.ID = Gen_ID(FrReportTreeUser_ID,1); end ^ /* Trigger: FRREPORTTREEUSER_BU0 */ CREATE TRIGGER FRREPORTTREEUSER_BU0 FOR FRREPORTTREEUSER ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: FRREPORTTREE_BD0 */ CREATE TRIGGER FRREPORTTREE_BD0 FOR FRREPORTTREE ACTIVE BEFORE DELETE POSITION 0 as begin Delete from FrReportTree where ParentID=Old.ID; end ^ /* Trigger: FRREPORTTREE_BI0 */ CREATE TRIGGER FRREPORTTREE_BI0 FOR FRREPORTTREE ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null) then New.ID = Gen_ID(FrReportTree_ID,1); end ^ /* Trigger: FRREPORTTREE_BU0 */ CREATE TRIGGER FRREPORTTREE_BU0 FOR FRREPORTTREE ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; if (New.ParentID=New.ID) then New.ParentID = Null; end ^ /* Trigger: FRREPORT_BI0 */ CREATE TRIGGER FRREPORT_BI0 FOR FRREPORT ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(FrReport_ID, 1); if (New.ParentID = 0) then New.ParentID = Null; end ^ /* Trigger: FRREPORT_BU0 */ CREATE TRIGGER FRREPORT_BU0 FOR FRREPORT ACTIVE BEFORE UPDATE POSITION 0 AS declare variable ParentID integer; begin New.LastEdit = Current_TimeStamp; if (New.ParentID = 0) then New.ParentID = Null; -- предотвращение зацикливания дерева if (New.ParentID = New.ID) then New.ParentID = Old.ParentID; ParentID = New.ParentID; while (:ParentID is not Null) do begin Select ParentID from FrReport where ID=:ParentID into :ParentID; if (:ParentID = New.ID) then New.ParentID = OLd.ParentID; end end ^ /* Trigger: FUNCMANAGE_BI */ CREATE TRIGGER FUNCMANAGE_BI FOR FUNCMANAGE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_FUNCMANAGE_ID,1); END ^ /* Trigger: FUNCSUPPORT_BI */ CREATE TRIGGER FUNCSUPPORT_BI FOR FUNCSUPPORT ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_FUNCSUPPORT_ID,1); END ^ /* Trigger: GDDDTDDU_BI0 */ CREATE TRIGGER GDDDTDDU_BI0 FOR GDDDTDDU ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GddDtDDU_ID, 1); if (New.Quant is Null) then New.Quant = 0.0; if (New.Price is Null) then New.Price = 0.0; if (New.Nds is Null) then New.Nds = 0.0; if (New.TPrice is Null) then New.TPrice = 0.0; end ^ /* Trigger: GDDDTPARAM_BI0 */ CREATE TRIGGER GDDDTPARAM_BI0 FOR GDDDTPARAM ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GddDtParam_ID, 1); end ^ /* Trigger: GDDDTU_BI0 */ CREATE TRIGGER GDDDTU_BI0 FOR GDDDTU ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GddDtU_ID, 1); end ^ /* Trigger: GDDDT_AD0 */ CREATE TRIGGER GDDDT_AD0 FOR GDDDT ACTIVE AFTER DELETE POSITION 0 AS declare variable Typ integer; declare variable SubTyp integer; begin /* товар в заказе - обновить кол-во зарезервированных товаров */ if (Old.SzGdsID is not Null and (Old.Quant <> 0.0 or Old.Qnt_One <> 0.0)) then begin Select Typ, SubTyp from DgvDt where ID = Old.DgvKey into :Typ, :SubTyp; if (not((:Typ = 1 and :SubTyp = 0) or (:Typ=11))) then Update StorZDtGds set RSQuant = RSQuant - Old.Quant, SQnt_One = SQnt_One - Old.Qnt_One where ID = Old.SzGdsID; end end ^ /* Trigger: GDDDT_AFTER_INSERT */ CREATE TRIGGER GDDDT_AFTER_INSERT FOR GDDDT ACTIVE AFTER INSERT POSITION 0 AS declare variable ZID integer; declare variable GdsKey integer; declare variable Qnt Double Precision; declare variable QntN Double Precision; declare variable TYP integer; declare variable SubTyp integer; declare variable ZSID integer; declare variable ZMID integer; begin if (New.ZID is not Null) then begin -- корректировка комплектующих в произв. заказе Select ZID, TYP, SubTyp from DgvDt where ID=New.DgvKey into :ZID, :TYP, :SubTyp; if (:ZID is not null and New.Quant <> 0.0 and :Typ=1 and :SubTyp=1) then begin Select GdsKey from GddKt where ID=New.GddKey into :GdsKey; QntN = New.Quant; for Select M.ID, S.ID, S.Source-S.Quant from WorkZMst M, WorkZSlv S where (M.ZID=New.ZID) and S.MstID=M.ID and (S.GodsID=:GdsKey) and (S.Quant < S.Source) order By M.ID, S.ID into :ZMID, :ZSID, :Qnt do begin if (:Qnt > :QntN) then Qnt = :QntN; Update WorkZSlv set Quant=Quant+:Qnt where ID=:ZSID; QntN = :QntN-:Qnt; end end end -- товар в выписанных счетах if (New.GddID is not Null and New.Quant<>0.0) then begin Update GddDt set Quant=Quant-New.Quant where ID=New.GddID -- в другом счете-накладной and DgvKey <> New.DgvKey; end -- товар в скл. заказе - обновить кол-во зарезервированных товаров if (New.SzGdsID is not Null and (New.Quant <> 0.0 or New.Qnt_One <> 0.0)) then begin Select Typ, SubTyp from DgvDt where ID = New.DgvKey into :Typ, :SubTyp; if (not( (:Typ = 1 and :SubTyp = 0) or (:Typ=11) )) then Update StorZDtGds set RSQuant = RSQuant + New.Quant, SQnt_One = SQnt_One + New.Qnt_One where ID = New.SzGdsID; end end ^ /* Trigger: GDDDT_AU0 */ CREATE TRIGGER GDDDT_AU0 FOR GDDDT ACTIVE AFTER UPDATE POSITION 0 AS declare variable Typ integer; declare variable SubTyp integer; begin -- Товар в выписанных счетах if (New.GddID is not Null and Old.GddID is not Null and New.Quant<>Old.Quant) then Update GddDt set Quant=Quant+Old.Quant-New.Quant where ID=New.GddID and DgvKey <> New.DgvKey; if (New.GddID is Null and Old.GddID is not Null) then Update GddDt set Quant=Quant+Old.Quant where ID=Old.GddID and DGvKey <> New.DgvKey; if (New.SzGdsID is not Null and (New.Quant <> Old.Quant or New.Qnt_One <> Old.Qnt_One)) then begin Select Typ, SubTyp from DgvDt where ID = New.DgvKey into :Typ, :SubTyp; if (not((:Typ = 1 and :SubTyp = 0) or (:Typ=11))) then Update StorZDtGds set RSQuant = RSQuant - Old.Quant + New.Quant, SQnt_One = SQnt_One - Old.Qnt_One + New.Qnt_One where ID = New.SzGdsID; end end ^ /* Trigger: GDDDT_BEFORE_DELETE */ CREATE TRIGGER GDDDT_BEFORE_DELETE FOR GDDDT ACTIVE BEFORE DELETE POSITION 0 AS Declare Variable QuantDt Double Precision; Declare Variable QuantDtC Double Precision; Declare Variable Source Double Precision; Declare Variable QuantKt Double Precision; Declare Variable QuantKtC Double Precision; declare variable ZID integer; declare variable TYP integer; declare variable SubTyp integer; declare variable GdsKey integer; declare variable ZSID integer; declare variable ZMID integer; /* зарезервированное количество */ declare variable QntD double Precision; /* количество материала в заказе */ declare variable QntS Double Precision; declare variable RKTID integer; begin /* Увеличиваем остаток товара в наличии */ if(Old.GddKey is not Null) then Update GddKt set Quant=Quant + Old.Quant, Qnt_One=Qnt_One + Old.Qnt_One where ID=Old.GddKey; Select ZID, TYP, SubTyp from DgvDt where ID=Old.DgvKey into :ZID, :TYP, :SubTyp; /* Корректировка по заказам */ if ((:ZID is not null) and (Old.Quant <> 0.0) and :TYP=1 and :SubTyp=1) then begin Select GdsKey from GddKt where ID=Old.GddKey into :GdsKey; QntD = Old.Quant; For Select M.ID, S.ID, S.Quant from WorkZMst M, WorkZSlv S where M.ZID=:ZID and S.MstID=M.ID and (S.GodsID=:GdsKey) and (S.Quant > 0.0) order by M.ID desc, S.ID desc into :ZMID, :ZSID, :QntS do begin if (:QntD > 0.0) then begin if (:QntS > :QntD) then QntS = :QntD; Update WorkZSlv Set Quant=Quant-:QntS where ID=:ZSID; QntD = :QntD - :QntS; end end end /* Проверка на возврат товара */ RKTID = Null; for select K.ID from GddKt K, DgvKt KK where K.GddKey = Old.ID and KK.ID=K.DgvKey and KK.Typ=2 into :RKTID do begin RKTID=:RKTID; end if (:RKTID is not Null) then exception GddDt_RetnKt; /* товар в выписанных счетах */ if (Old.GddID is not null) then Update GddDt set Quant=Quant+Old.Quant where ID=Old.GddID and DgvKey <> OLd.DgvKey; end ^ /* Trigger: GDDDT_BEFORE_INSERT */ CREATE TRIGGER GDDDT_BEFORE_INSERT FOR GDDDT ACTIVE BEFORE INSERT POSITION 0 AS Declare Variable Quant Double Precision; Declare Variable Source Double Precision; declare variable PriceKt Double Precision; declare variable NdsKt Double Precision; declare variable KPriceKt Double Precision; declare variable KNdsKt Double Precision; declare variable TPriceKt Double Precision; declare variable TNdsKt double precision; declare variable Akciz Double Precision; declare variable ZNBR Varchar(20); declare variable Typ Integer; declare variable Stor Integer; declare variable StorID integer; declare variable Stor1Typ Integer; declare variable Stor2Typ Integer; declare variable Src_One double precision; declare variable Qnt_One double precision; declare variable zSSumm1 double precision; declare variable zSSumm2 double precision; declare variable NdsProc double precision; declare variable SrcKtTyp integer; Declare Variable aQuant Double Precision; begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(GddDt_ID, 1); if (New.Price is Null) then New.Price = 0.0; if (New.Nds is Null) then New.Nds = 0.0; if (New.TPrice is Null) then New.TPrice = 0.0; if (New.Source is Null) then New.Source = 0.0; if (New.Qnt_One is Null) then New.Qnt_One = 0.0; if(New.Quant is Null or New.Quant < 0.0) then New.Quant = 0.0; if (New.GddKey is not Null) then begin -- резервирование товара Select Price, Nds, Akciz, ZNBR, KPrice, KNds, TPrice, TNds, Source, Quant, Qnt_One, Src_One from GddKt where ID=New.GddKey into :PriceKt, :NdsKt, :Akciz, :ZNBR, :KPriceKt, :KNdsKt, :TPriceKt, :TNdsKt, :Source, :Quant, :Qnt_One, :Src_One; /* ограничить кол-во отпускаемого товара */ /* - не более остатка (товар в наличии) */ if (New.Qnt_One > :Qnt_One) then New.Qnt_One = :Qnt_One; if (New.Quant > :Quant) then New.Quant = :Quant; /* уменьшить остаток (товар в наличии) */ if (New.Qnt_One <> 0.0 or New.Quant <> 0.0) then Update GddKt Set Quant = Quant - New.Quant, Qnt_One = Qnt_One - New.Qnt_One where ID=New.GddKey; end select typ, Stor, StorID, ProcNds from DgvDt where id=new.dgvkey into :typ, :Stor, :StorID, :NdsProc; Select Typ from StorList where ID=:StorID into :Stor2Typ; Select Typ from StorList where ID=:Stor into :Stor1Typ; if ((:Typ=1 and :Stor2Typ not in (1, 4) and :Stor1Typ not in (1, 4)) or :typ=2 or :typ=3 or :typ=4 or :Typ=8 or :Typ=9) then begin if (New.Price <> :PriceKt) then new.price=:pricekt; if (New.Nds <> :NdsKt) then new.nds=:ndskt; if (:Typ=9) then begin /* возврат товара поставщику */ /* цены поставщика без услуг */ if (:TPriceKt is Null or :TPriceKt=0.0) then TPriceKt = :PriceKt; if (:TNdsKt is Null or :TNdsKt=0.0) then TNdsKt = :NdsKt; if (New.Price <> :TPriceKt) then new.price=:TPriceKt; if (New.Nds <> :TNdsKt) then new.nds=:TNdsKt; end end if (:Typ=1 and :Stor1Typ in (1, 4) and :Stor2Typ not in (1, 4)) then begin -- внутр. передача - возврат из розницы / комиссии на Склад Готовой Продукции Select k.Price, k.Nds, KK.Typ from GddKt_SrcKtID (New.GddKey) KS join GddKt K on K.ID=KS.KTID join DgvKt KK on KK.ID=K.DgvKey into New.Price, New.Nds, :SrcKtTyp; if (:SrcKtTyp = 4) then begin -- оприходование готовой продукции end else begin New.Price = :KPriceKt; New.Nds = :KNdsKt; end end -- складской заказ - ограничение по количеству товара if (New.SzGdsID is not null) then begin -- складской заказ if (:Typ = 11) then begin -- счет на реализацию select zd.Source-zd.RSQuant- CoalEsce((select sum(d.Source) from GddDt D join DgvDt DD on DD.ID=D.DgvKey and DD.Typ=11 where d.SzGdsID=zd.ID),0.0) from StorZDtGds zd where zd.ID=New.SzGdsID into :aQuant; aQuant = CoalEsce(:aQuant, 0.0); if (New.Source > :aQuant) then New.Source = :aQuant; end end if (:Typ=0 and New.SZGdsID is not Null) then begin -- для позиции из оплаченного заказа установить цену по заказу Select Z.SaleSumma, Z.SCSumma from StorZDtGds D, StorZakazDt Z where D.ID=New.SZGdsID and Z.ID=D.SZID into :zSSumm1, :zSSumm2; if (:zSSumm1 <> 0.0 or zSSumm2 <> 0.0) then Select Price, Price / (:NdsProc + 100.00) * :NdsProc from StorZDtGds where ID = New.SZGdsID into New.Price, New.Nds; end New.PriceN = New.Price - New.Nds; New.Loss = 0.0; if (:PriceKt > New.Price) then New.Loss = :PriceKt-New.Price; end ^ /* Trigger: GDDDT_BEFORE_UPDATE */ CREATE TRIGGER GDDDT_BEFORE_UPDATE FOR GDDDT ACTIVE BEFORE UPDATE POSITION 0 AS declare variable typ integer; Declare Variable Stor integer; Declare Variable StorID integer; Declare variable Stor1Typ integer; Declare variable Stor2Typ integer; declare variable PriceKt double precision; declare variable NdsKt double precision; declare variable Akciz double precision; Declare Variable DgvKtID Integer; Declare Variable GddKtID Integer; declare variable ZNBR Varchar(20); declare variable DateReal TimeStamp; declare variable Date_Reg TimeStamp; declare variable BarCode varchar(20); declare variable SertNbr varchar(255); declare variable KPriceKt Double Precision; declare variable KNdsKt Double Precision; declare variable TPriceKt Double Precision; declare variable TNdsKt Double Precision; declare variable RGddKtID Integer; declare variable RDgvKtID Integer; Declare variable Quant double precision; declare variable QntOne double precision; Declare variable aQuant double precision; -- тип приходной накладной для исходного товара declare variable SrcKtTyp integer; begin if (New.GddKey is not Null) then begin /* ограничение отпускаемого количества - не более остатка */ Select Quant, Qnt_One from GddKt where ID=New.GddKey into :Quant, :QntOne; if (New.GddKey=Old.GddKey) then begin /* привязка осталась - изменение количества */ if (New.Quant-Old.Quant > :Quant) then begin /* увеличение количества отпускаемого товара больше остатка */ New.Quant = Old.Quant+:Quant; end if (New.Qnt_One-Old.Qnt_One > :QntOne) then begin New.Qnt_One = Old.Qnt_One + :QntOne; end end else begin /* привязка к новой позиции */ if (New.Quant > :Quant) then New.Quant = :Quant; if (New.Qnt_One > :QntOne) then New.Qnt_One = :QntOne; end end select DD.Typ, DD.Stor, DD.StorID, S1.Typ, S2.Typ from DgvDt DD left join StorList S1 on S1.ID=DD.Stor -- склад-источник left join StorList S2 on S2.ID=DD.StorID -- склад-получатель where DD.ID = New.DgvKey into :Typ, :Stor, :StorID, :Stor1Typ, :Stor2Typ; if ((:Typ=1 or :Typ=7) and (New.Qnt_One <> Old.Qnt_One or New.Quant <> OLd.Quant)) then begin /* шт. кол-во - внутр. передача, переоценка - изменение количества */ /* проверить допустимость изменения кол-ва в меньшую сторону */ /* если уже был отпуск товара из приходной накладной */ RGddKtID = Null; Select ID, Src_One-Qnt_One, Source-Quant from GddKt where GddKey=New.ID into :RGddKtID, :QntOne, :Quant; if (:RGddKtID is not Null) then begin if (New.Qnt_One < :QntOne) then New.Qnt_One = :QntOne; if (New.Quant < :Quant) then New.Quant = :Quant; end Update GddKt K Set K.Src_One=New.Qnt_One, K.Source = New.Quant where (K.GddKey = New.ID) and (K.Src_One <> New.Qnt_One or K.Source <> New.Quant); end if ((New.Quant <> Old.Quant or New.Qnt_One <> Old.Qnt_One) or (New.GddKey<>Old.GddKey) or (New.GddKey is Null and Old.GddKey is Not Null) or (New.GddKey is not Null and Old.GddKey is Null) ) then begin -- Корректировка остатка - товар в наличии if ((New.GddKey=Old.GddKey) and (New.GddKey is not Null) and (Old.GddKey is not Null) and (New.Quant <> Old.Quant or New.Qnt_One <> Old.Qnt_One)) then begin Update GddKt set Quant=Quant+Old.Quant-New.Quant, Qnt_One=Qnt_One+Old.Qnt_One-New.Qnt_One where ID=New.GddKey; end else begin /* New.GddKey <> Old.GddKey */ if ((Old.GddKey is Not Null) and (New.GddKey <> Old.GddKey or New.GddKey is Null)) then begin Update GddKt Set Quant = Quant + Old.Quant, Qnt_One=Qnt_One + Old.Qnt_One where ID=OLd.GddKey; end if ((New.GddKey is Not Null) and (Old.GddKey <> New.GddKey or Old.GddKey is Null)) then begin Update GddKt set Quant = Quant - New.Quant, Qnt_One=Qnt_One - New.Qnt_One where ID=New.GddKey; end end end -- цены исходного товара Select Price, Nds, Akciz, ZNBR, KPrice, KNds, TPrice, TNds, DateReal, Date_Reg, SertNbr, BarCode from GddKt where ID=New.GddKey into :PriceKt, :NdsKt, :Akciz, :ZNBR, :KPriceKt, :KNdsKt, :TPriceKt, :TNdsKt, :DateReal, :Date_Reg, :SertNbr, :BarCode; if ((:Typ=1 and :Stor2Typ not in (1, 4,5) and :Stor1Typ not in (1,4,5)) or :typ=2 or :typ=3 or :typ=4 or :Typ=8 or :Typ=9) then begin if (New.Price <> :PriceKt) then new.price=:pricekt; if (New.Nds <> :NdsKt) then new.nds=:ndskt; if (:Typ=9) then begin -- возврат товара выполняется по ценам без услуг if (New.Price <> :TPriceKt) then New.Price=:TPriceKt; if (New.Nds <> :TNdsKt) then New.Nds=:TNdsKt; end end if (:Typ=1 and :Stor1Typ in (1, 4, 5) and :Stor2Typ not in (1, 4, 5)) then begin -- внутр. передача - возврат из розницы / комиссии на Склад Готовой Продукции Select k.Price, k.Nds, KK.Typ from GddKt_SrcKtID (New.GddKey) KS join GddKt K on K.ID=KS.KTID join DgvKt KK on KK.ID=K.DgvKey into New.Price, New.Nds, :SrcKtTyp; if (not (:SrcKtTyp = 4)) then begin -- не оприходование готовой продукции New.Price = :KPriceKt; New.Nds = :KNdsKt; end end -- Возврат товара - приходная накладная for select K.ID, K.DgvKey from GddKt K left join DgvKt KK on KK.ID=K.DgvKey where K.GddKey=New.ID and KK.TYP=2 into :RGddKtID, :RDgvKtID do begin Update GddKt Set Price=:PriceKt, Nds=:NdsKt, Akciz=:Akciz, ZNBR=:ZNBR, KPrice = :KPriceKt, KNds = :KNdsKt, DateReal=:DateReal, Date_Reg=:Date_Reg, BarCode = case when Trim(CoalEsce(BarCode,''))='' then :BarCode else BarCode end, SertNbr=:SertNbr where ID=:RGddKtID; Update DgvKt Set Summa = Summa, No_LastEdit=1 where ID = :RDgvKtID; end -- Переоценка товара if (:Typ = 7) then begin for select K.ID, K.DgvKey from GddKt K where K.GddKey=New.ID into :RGddKtID,:RDgvKtID do begin Update GddKt Set Price=New.Price, Nds=New.Nds, Akciz=:Akciz, ZNBR=:ZNBR, KPrice = :KPriceKt, KNds = :KNdsKt, DateReal=:DateReal, Date_Reg=:Date_Reg, BarCode = case when Trim(CoalEsce(BarCode,''))='' then :BarCode else BarCode end, SertNbr=:SertNbr where ID=:RGddKtID; Update DgvKt Set Summa=Summa, No_LastEdit=1 where ID=:RDgvKtID; end end -- Внутренняя передача if (:Typ = 1) then begin for Select K.ID, K.DgvKey from GddKt K where K.GddKey=New.ID into :GddKtID, :DgvKtID as Cursor GddKtCursor do begin if(:Stor1Typ in (1, 4, 5) and :Stor2Typ not in(1, 4, 5)) then -- Возврат из розницы/комиссии на обычный склад update gddkt set Price = :KPriceKt, Nds=:KNdsKt, Akciz=:akciz, ZNBR=:ZNBR, DateReal=:DateReal, Date_Reg=:Date_Reg, SertNbr=:SertNbr, BarCode = case when Trim(CoalEsce(BarCode,''))='' then :BarCode else BarCode end, KPrice = :KPriceKt, KNds=:KNdsKt, TPrice=:TPriceKt, TNds = :TNdsKt where ID = :GddKtID; else begin update gddkt set price = new.price, nds=new.nds, akciz=:akciz, ZNBR=:ZNBR, DateReal=:DateReal, Date_Reg=:Date_Reg, SertNbr=:SertNbr, BarCode = case when Trim(CoalEsce(BarCode,''))='' then :BarCode else BarCode end, KPrice=:KPriceKt, KNds=:KNdsKt, TPrice=:TPriceKt, TNds = :TNdsKt where ID = :GddKtID; end update DgvKt set Summa = Summa, No_LastEdit=1 where ID = :DgvKtID; end end if (New.Price < :PriceKt) then New.Loss=:PriceKt-New.Price; else New.Loss = 0.0; -- складской заказ - ограничение по количеству товара if (New.SzGdsID is not null) then begin -- складской заказ if (:Typ = 11) then begin -- счет на реализацию select zd.Source-zd.RSQuant- CoalEsce((select sum(d.Source) from GddDt D join DgvDt DD on DD.ID=D.DgvKey and DD.Typ=11 and DD.ID<>New.DgvKey where d.SzGdsID=zd.ID),0.0) from StorZDtGds zd where zd.ID=New.SzGdsID into :aQuant; aQuant = CoalEsce(:aQuant, 0.0); if (New.Source > :aQuant) then begin New.Source = :aQuant; end end end -- корректировка остатка в выписанном счете if ( :Typ=11 and (New.Source<>Old.Source /*or New.Quant<>OLd.Quant*/ ) ) then begin New.Quant = New.Source - CoalEsce((select Sum(d.Quant) from gdddt d where d.id=New.GddID and D.DgvKey<>New.DgvKey), 0.0); end end ^ /* Trigger: GDDKTDDU_BI0 */ CREATE TRIGGER GDDKTDDU_BI0 FOR GDDKTDDU ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(GddKtDDU_ID, 1); if (New.Quant is Null) then New.Quant = 0.0; if (New.Price is Null) then New.Price = 0.0; if (New.Nds is Null) then New.Nds = 0.0; if (New.TPrice is Null) then New.TPrice = 0.0; end ^ /* Trigger: GDDKTPARAM_BI */ CREATE TRIGGER GDDKTPARAM_BI FOR GDDKTPARAM ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or (New.ID=0) ) then New.ID = Gen_ID(GddKtParam_ID, 1); end ^ /* Trigger: GDDKTU_BI0 */ CREATE TRIGGER GDDKTU_BI0 FOR GDDKTU ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GddKtU_ID, 1); end ^ /* Trigger: GDDKTZKPARAMS_BI */ CREATE TRIGGER GDDKTZKPARAMS_BI FOR GDDKTZKPARAMS ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(GddKtZkParams_ID, 1); end ^ /* Trigger: GDDKTZKPARAMS_BU */ CREATE TRIGGER GDDKTZKPARAMS_BU FOR GDDKTZKPARAMS ACTIVE BEFORE UPDATE POSITION 0 as begin New.Updated = Current_TimeStamp; end ^ /* Trigger: GDDKT_AFTER_UPDATE */ CREATE TRIGGER GDDKT_AFTER_UPDATE FOR GDDKT ACTIVE AFTER UPDATE POSITION 0 AS Declare Variable DgvDtID integer; Declare Variable GddDtID Integer; declare variable GddKtID integer; Declare Variable DgvDtTyp Integer; Declare Variable StorTyp Integer; declare variable SubTyp integer; Declare Variable Stor1 Integer; Declare Variable Stor2 Integer; Declare Variable QID integer; begin if(New.Price<>Old.Price or New.Nds<>Old.Nds or New.TPrice<>Old.TPrice or New.SizeX <> Old.SizeX or New.SizeY <> Old.SizeY or New.SizeZ <> Old.SizeZ) then begin for select G.ID, G.DgvKey, D.Typ, D.SubTyp, D.Stor, D.StorID From GddDt G left join DgvDt D on D.ID = G.DgvKey where G.GddKey = New.ID into :GddDtID, :DgvDtID, :DgvDtTyp, :SubTyp, :Stor1, :Stor2 as Cursor DtCursor do begin StorTyp=0; if (:DgvDtTyp=1) then begin -- внутренняя передача -- тип склада-получателя Select Typ from StorList where ID = :Stor2 into :StorTyp; end if ((:DgvDtTyp = 1 and :SubTyp <> 2)) then begin for Select K.ID from GddDt D, GddKt K where D.GddKey = New.ID and K.GddKey = D.ID into :GddKtID do begin Update GddKt set SizeX = New.SizeX, SizeY = New.SizeY, SizeZ = New.SizeZ where ID = :GddKtID and (SizeX <> New.SizeX or SizeY <> New.SizeY or SizeZ <> New.SizeZ); end end if((:DgvDtTyp = 1 and :StorTyp not in(1, 4)) or :DgvDtTyp = 8) then begin -- внутр. передача не на розницу/комиссию (на обычный склад) -- списание комплектующих на выпуск изделий Update GddDt set Price = New.Price, Nds = New.Nds where ID=:GddDtID and (Price <> New.Price or Nds <> New.Nds); end else Update GddDt set Price=Price where --Current Of DtCursor; ID=:GddDtID; Update DgvDt Set Summa=Summa, No_LastEdit=1 where --Current Of DtCursor; ID=:DgvDtID; end end if (New.TGrpCode <> CoalEsce(Old.TGrpCode, '')) then begin for select k.ID from gdddt d join gddkt k on k.GddKey=d.id join DgvKt kk on kk.id=k.DgvKey and kk.typ in (1, 2, 3) where d.gddkey=New.ID into :GddKtID do begin update GddKt set TGrpCode = New.TGrpCode where ID=:GddKtID and CoalEsce(TGrpCode, '') <> New.TGrpCode; end end if (New.Quant >= 1.0E-10 and Old.Quant < 1.0E-10) then begin QID = Null; Select ID from GddKtQnt where ID = New.ID into :QID; if (:QID is Null) then begin Select Stor From DgvKt where ID=New.DgvKey into :Stor1; Insert into GddKtQnt (ID, Stor) Values(New.ID, :Stor1); end end if (ABS(New.Quant) < 1.0E-10 and Old.Quant <> 0) then Delete from GddKtQnt where ID=Old.ID; /* количество выпущенных изделий в складских заказах */ if (New.Source <> Old.Source or New.Src_One <> Old.Src_One) then begin if (New.WrGdsID is not Null and Old.WrGdsID is Not Null) then begin if (New.WrGdsID=Old.WrGdsID) then begin Update WorkRequestGds Set WQuant = WQuant - Old.Source + New.Source, WQnt_One = WQnt_One - Old.Src_One + New.Src_One where ID = New.WrGdsID; end end end end ^ /* Trigger: GDDKT_AI0 */ CREATE TRIGGER GDDKT_AI0 FOR GDDKT ACTIVE AFTER INSERT POSITION 0 as declare variable Stor Integer; begin /* вставить в таблицу "товар в наличии" */ if (New.Quant <> 0.0) then begin Select Stor From DgvKt where ID=New.DgvKey into :Stor; Insert into GddKtQnt (ID,Stor) Values (New.ID,:Stor); end /* обновить количество выпущ. изделий в скл. заказе */ if (New.WrGdsID is not Null and (New.Source <> 0.0 or New.Src_One <> 0.0)) then begin Update WorkRequestGds set WQuant = WQuant + New.Source, WQnt_One = WQnt_One + New.Src_One where ID = New.WrGdsID; end end ^ /* Trigger: GDDKT_BD0 */ CREATE TRIGGER GDDKT_BD0 FOR GDDKT ACTIVE BEFORE DELETE POSITION 0 AS begin if (Old.ZMID is not Null) then begin Update WorkZMst Set Quant = Quant-Old.Source, Qnt_One=Qnt_One-Old.Src_One where ID=Old.ZMID; end Delete From WorkZNk where ZKID=OLd.ID; Delete From GddKtQnt where ID=Old.ID; if (Old.WrGdsID is not Null and (Old.Source <> 0.0 or Old.Src_One <> 0.0)) then begin Update WorkRequestGds set WQuant = WQuant - Old.Source, WQnt_One = WQnt_One - Old.Src_One where ID = Old.WrGdsID; end end ^ /* Trigger: GDDKT_BEFORE_INSERT */ CREATE TRIGGER GDDKT_BEFORE_INSERT FOR GDDKT ACTIVE BEFORE INSERT POSITION 0 AS Declare Variable Typ integer; Declare Variable GddKey integer; /* тип склада-получателя */ Declare Variable StorTyp1 integer; /* тип склада-источника */ Declare Variable StorTyp2 integer; declare variable kPrice double precision; declare variable kNds double precision; declare variable SrcKtTyp integer; declare variable TGrpCode varchar(20); begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(GddKt_ID, 1); if (New.TPrice is Null) then New.TPrice = 0.0; if (New.TNds is null) then New.TNds = 0.0; if (New.Price is null) then New.Price = 0.0; if (New.Nds is null) then New.Nds = 0.0; if (New.Akciz is Null) then New.Akciz = 0.0; if (New.Gw is Null) then New.Gw = 0.0; if (New.Tamp is Null) then New.Tamp = 0.0; if (New.NdsProc is Null) then New.NdsProc = 0.0; if (New.AkcizProc is Null) then New.AkcizProc = 0.0; if (New.SkidkaProc is Null) then New.SkidkaProc = 0.0; if (New.Source is Null) then New.Source = 0.0; if (New.Quant is Null) then New.Quant = 0.0; if (New.Src_One is Null) then New.Src_One = 0.0; if (New.Qnt_One is Null) then New.Qnt_One = 0.0; if (New.KPrice is null) then New.KPrice = New.Price; if (New.KNDS is null) then New.KNDS = New.NDS; if (New.TPrice <> 0.0 and New.sPrice = 0.0) then New.sPrice = New.TPrice; if (New.TPrice = 0.0 and New.sPrice = 0.0) then New.sPrice = New.Price; if (New.TNds <> 0.0 and New.sNds = 0.0) then New.sNds = New.TNds; if (New.TNds = 0.0 and New.sNds = 0.0) then New.sNds = New.Nds; if (New.VendorNameID=0) then New.VendorNameID = Null; New.Qnt_One = New.Src_One; if (New.TGrpCode is Null) then New.TGrpCode = ''; select KK.Typ, S1.Typ, S2.Typ from DgvKt KK Left Join StorList S1 on S1.ID=KK.Stor Left Join StorList S2 on S2.ID=KK.StorID where KK.ID = New.DgvKey into :Typ, :StorTyp1, :StorTyp2; if(:Typ = 0 or :Typ = 5) then begin -- оприходование товара, импорта New.KPrice = New.Price; New.KNds = New.Nds; end -- внутр. передача, возврат заказчиком, переоценка if((:Typ=1) or (:Typ=2) or (:Typ=3)) then begin select GddKey from GddDt where ID=New.GddKey into :GddKey; Select kPrice, KNds, TPrice, TNds, ZNbr, TGrpCode from GddKt where ID=:GddKey into :KPrice, :KNds, New.TPrice, New.TNds, New.ZNbr, New.TGrpCode; if (:KPrice is Null) then KPrice = 0.0; if (:KNds is Null) then KNds = 0.0; New.KPrice = :kPrice; New.KNds = :KNds; -- внутр. передача - возврат из розницы / комиссии на Обычный Склад / Склад Готовой Продукции if (:Typ=1 and :StorTyp1 not in (1, 4, 5) and :StorTyp2 in (1, 4, 5)) then begin Select k.Price, k.Nds, KK.Typ from GddDt_SrcKtID (New.GddKey) KS join GddKt K on K.ID=KS.KTID join DgvKt KK on KK.ID=K.DgvKey into New.Price, New.Nds, :SrcKtTyp; if (:SrcKtTyp = 4) then begin -- оприходование готовой продукции end else begin if (:KPrice is Null) then KPrice = 0.0; if (:KNds is Null) then KNds = 0.0; New.Price = :KPrice; New.Nds = :KNds; end end -- возврат заказчиком на розницу/комиссию if (:Typ=2 and :StorTyp1 in (1, 4, 5)) then begin Select K.Price, K.Nds, K.KPrice, K.KNds, K.TPrice, K.TNds, K.ZNbr from GddDt D, GddKt K where D.ID=New.GddKey and K.ID=D.GddKey into New.Price, New.Nds, New.KPrice, New.KNds, New.TPrice, New.TNds, New.ZNbr; end if (:Typ=1 and :StorTyp1=5) then begin -- комиссия (валюта) Select TPrice from GddDt where ID=New.GddKey into New.TPrice; end end -- внутр. передача, возврат заказчиком, переоценка if (New.ZMID is not Null) then begin Update WorkZMst Set Quant = Quant + New.Source, Qnt_One = Qnt_One + New.Src_One where ID=New.ZMID; end end ^ /* Trigger: GDDKT_BEFORE_UPDATE */ CREATE TRIGGER GDDKT_BEFORE_UPDATE FOR GDDKT ACTIVE BEFORE UPDATE POSITION 0 AS Declare Variable Typ integer; Declare Variable GddKey integer; declare variable Stor1 Integer; declare variable Stor2 Integer; declare variable StorTyp1 integer; declare variable StorTyp2 integer; declare variable kPrice double precision; declare variable kNds double precision; declare variable SrcKtTyp integer; begin if (New.TPrice is Null) then New.TPrice = 0.0; if (New.TNds is Null) then New.TNds = 0.0; if (New.KPrice is Null) then New.KPrice = 0.0; if (New.KNds is Null) then New.KNds = 0.0; if (New.Price is Null) then New.Price = 0.0; if (New.Nds is Null) then New.Nds = 0.0; if (New.TGrpCode is Null) then New.TGrpCode = ''; if (New.Quant <> Old.Quant) then begin if (new.Quant < 0.0 or new.Quant is null) then New.Quant = 0.0; if (New.Quant > New.Source) then New.Quant = New.Source; end if (New.Src_One <> Old.Src_One) then begin if (New.Src_One > Old.Src_One) then begin /* увеличение количества */ New.Qnt_One = Old.Qnt_One + (New.Src_One - Old.Src_One); end if (New.Src_One < Old.Src_One) then begin /* уменьшение количества */ if (New.Src_One < (Old.Src_One-Old.Qnt_One)) then /* недопустимо - ограничиваем */ New.Src_One = Old.Src_One-Old.Qnt_One; else /* уменьнаем остаток на уменьшение прихода */ New.Qnt_One = Old.Qnt_One - (Old.Src_One-New.Src_One); end end select KK.Typ, KK.Stor, KK.StorID from dgvkt KK left join DgvDt DD on DD.ID = KK.DgvKey where KK.ID = New.DgvKey into :Typ, :Stor1, :Stor2; Select Typ from StorList where ID=:Stor1 into :StorTyp1; Select Typ from StorList where ID=:Stor2 into :StorTyp2; /* Корректировка входных цен */ if (:Typ=0 or :Typ=5) then begin /* Оприходование Товара, Импорт */ New.KPRICE = New.Price; New.KNDS = New.NDS; end if((:Typ=1)or(:Typ=2)or(:Typ=3)) then begin -- Внутр. передача, Возврат, Переоценка select GddKey from GddDt where ID=New.GddKey into :GddKey; Select kPrice, KNds, TPrice, TNds, TGrpCode from GddKt where ID=:GddKey into :KPrice, :KNds, New.TPrice, New.TNds, New.TGrpCode; if (:KPrice is Null) then KPrice = 0.0; if (:KNds is Null) then KNds = 0.0; New.KPrice = :KPrice; New.KNds = :KNds; if (:Typ=2) then begin New.Price = :KPrice; New.Nds = :KNds; end if (:Typ=1 and :StorTyp1 not in (1, 4, 5) and :StorTyp2 in (1, 4, 5)) then begin -- внутр. передача - возврат из розницы / комиссии на Обычный Склад / Склад Готовой Продукции Select k.Price, k.Nds, KK.Typ from GddDt_SrcKtID (New.GddKey) KS join GddKt K on K.ID=KS.KTID join DgvKt KK on KK.ID=K.DgvKey into New.Price, New.Nds, :SrcKtTyp; if (:SrcKtTyp = 4) then begin -- оприходование готовой продукции end else begin if (:KPrice is Null) then KPrice = 0.0; if (:KNds is Null) then KNds = 0.0; New.Price = :KPrice; New.Nds = :KNds; end end if (:Typ=2) then begin -- возврат товара заказчиком -- на розничный склад Select K.Price, K.Nds, K.KPrice, K.KNds, K.TPrice, K.TNds from GddDt D, GddKt K where D.ID=New.GddKey and K.ID=D.GddKey into New.Price, New.NDS, New.KPrice, New.KNds, New.TPrice, New.TNds; end if (:Typ=3) then begin -- переоценка Select D.Price, D.Nds, K.KPrice, K.KNds, K.TPrice, K.TNds from GddDt D, GddKt K where D.ID=New.GddKey and K.ID=D.GddKey into New.Price, New.Nds, New.KPrice, New.KNds, New.TPrice, New.TNds; end if (:Typ = 1 or :Typ = 3) then begin -- внутр. передача, переоценка Select Quant from GddDt where ID=New.GddKey into New.Source; end if (:Typ=1 and :StorTyp1=5) then begin -- комиссия (валюта) Select TPrice from GddDt where ID=New.GddKey into New.TPrice; end end if ((New.ZMID<>Old.ZMID) or (New.Source<>Old.Source) or (New.Src_One<>Old.Src_One) ) then begin if (OLd.ZMID is not Null) then Update WorkZMst Set Quant = Quant-Old.Source, Qnt_One=Qnt_One-Old.Src_One where ID=Old.ZMID; if (New.ZMID is not Null) then Update WorkZMst Set Quant = Quant+New.Source, Qnt_One=Qnt_One+OLd.Src_One where ID=New.ZMID; end -- блокировать изменение количества для изделий складского заказа if (New.Source <> Old.Source and New.WrGdsID is not Null) then New.Source = Old.Source; end ^ /* Trigger: GDSKTREQGDS_BI */ CREATE TRIGGER GDSKTREQGDS_BI FOR GDSKTREQGDS ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(GdsKtReqGds_ID, 1); New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 304); end ^ /* Trigger: GDSKTREQ_BI */ CREATE TRIGGER GDSKTREQ_BI FOR GDSKTREQ ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(GdsKtReq_ID, 1); New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 303); end ^ /* Trigger: GDSKTREQ_BU */ CREATE TRIGGER GDSKTREQ_BU FOR GDSKTREQ ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: GDSPARAMGDSREF_BI0 */ CREATE TRIGGER GDSPARAMGDSREF_BI0 FOR GDSPARAMGDSREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GdsParamGdsRef_ID, 1); end ^ /* Trigger: GDSPARAMGDSREF_BU0 */ CREATE TRIGGER GDSPARAMGDSREF_BU0 FOR GDSPARAMGDSREF ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: GDSPARAMGRPREF_BI0 */ CREATE TRIGGER GDSPARAMGRPREF_BI0 FOR GDSPARAMGRPREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GdsParamGrpRef_ID, 1); end ^ /* Trigger: GDSPARAMGRPREF_BU0 */ CREATE TRIGGER GDSPARAMGRPREF_BU0 FOR GDSPARAMGRPREF ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: GDSPARAMGRP_BI0 */ CREATE TRIGGER GDSPARAMGRP_BI0 FOR GDSPARAMGRP ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GdsParamGrp_ID, 1); end ^ /* Trigger: GDSPARAMGRP_BU0 */ CREATE TRIGGER GDSPARAMGRP_BU0 FOR GDSPARAMGRP ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: GDSPARAMPRM_BI0 */ CREATE TRIGGER GDSPARAMPRM_BI0 FOR GDSPARAMPRM ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GdsParamPrm_ID, 1); end ^ /* Trigger: GDSPARAMPRM_BU0 */ CREATE TRIGGER GDSPARAMPRM_BU0 FOR GDSPARAMPRM ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: GDSPARAMVAL_BI0 */ CREATE TRIGGER GDSPARAMVAL_BI0 FOR GDSPARAMVAL ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(GdsParamVal_ID, 1); end ^ /* Trigger: GDSPARAMVAL_BU0 */ CREATE TRIGGER GDSPARAMVAL_BU0 FOR GDSPARAMVAL ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: GOODSGROUPS_AU0 */ CREATE TRIGGER GOODSGROUPS_AU0 FOR GOODSGROUPS ACTIVE AFTER UPDATE POSITION 0 AS begin if (Old.WorkMainGrp = 0 and New.WorkMainGrp=1 and New.ParentID is not Null) then begin Update GoodsGroups set WorkMainGrp = 1 where ID = New.ParentID and WorkMainGrp <> 1; end if (Old.WorkMainGrp = 1 and New.WorkMainGrp=0 and New.ParentID is not Null) then begin Update GoodsGroups GG Set WorkMainGrp = 0 where ID = New.ParentID and WorkMainGrp = 1 and not exists (Select G.ID from WorkMain M, Goods G where G.Owner = GG.ID and M.GodsID = G.ID) and not Exists (Select GG1.ID from GoodsGroups GG1 where GG1.ParentID = GG.ID and GG1.WorkMainGrp = 1); end end ^ /* Trigger: GOODSGROUPS_BU0 */ CREATE TRIGGER GOODSGROUPS_BU0 FOR GOODSGROUPS ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: GOODSGRP_AFTER_DELETE */ CREATE TRIGGER GOODSGRP_AFTER_DELETE FOR GOODSGRP ACTIVE AFTER DELETE POSITION 0 as Declare Variable gID integer; begin if(old.owner is null) then begin /* SubGroup */ for select ID from GoodsGrp where owner=Old.ID into :gID do begin Update Goods Set Group1=null, Group2=Null where Group1=:gID; Delete From GoodsGrp where ID=:gID; end end if(old.owner is not null) then begin /* Group */ update goods set Group1=Null, Group2=Null where Group1=Old.ID; end end ^ /* Trigger: GOODS_AI0 */ CREATE TRIGGER GOODS_AI0 FOR GOODS ACTIVE AFTER INSERT POSITION 0 AS begin if (New.Grou_=0) then begin /* группа товара */ /* права доступа */ Insert Into UserGGrp(ID, UserID, GGrpID, UserName) Select Gen_ID(UserGGrp_ID,1), ID, New.ID, New.UserName From UserList; /* справочник групп */ Insert into GoodsGroups(ID, ParentID, Name, Price_Include, Price_NoCalc, DCrdProc, UserName, Cod) Values(New.ID, New.Owner, New.Name, New.Price_Include, New.Price_NoCalc, New.DCrdProc, New.UserName, New.Cod); end end ^ /* Trigger: GOODS_AU0 */ CREATE TRIGGER GOODS_AU0 FOR GOODS ACTIVE AFTER UPDATE POSITION 0 AS begin if (New.Grou_= 0 and Old.Grou_ is Null) then Insert Into UserGGrp(ID, UserID, GGrpID, UserName) Select Gen_ID(UserGGrp_ID, 1), ID, New.ID, New.username From UserList; if (New.Grou_=0 and (New.ID <> Old.ID or New.Owner <> OLd.Owner or New.Name <> Old.Name or New.Price_Include <> Old.Price_include or New.Price_NoCalc <> Old.Price_NoCalc or New.DCrdProc <> Old.DCrdProc or New.UserName <> OLd.UserName or New.Cod <> Old.Cod or (New.Owner is Null and Old.owner is not Null) or (New.Owner is not Null and Old.Owner is Null))) then begin Update GoodsGroups Set ID=New.ID, ParentID=New.Owner, Name = New.Name, Price_Include = New.Price_Include, Price_NoCalc = New.Price_NoCalc, DCrdProc = New.DCrdProc, UserName = New.UserName, Cod = New.Cod where ID = Old.ID; end if (New.Owner <> Old.Owner) then begin /* старая группа */ Update GoodsGroups GG Set GG.WorkMainGrp = 0 where GG.ID = Old.Owner and GG.WorkMainGrp = 1 and not Exists (Select G.ID from WorkMain M, Goods G where G.Owner = Old.Owner and M.GodsID = G.ID) and not Exists (Select GG1.ID from GoodsGroups GG1 where GG1.ParentID=GG.ID and GG1.WorkMainGrp = 1); /* новая группа */ Update GoodsGroups GG set WorkMainGrp = 1 where GG.ID=New.Owner and WorkMainGrp = 0 and Exists (Select M.ID from WorkMain M where M.GodsID = New.ID); end end ^ /* Trigger: GOODS_BD0 */ CREATE TRIGGER GOODS_BD0 FOR GOODS ACTIVE BEFORE DELETE POSITION 0 as declare variable ID integer; declare variable Accn varchar(5); begin /* Начальное сальдо (аналитика по Товарам) */ Delete From Sub where An=2 and SubKey = Old.ID; ID = Null; Accn = Null; select ID, Accn from SUB where An=2 and SubKey=Old.ID into :ID, :Accn; if (:ID is not Null) then exception Common_Exception 'По данной записи занесено начальное сальдо по счету: ' || :Accn; if (OLd.Grou_ = 0) then Delete from GoodsGroups where ID = Old.ID; end ^ /* Trigger: GOODS_BI0 */ CREATE TRIGGER GOODS_BI0 FOR GOODS ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(Goods_ID, 1); if (New.Price_Include is Null) then New.Price_Include = 1; if (New.Price_NoCalc is Null) then New.Price_NoCalc = 0; if (New.DCrdProc is Null) then New.DCrdProc = 0.0; if (New.Name is Null) then New.Name = ''; if (New.Code is Null) then New.Code = ''; if (New.Cod is Null) then New.Cod = ''; if (New.Grou_ = 1 and (New.Cod = '' or New.Cod is Null)) then begin Select Cod from Goods_CodAssign(New.ID, New.Owner) into New.Cod; end if (New.Owner = New.ID) then New.Owner = Null; New.One = CoalEsce((Select Name from HbOne where ID=New.OneID), ''); end ^ /* Trigger: GOODS_BU0 */ CREATE TRIGGER GOODS_BU0 FOR GOODS ACTIVE BEFORE UPDATE POSITION 0 as declare variable Owner Integer; begin New.LastEdit = Current_TimeStamp; if (New.Price_Include is Null) then New.Price_Include = 1; if (New.Price_NoCalc is Null) then New.Price_NoCalc = 0; if (New.DCrdProc is Null) then New.DCrdProc = 0.0; if (New.Name is Null) then New.Name = ''; if (New.Code is Null) then New.Code = ''; if (New.Cod is Null) then New.Cod = ''; /* проверка циклов в дереве групп */ if (New.Grou_=0 and New.Owner=New.ID) then begin New.Owner = Old.Owner; end if ((New.Grou_=0) and (New.Owner is not Null) and (Old.Owner is Null or New.Owner <> OLd.Owner)) then begin Owner = New.Owner; while (:Owner is not Null) do begin Select Owner from Goods where ID=:Owner and Grou_=0 into :Owner; if (:Owner=New.ID) then New.Owner = OLd.Owner; end end New.One = CoalEsce((Select Name from HbOne where ID=New.OneID), ''); end ^ /* Trigger: GOODS_DECRNORM_BI */ CREATE TRIGGER GOODS_DECRNORM_BI FOR GOODS_DECRNORM ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID = 0 or New.ID is Null) then New.ID = Gen_ID(Goods_DecrNorm_ID, 1); end ^ /* Trigger: HBGDDDU_BI0 */ CREATE TRIGGER HBGDDDU_BI0 FOR HBGDDDU ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(HbGddDu_ID, 1); if (New.Price is Null) then New.Price = 0.0; end ^ /* Trigger: HBKTSU_BI */ CREATE TRIGGER HBKTSU_BI FOR HBKTSU ACTIVE BEFORE INSERT POSITION 0 as begin if ((New.ID Is Null) or (New.ID=0) ) then New.ID=Gen_ID(HbKtSu_ID, 1); New.One = CoalEsce((Select Name from HbOne where ID=New.OneID), ''); end ^ /* Trigger: HBKTSU_BU */ CREATE TRIGGER HBKTSU_BU FOR HBKTSU ACTIVE BEFORE UPDATE POSITION 0 AS BEGIN New.LastEdit = Current_TimeStamp; New.One = CoalEsce((Select Name from HbOne where ID=New.OneID), ''); END ^ /* Trigger: HBONE_AU */ CREATE TRIGGER HBONE_AU FOR HBONE ACTIVE AFTER UPDATE POSITION 0 as begin if (New.Name != Old.Name) then begin Update HbServU set One=New.Name where OneID=New.ID; Update Goods set One=New.Name where OneID=New.ID; end end ^ /* Trigger: HBONE_BI */ CREATE TRIGGER HBONE_BI FOR HBONE ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or (New.ID=0) ) then New.ID = Gen_ID(HbOne_ID, 1); end ^ /* Trigger: HBONE_BU */ CREATE TRIGGER HBONE_BU FOR HBONE ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: HBPRSNTEST_BI */ CREATE TRIGGER HBPRSNTEST_BI FOR HBPRSNTEST ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(HBPRSNTEST_ID, 1); END ^ /* Trigger: HBPRSNTEST_BU0 */ CREATE TRIGGER HBPRSNTEST_BU0 FOR HBPRSNTEST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: HBSERVUGRP_BI0 */ CREATE TRIGGER HBSERVUGRP_BI0 FOR HBSERVUGRP ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(HbServU_ID, 1); if (New.ParentID = New.ID) then New.ParentID = Null; end ^ /* Trigger: HBSERVUGRP_BU0 */ CREATE TRIGGER HBSERVUGRP_BU0 FOR HBSERVUGRP ACTIVE BEFORE UPDATE POSITION 0 AS begin if (New.ParentID = New.ID) then New.ParentID = OLd.ParentID; end ^ /* Trigger: HBSERVU_BI */ CREATE TRIGGER HBSERVU_BI FOR HBSERVU ACTIVE BEFORE INSERT POSITION 0 as begin if ((New.ID Is Null) or (New.ID=0) ) then New.ID=Gen_ID(HbServU_ID, 1); New.One = CoalEsce((Select Name from HbOne where ID=New.OneID), ''); end ^ /* Trigger: HBSERVU_BU */ CREATE TRIGGER HBSERVU_BU FOR HBSERVU ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = Current_TimeStamp; New.One = CoalEsce((Select Name from HbOne where ID=New.OneID), ''); end ^ /* Trigger: HB_VEHICLE_BI */ CREATE TRIGGER HB_VEHICLE_BI FOR HB_VEHICLE ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(HB_Vehicle_ID, 1); end ^ /* Trigger: HB_VEHICLE_BU */ CREATE TRIGGER HB_VEHICLE_BU FOR HB_VEHICLE ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: INFOSRC_BI */ CREATE TRIGGER INFOSRC_BI FOR INFOSRC ACTIVE BEFORE INSERT POSITION 0 as begin if ( new.id is null or New.ID=0 ) then new.id = gen_id(infosrc_id,1); end ^ /* Trigger: INFOSRC_BU */ CREATE TRIGGER INFOSRC_BU FOR INFOSRC ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: INVOPISDATA_BI0 */ CREATE TRIGGER INVOPISDATA_BI0 FOR INVOPISDATA ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(InvOpisData_ID, 1); end ^ /* Trigger: INVOPISDATA_BU0 */ CREATE TRIGGER INVOPISDATA_BU0 FOR INVOPISDATA ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: INVOPISHEADER_BI0 */ CREATE TRIGGER INVOPISHEADER_BI0 FOR INVOPISHEADER ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(InvOpisHeader_ID, 1); if (New.Nbr is Null or New.Nbr = '') then New.Nbr = New.ID; if (New.DAT_ is Null) then New.DAT_ = Current_Date; end ^ /* Trigger: INVOPISHEADER_BU0 */ CREATE TRIGGER INVOPISHEADER_BU0 FOR INVOPISHEADER ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: KASSACCR_BI */ CREATE TRIGGER KASSACCR_BI FOR KASSACCR ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(KassAcCr_ID, 1); end ^ /* Trigger: KASSAVCR_AD0 */ CREATE TRIGGER KASSAVCR_AD0 FOR KASSAVCR ACTIVE AFTER DELETE POSITION 0 as begin update KassAvList Set ESUMMA=ESUMMA where ID=Old.KassAvID; update KassData Set Summ=Summ where ID=Old.KassDtID; end ^ /* Trigger: KASSAVCR_AI0 */ CREATE TRIGGER KASSAVCR_AI0 FOR KASSAVCR ACTIVE AFTER INSERT POSITION 0 as begin update KassAvList Set ESUMMA=ESUMMA where ID=New.KassAvID; update KassData Set Summ=Summ where ID=New.KassDtID; end ^ /* Trigger: KASSAVCR_BI0 */ CREATE TRIGGER KASSAVCR_BI0 FOR KASSAVCR ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(KassAvCr_ID, 1); end ^ /* Trigger: KASSAVDATA_BI0 */ CREATE TRIGGER KASSAVDATA_BI0 FOR KASSAVDATA ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(KassAvData_ID, 1); end ^ /* Trigger: KASSAVLIST_AFTER_INSERT */ CREATE TRIGGER KASSAVLIST_AFTER_INSERT FOR KASSAVLIST ACTIVE AFTER INSERT POSITION 0 AS declare variable DID integer; declare variable OperID integer; begin if (New.OperID is Not Null and New.OperID <> 0) then Execute Procedure KassAvList_GenAccnRec New.ID; else begin for select ID,OperID from KassAvData where AVID=New.ID into :DID, :OperID do begin if (:OperID is not null and :OperID <> 0) then Execute Procedure KassAvData_GenAccnRec (:DID); end end end ^ /* Trigger: KASSAVLIST_AU0 */ CREATE TRIGGER KASSAVLIST_AU0 FOR KASSAVLIST ACTIVE AFTER UPDATE POSITION 0 AS declare variable DID integer; declare variable OperID integer; begin Execute Procedure KassAvList_DelAccnRec Old.ID; if (New.OperID is Not Null and New.OperID <> 0) then Execute Procedure KassAvList_GenAccnRec New.ID; else begin for select ID,OperID from KassAvData where AVID=New.ID into :DID, :OperID do begin if (:OperID is not null and :OperID <> 0) then Execute Procedure KassAvData_GenAccnRec (:DID); end end end ^ /* Trigger: KASSAVLIST_BEFORE_DELETE */ CREATE TRIGGER KASSAVLIST_BEFORE_DELETE FOR KASSAVLIST ACTIVE BEFORE DELETE POSITION 0 AS declare variable AccnID integer; declare variable CrID integer; begin Execute Procedure KassAvList_DelAccnRec Old.ID; Delete From KassAvData where AVID=Old.ID; end ^ /* Trigger: KASSAVLIST_BI0 */ CREATE TRIGGER KASSAVLIST_BI0 FOR KASSAVLIST ACTIVE BEFORE INSERT POSITION 0 as declare variable BBSumm Double Precision; declare variable OurOrgnID integer; declare variable NID integer; begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; OurOrgnID = New.OurOrgnID; -- номер документа if (New.Nbr is Null or New.Nbr = '') then begin -- exception common_exception 'генерация номера' ; Select ID from Nbr_Gen_Nbr('Nbr_KassAV_Nbr', :OurOrgnID) into :NID; if (:NID > 0) then New.Nbr = :NID; else New.Nbr = New.ID; end if (New.CurrTyp is Null) then begin New.BSumma=New.BSumma; Select Sum(V.Summa) from kassavlist V where V.CurrTyp is Null and V.PrsnID=New.PrsnID and ((V.Dat_ < New.Dat_) or (V.Dat_ = New.Dat_ and V.ID < New.ID)) into :BBSumm; if (:BBSumm is Null) then BBSumm = 0.0; New.BSumma = :BBSumm; end New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 191); end ^ /* Trigger: KASSAVLIST_BU0 */ CREATE TRIGGER KASSAVLIST_BU0 FOR KASSAVLIST ACTIVE BEFORE UPDATE POSITION 0 as declare variable sSumma Double Precision; declare variable scSumma Double Precision; begin if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 191); end Select Sum(Summa), Sum(cSumma) from KassAvCr where KASSAVID = New.ID into :sSumma, :scSumma; if (:sSumma is null) then sSumma = 0.0; if (:scSumma is null) then scSumma = 0.0; New.ESumma = -New.Summa-:sSumma; New.ECSumma = -New.cSumma-:scSumma; Select Sum(Summa), Sum(cSumma) from KassAvCr where KassAvID = New.ID and (Summa < 0 or cSumma < 0) into :sSumma, :scSumma; if (:sSumma is Null) then sSumma = 0; if (:scSumma is Null) then scSumma = 0; New.BSumma = -:sSumma; New.BCSumma = -:scSumma; end ^ /* Trigger: KASSDATA_AD0 */ CREATE TRIGGER KASSDATA_AD0 FOR KASSDATA ACTIVE AFTER DELETE POSITION 0 AS begin if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: KASSDATA_AFTER_INSERT */ CREATE TRIGGER KASSDATA_AFTER_INSERT FOR KASSDATA ACTIVE AFTER INSERT POSITION 0 AS begin if (new.operid is not null and new.operid <> 0) then execute procedure kassdata_genaccnrec(new.id); if (New.AVID is not Null) then begin insert into KassAvCr(KassDtID, KassAvID, Summa) values(New.ID, New.AvID, New.Summa); end end ^ /* Trigger: KASSDATA_AFTER_UPDATE */ CREATE TRIGGER KASSDATA_AFTER_UPDATE FOR KASSDATA ACTIVE AFTER UPDATE POSITION 0 as declare variable DataID integer; declare variable KassID integer; declare variable OperID integer; begin -- передача в другую кассу KassID = Null; OperID = Null; select K.intrkass, K.introp from kasslist K, acoprlst O where K.ID = New.KassID and O.ID = K.IntrOp and New.OperID is not Null and K.IntrKass is not Null and K.IntrOp = New.OperID and K.IntrOp is not Null and (not (New.KassDataKey is Null and Old.KassDataKey is not Null)) into :KassID, :OperID; if (:KassID is not Null and :OperID is not Null) then begin DataID = Null; select ID from kassdata where id=new.kassdatakey into :dataid; if (:DataID is not null) then -- запись есть Update KassData Set Dat_=New.Dat_, Summa=-New.Summa, cSumma=-New.cSumma, Curs=New.Curs, CurrTyp=New.CurrTyp, PrsnID=New.PrsnID, OrgnID=New.OrgnID, Nbr=New.Nbr, Comment=New.Comment, Subscribe = New.Subscribe, KUserID = New.KUserID, UserName = New.UserName, CommentID = New.CommentID where ID=:DataID and (Dat_ <> New.Dat_ or Summa <> -New.Summa or CoalEsce(PrsnID, 0) <> CoalEsce(New.PrsnID, 0) or Comment <> New.Comment or Nbr <> New.Nbr or cSumma <> -New.cSumma or CoalEsce(Curs, 0) <> CoalEsce(New.Curs, 0) or CoalEsce(CurrTyp, 0) <> CoalEsce(New.CurrTyp, 0) or CoalEsce(OrgnID, 0) <> CoalEsce(New.OrgnID, 0) or Subscribe <> New.Subscribe or CoalEsce(KUserID, 0) <> CoalEsce(New.KUserID, 0) or (UserName <> New.UserName) or CoalEsce(CommentID, 0) <> CoalEsce(New.CommentID, 0)); end -- прием из другой кассы KassID = Null; OperID = Null; select K.OutKass, K.OutOp from KassData K1 join kasslist K on K.ID = K1.KassID join acoprlst O on O.ID = K.OutOp where K1.ID = New.ID and K1.OperID is not Null and K.OutKass is not Null and K.OutOp = New.OperID and K.OutOp is not Null and (not (New.KassDataKey is Null and Old.KassDataKey is not Null)) into :KassID, :OperID; if (:KassID is not Null and :OperID is not Null) then begin DataID = Null; select ID from kassdata where id=new.kassdatakey into :dataid; if (:DataID is not null) then -- запись есть Update KassData Set Dat_=New.Dat_, Summa=-New.Summa, cSumma=-New.cSumma, Curs=New.Curs, CurrTyp=New.CurrTyp, PrsnID=New.PrsnID, OrgnID=New.OrgnID, Nbr=New.Nbr, /*Comment=New.Comment,*/ Subscribe = New.Subscribe, KUserID = New.KUserID, UserName = New.UserName, CommentID = New.CommentID where ID = :DataID and (Dat_ <> New.Dat_ or Summa <> -New.Summa or CoalEsce(PrsnID, 0) <> CoalEsce(New.PrsnID, 0) or /*Comment <> New.Comment or*/ Nbr <> New.Nbr or cSumma <> -New.cSumma or CoalEsce(Curs, 0) <> CoalEsce(New.Curs, 0) or CoalEsce(CurrTyp, 0) <> CoalEsce(New.CurrTyp, 0) or CoalEsce(OrgnID, 0) <> CoalEsce(New.OrgnID, 0) or Subscribe <> New.Subscribe or CoalEsce(KUserID, 0) <> CoalEsce(New.KUserID, 0) or (UserName <> New.UserName) or CoalEsce(CommentID, 0) <> CoalEsce(New.CommentID, 0)); end DataID = Null; Select ID from KassData where KassDataKey = New.ID into :DataID; if (:DataID is not Null) then begin Update KassData set Subscribe = New.Subscribe, KUserID = New.KUserID where ID = :DataID and (Subscribe <> New.Subscribe or CoalEsce(KUserID, 0) <> CoalEsce(New.KUserID, 0)); end if (Old.AVID is Null and New.AVID is not Null) then begin insert into KassAvCr(KassDtID, KassAvID, Summa) values(New.ID, New.AvID, New.Summa); end execute procedure kassdata_delaccnrec(new.id); if (new.operid is not null and new.operid <> 0) then execute procedure kassdata_genaccnrec(new.id); end ^ /* Trigger: KASSDATA_AU0_BDG */ CREATE TRIGGER KASSDATA_AU0_BDG FOR KASSDATA ACTIVE AFTER UPDATE POSITION 1 AS declare variable updflag integer; begin updflag = 0; if ((New.DAT_ <> Old.DAT_) or (New.DAT_ is Null and Old.DAT_ is not Null) or (New.DAT_ is not Null and Old.DAT_ is Null) ) then updflag = 1; if (CoalEsce(New.Nbr,'') <> CoalEsce(Old.Nbr,'')) then updflag = 1; if (CoalEsce(New.Summa,0) <> CoalEsce(Old.Summa,0)) then updflag = 1; if (CoalEsce(New.CSumma,0) <> CoalEsce(Old.CSumma,0)) then updflag = 1; if (CoalEsce(New.Curs,0) <> CoalEsce(Old.Curs,0)) then updflag = 1; if (CoalEsce(New.CurrTyp,0) <> CoalEsce(Old.CurrTyp,0)) then updflag = 1; if (CoalEsce(New.OrgnID,0) <> CoalEsce(Old.OrgnID,0)) then updflag = 1; if (CoalEsce(New.Comment,'') <> CoalEsce(Old.Comment,'')) then updflag = 1; update obj_class set bdg_state = 3 where :updflag=1 and id=new.objid and bdg_state in (1, 4); end ^ /* Trigger: KASSDATA_BEFORE_DELETE */ CREATE TRIGGER KASSDATA_BEFORE_DELETE FOR KASSDATA ACTIVE BEFORE DELETE POSITION 0 AS declare variable ID integer; declare variable AccnKey integer; begin if (old.storkey is not null) then delete from sale where id=old.storkey; if (old.salektkey is not null) then delete from salekt where id=old.salektkey; execute procedure kassdata_delaccnrec(old.id); if (old.kassdatakey <> 0 and old.kassdatakey is not null) then Delete From KassData where ID=Old.KassDataKey; if(Old.Deleted is Null or Old.Deleted=0) then update KassDays set Summa=Summa-Old.Summa, cSumma=cSumma-Old.cSumma where Dat_>=Old.Dat_ and KassID = Old.KassID; for select ID, AccnKey from KassAcCr where KassKey = Old.ID into :ID, :AccnKey do begin end end ^ /* Trigger: KASSDATA_BEFORE_INSERT */ CREATE TRIGGER KASSDATA_BEFORE_INSERT FOR KASSDATA ACTIVE BEFORE INSERT POSITION 0 AS Declare Variable dDate Date; Declare Variable pDate Date; Declare Variable dSumma Double Precision; declare variable dCSumma double precision; declare variable OperID integer; declare variable KassID integer; declare variable DataID integer; declare variable SaleDtID integer; declare variable SaleKtID integer; declare variable CTyp integer; Declare Variable Curs double precision; Declare variable cSumma double precision; Declare Variable OurOrgnID integer; declare variable ObjID integer; declare variable Obj_Typ integer; declare variable Comment varchar(512); declare variable AVID integer; declare variable MakeAObyRKO integer; declare variable AvTyp integer; declare variable AvComment varchar(255); declare variable Appendix varchar(255); declare variable AutoNbrID integer; begin if (New.ID is Null) then New.ID = Gen_ID(KassData_ID, 1); New.LastEdit = Current_TimeStamp; if (New.Summa > 0.0) then Obj_Typ = 194; else Obj_Typ = 195; ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(:ObjID, :Obj_Typ); New.ObjID = :ObjID; if (New.CurrTyp is Null) then begin New.CSumma = 0.0; New.Curs = 0.0; end New.Summ = New.Summa; New.CSumm = New.CSumma; /* формирование оплаты Дт/Кт - (включать в расчеты с контрагентами) */ if (New.KassSale = 1 and New.Deleted = 0) then begin Select OurOrgnID from KassList where ID = New.KassID into :OurOrgnID; if (New.Summa > 0.0) then begin /* приход - оплату в дебиторы */ SaleDtID = Gen_ID(Sale_ID, 1); if (New.CurrTyp is Null) then begin CTyp = 0; cSumma = 0.0; Curs = 0.0; end else begin CTyp = 1; cSumma = New.cSumma; Curs = New.Curs; end insert into Sale(ID, Nbr, DAT_, Summa, Summ, Comment, NameID, PrsnID, UserName, CTyp, CurrTyp, Curs, cSumma, cSumm, OurOrgnID) Values(:SaleDtID, New.Nbr, New.Dat_,New.Summa, New.Summa, New.Comment, New.OrgnID, New.PrsnID, New.UserName, :CTyp, New.CurrTyp, :Curs, :cSumma, :cSumma, :OurOrgnID); New.StorKey = :SaleDtID; end if (New.Summa < 0.0) then begin /* расход - оплату в кредиторы */ SaleKtID = Gen_ID(SaleKt_ID, 1); if (New.CurrTyp is Null) then begin CTyp = 0; cSumma = 0.0; Curs = 0.0; end else begin CTyp = 1; cSumma = -New.cSumma; Curs = New.Curs; end insert into SaleKt(ID, Nbr, DAT_, SaleDate, Summa, Summ, Comment, NameID, PrsnID, UserName, CTyp, CurrTyp, Curs, cSumma, cSumm, OurOrgnID) Values(:SaleKtID, New.Nbr, New.Dat_, New.Dat_,-New.Summa, -New.Summa, New.Comment, New.OrgnID, New.PrsnID, New.UserName, :CTyp, New.CurrTyp, :Curs, :cSumma, :cSumma, :OurOrgnID); New.SaleKtKey = :SaleKtID; end end /* Создать / Обновить День */ Select DAT_ From KassDays where KassID=New.KassID and DAT_=New.Dat_ into :dDate; if(:dDate is Null) then begin /* день отсутствует */ Select Max(Dat_) from KassDays /* ищем предыдущий день (остаток по кассе) */ where KassID=New.KassID and Dat_ < New.Dat_ into :pDate; if(:pDate is Null) then begin dSumma=0.0; dCSumma=0.0; /* предыдущий день не существует */ end else begin /* выбираем остаток по кассе из предыдущего дня */ Select Summa, cSumma from KassDays where KassID=New.KassID and Dat_=:pDate into :dSumma,:dCSumma; end /* формируем день для текущего кассового ордера */ insert Into KassDays(KassID, DAT_, Summa, Summ, CSumma, UserName) Values(New.KassID,New.Dat_,:dSumma,0.0,:dCSumma, New.UserName); end if (New.Deleted is Null or New.Deleted=0) then Update KassDays set Summa=Summa+New.Summa, cSumma=cSumma+New.cSumma, UserName=New.UserName where KassID=New.KassID and Dat_>= New.Dat_; -- передача в другую кассу - формируем приходный ордер for select K.IntrKass, K.IntrOp from KassList K, AcOprLst O where K.ID = New.KassID and K.IntrOp = New.OperID and New.OperID is not Null and K.IntrOp is not Null and K.IntrKass is not Null and O.ID = K.IntrOp into :KassID, :OperID do begin DataID = Gen_ID(KassData_ID, 1); new.KassDataKey = :DataID; select CoalEsce(New.Comment, '') || ' передано из кассы: ' || k.name || ' документ № ' || New.Nbr || ' от ' || (select result from f_day(new.dat_)) || '.' || (select result from f_month(new.dat_)) || '.' || (select result from f_year(new.dat_)) || '.' from kasslist k where k.id = new.kassid into :Comment; Comment = SubString(:Comment from 1 for 255); Appendix = :Comment; insert into KassData(ID,Dat_,KassID,Summa,CSumma,Curs,CurrTyp, Appendix, PrsnID,OrgnID,Comment,Nbr,UserName,Serial, CommentID, ContactID) values(:DataID,New.Dat_,:KassID,-New.Summa,-New.CSumma,New.Curs,New.CurrTyp, :Appendix, New.PrsnID,New.OrgnID,:Comment,New.Nbr,New.UserName,New.Serial, New.CommentID, New.ContactID); end -- прием из другой кассы - формируем расходный ордер for select K.OutKass, K.OutOp from KassList K, AcOprLst O where K.ID = New.KassID and K.OutOp = New.OperID and New.OperID is not Null and K.OutOP is not Null and K.OutKass is not Null and O.ID = K.OutOp into :KassID, :OperID do begin DataID = Gen_ID(KassData_ID, 1); new.KassDataKey = :DataID; select CoalEsce(New.Comment, '') || ' передано из кассы: ' || k.name || ' документ № ' || New.Nbr || ' от ' || (select result from f_day(new.dat_)) || '.' || (select result from f_month(new.dat_)) || '.' || (select result from f_year(new.dat_)) || '.' from kasslist k where k.id = new.kassid into :Comment; Comment = SubString(:Comment from 1 for 255); Appendix = :Comment; insert into KassData(ID, Dat_, KassID, Summa, CSumma, Curs, CurrTyp, PrsnID,OrgnID, Comment, Nbr, UserName, Serial, CommentID, ContactID, Appendix) values(:DataID, New.Dat_, :KassID, -New.Summa, -New.CSumma, New.Curs, New.CurrTyp, New.PrsnID, New.OrgnID, :Comment, New.Nbr, New.UserName, New.Serial, New.CommentID, New.ContactID, :Appendix); end if (New.Summa < 0.0 and New.Typ in (1, 2)) then begin select OurOrgnID from KassList where ID = New.KassID into :OurOrgnID; select Val from SysConst where Name = 'MakeAObyRKO' and OurOrgnID = :OurOrgnID into :MakeAObyRKO; if (:MakeAObyRKO = 1) then begin AVID = Gen_ID(KassAvList_ID, 1); AvTyp = 0; if (New.Typ = 1) then begin AvTyp = 0; AvComment = 'Хоз. нужды'; end if (New.Typ = 2) then begin AvTyp = 1; AvComment = 'Командировки'; end insert into KassAVList(ID, OurOrgnID, DAT_, Nbr, UserName, PrsnID, Typ, Summa, ESumma, Comment) values(:AVID, :OurOrgnID, New.Dat_, New.Nbr, New.UserName, New.PrsnID, :AvTyp, -New.Summa, New.Summa, :AvComment); insert into KassAvData(AVID, DAT_, Comment, Summa, Nds) values(:AVID, New.Dat_, '...', -New.Summa, 0.0); New.AVID = :AVID; end end select AutoNbrID from KassList where ID=New.KassID into :AutoNbrID; AutoNbrID = CoalEsce(AutoNbrID, 0); if (:AutoNbrID = 1) then New.Nbr = New.ID; end ^ /* Trigger: KASSDATA_BEFORE_UPDATE */ CREATE TRIGGER KASSDATA_BEFORE_UPDATE FOR KASSDATA ACTIVE BEFORE UPDATE POSITION 0 AS declare variable dataid integer; declare variable kassid integer; declare variable operid integer; Declare Variable dDate Date; Declare Variable pDate Date; Declare Variable dSumma Double Precision; Declare Variable dcSumma Double Precision; declare variable aSumm Double Precision; declare variable aCSumm Double Precision; Declare Variable SaleDtID integer; Declare Variable SaleKtID integer; declare variable CTyp integer; Declare Variable Curs double precision; Declare variable cSumma double precision; Declare Variable OurOrgnID integer; declare variable ObjID integer; declare variable Obj_Typ integer; begin new.lastedit = Current_TimeStamp; if (New.ObjID is Null) then begin if (New.Summa > 0.0) then Obj_Typ = 194; else Obj_Typ = 195; ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(:ObjID, :Obj_Typ); New.ObjID = :ObjID; end if (New.CurrTyp is Null) then begin New.CSumma = 0.0; New.Curs = 0.0; end /* обновление остатка по дням */ if(New.Dat_ <> Old.Dat_ or New.Summa<>Old.Summa or New.Deleted<>Old.Deleted or New.cSumma<>Old.cSumma or New.Curs <> Old.Curs or (New.CurrTyp <> Old.CurrTyp)) then begin if(Old.Deleted is Null or Old.Deleted=0) then update KassDays set Summa=Summa-Old.Summa, cSumma=cSumma-Old.cSumma, UserName=New.UserName where Dat_>=Old.Dat_ and KassID = Old.KassID; Select DAT_ From KassDays where KassID=New.KassID and DAT_=New.Dat_ into :dDate; if(:dDate is Null) then begin /* Day not Exists */ Select Max(Dat_) from KassDays /* prev Day */ where KassID=New.KassID and Dat_=New.Dat_; end -- передача в другую кассу if (New.Summa < 0.0) then begin -- текущий - расходный ордер KassID = Null; OperID = Null; select K.intrkass, K.introp from kasslist K, acoprlst O where K.ID = New.KassID and O.ID = K.IntrOp and New.OperID is not Null and K.IntrKass is not Null and K.IntrOp = New.OperID and K.IntrOp is not Null and (not (New.KassDataKey is Null and Old.KassDataKey is not Null)) into :KassID, :OperID; if (:KassID is not Null and :OperID is not Null) then begin DataID = Null; select ID from kassdata where id=new.kassdatakey into :dataid; if (:DataID is null) then begin -- запись есть dataid=gen_id(kassdata_id, 1); new.KassDataKey = :DataID; insert into KassData(ID,Dat_,KassID,Summa,cSumma,Curs,CurrTyp,PrsnID, OrgnID,Comment,Nbr, Subscribe, KUserID, UserName, CommentID, ContactID, Appendix) values(:DataID,New.Dat_,:KassID,-New.Summa,New.cSumma,New.Curs,New.CurrTyp,New.PrsnID, New.OrgnID,New.Comment,New.Nbr, New.Subscribe, New.KUserID, New.UserName, New.CommentID, New.ContactID, New.Comment); end end else Delete From KassData where new.KassDataKey is not Null and ID = New.KassDataKey; end -- прием из другой кассы if (New.Summa > 0.0) then begin -- текущий - приходный ордер KassID = Null; OperID = Null; select K.OutKass, K.OutOp from KassData K1 join kasslist K on K.ID = K1.KassID join acoprlst O on O.ID = K.OutOp where K1.ID = New.ID and K1.OperID is not Null and K.OutKass is not Null and K.OutOp = New.OperID and K.OutOp is not Null and (not (New.KassDataKey is Null and Old.KassDataKey is not Null)) into :KassID, :OperID; if (:KassID is not Null and :OperID is not Null) then begin DataID = Null; select ID from kassdata where id=new.kassdatakey into :dataid; if (:DataID is null) then begin -- запись есть DataID = Gen_ID(kassdata_id, 1); new.KassDataKey = :DataID; insert into KassData(ID,Dat_,KassID,Summa,cSumma,Curs,CurrTyp,PrsnID, OrgnID,Comment,Nbr, Subscribe, KUserID, UserName, CommentID, ContactID, Appendix) values(:DataID,New.Dat_,:KassID,-New.Summa,New.cSumma,New.Curs,New.CurrTyp,New.PrsnID, New.OrgnID,New.Comment,New.Nbr, New.Subscribe, New.KUserID, New.UserName, New.CommentID, New.ContactID, New.Comment); end end else delete From KassData where new.KassDataKey is not Null and ID=New.KassDataKey; end Select Sum(Summa), Sum(cSumma) from KassAvCr where KassDTID = New.ID into :aSumm, :aCSumm; if (:aSumm is Null) then aSumm = 0.0; if (:aCSumm is Null) then aCSumm = 0.0; New.Summ = New.Summa - :aSumm; New.CSumm = New.CSumma - :aCSumm; if (New.CurrTyp is Null) then New.CSumm = 0.0; if (New.KassSale = 0 or New.Deleted = 1) then begin -- удалить оплату дт / кт -- оплата - приход if (Old.StorKey is not Null) then begin delete from Sale where ID = Old.StorKey; New.StorKey = Null; end -- оплата - расход if (Old.SaleKtKey is not Null) then begin Delete from SaleKt where ID = Old.SaleKtKey; New.SaleKtKey = Null; end end if (New.KassSale = 1 and New.Deleted = 0) then begin -- сформировать оплату - Дебиторы / Кредиторы Select OurOrgnID from KassList where ID = New.KassID into :OurOrgnID; -- приход - дебиторы if (New.Summa > 0.0 and (not(Old.storkey is not null and New.StorKey is Null))) then begin if (New.CurrTyp is Null) then begin CTyp = 0; cSumma = 0.0; Curs = 0.0; end else begin CTyp = 1; cSumma = New.cSumma; Curs = New.Curs; end Select ID from Sale where ID = New.StorKey into :SaleDtID; if (:SaleDtID is Null) then begin /* добавить оплату */ SaleDtID = Gen_ID(Sale_ID, 1); insert into Sale(ID, Nbr, DAT_, Summa, Summ, Comment, NameID, PrsnID, UserName, CTyp, CurrTyp, Curs, cSumma, cSumm, OurOrgnID) values(:SaleDtID, New.Nbr, New.Dat_,New.Summa, New.Summa, New.Comment, New.OrgnID, New.PrsnID, New.UserName, :CTyp, New.CurrTyp, :Curs, :cSumma, :cSumma, :OurOrgnID); New.StorKey = :SaleDtID; end else begin /* обновить оплату */ Update Sale Set Nbr = New.Nbr, Dat_ = New.Dat_, Summa = New.Summa, Comment = New.Comment, NameID = New.OrgnID, PrsnID = New.PrsnID, UserName = New.UserName, CTyp = :CTyp, CurrTyp = New.CurrTyp, Curs = :Curs, cSumma = :cSumma where ID = :SaleDtID and (Nbr <> New.Nbr or Dat_ <> New.Dat_ or Summa <> New.Summa or Comment <> New.Comment or CoalEsce(NameID, 0) <> CoalEsce(New.OrgnID, 0) or CoalEsce(PrsnID, 0) <> CoalEsce(New.PrsnID, 0) or cTyp <> :cTyp or UserName <> New.UserName or CoalEsce(CurrTyp, 0) <> CoalEsce(New.CurrTyp, 0) or CoalEsce(Curs, 0) <> CoalEsce(New.Curs, 0)); end end -- расход - кредиторы if (New.Summa < 0.0 and (not(Old.SaleKtKey is not null and New.SaleKtKey is Null))) then begin if (New.CurrTyp is Null) then begin CTyp = 0; cSumma = 0.0; Curs = 0.0; end else begin CTyp = 1; cSumma = -New.cSumma; Curs = New.Curs; end Select ID from SaleKt where ID = New.SaleKtKey into :SaleKtID; if (:SaleKtID is Null) then begin /* добавить оплату */ SaleKtID = Gen_ID(SaleKt_ID, 1); insert into SaleKt(ID, Nbr, DAT_, SaleDate, Summa, Summ, Comment, NameID, PrsnID, UserName, CTyp, CurrTyp, Curs, cSumma, cSumm, OurOrgnID) values(:SaleKtID, New.Nbr, New.Dat_, New.Dat_,-New.Summa, -New.Summa, New.Comment, New.OrgnID, New.PrsnID, New.UserName, :CTyp, New.CurrTyp, :Curs, :cSumma, :cSumma, :OurOrgnID); New.SaleKtKey = :SaleKtID; end else begin /* обновить оплату */ Update SaleKt Set Nbr = New.Nbr, Dat_ = New.Dat_, Summa = -New.Summa, Comment = New.Comment, NameID = New.OrgnID, PrsnID = New.PrsnID, UserName = New.UserName, CTyp = :CTyp, CurrTyp = New.CurrTyp, Curs = :Curs, cSumma = :cSumma, SaleDate = New.Dat_ where ID = :SaleKtID and (Nbr <> New.Nbr or Dat_ <> New.dat_ or Summa <> -New.Summa or Comment <> New.Comment or CoalEsce(PrsnID, 0) <> CoalEsce(New.PrsnID, 0) or SaleDate <> New.Dat_ or CoalEsce(NameID, 0) <> CoalEsce(New.OrgnID, 0) or cTyp <> :cTyp or UserName <> New.UserName or CoalEsce(CurrTyp, 0) <> CoalEsce(New.CurrTyp, 0) or CoalEsce(Curs, 0) <> CoalEsce(New.Curs, 0)); end end end -- сформировать оплату - Дебиторы / Кредиторы if (Old.AVID is Null and New.Typ in (1, 2)) then Select AVID from KassData_MakeAO(New.ID) into New.AVID; end ^ /* Trigger: KASSDAYS_BI0 */ CREATE TRIGGER KASSDAYS_BI0 FOR KASSDAYS ACTIVE BEFORE INSERT POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.ID is Null or New.ID=0) then New.ID=Gen_ID(KassDays_ID,1); end ^ /* Trigger: KASSDAYS_BU0 */ CREATE TRIGGER KASSDAYS_BU0 FOR KASSDAYS ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.ID is Null or New.ID=0) then New.ID=Gen_ID(KassDays_ID,1); end ^ /* Trigger: KASSLIST_AFTER_INSERT */ CREATE TRIGGER KASSLIST_AFTER_INSERT FOR KASSLIST ACTIVE AFTER INSERT POSITION 0 AS begin /* Insert Into UserKass(ID, User_ID, Kass_ID, UserName) Select Gen_ID(UserKass_ID,1),ID,New.ID,New.username From UserList; */ end ^ /* Trigger: KASSLIST_BEFORE_DELETE */ CREATE TRIGGER KASSLIST_BEFORE_DELETE FOR KASSLIST ACTIVE BEFORE DELETE POSITION 0 AS declare variable ID integer; declare variable Accn varchar(5); begin /* Доступ пользователей к Кассам */ Delete From UserKass where Kass_ID=Old.ID; /* Начальное сальдо (аналитика по Кассам) */ ID = Null; Accn = Null; select ID, Accn from SUB where An=7 and SubKey=Old.ID into :ID, :Accn; if (:ID is not Null) then exception Common_Exception 'По данной записи занесено начальное сальдо по счету: ' || :Accn; end ^ /* Trigger: KASSLIST_BEFORE_INSERT */ CREATE TRIGGER KASSLIST_BEFORE_INSERT FOR KASSLIST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: KASSLIST_BEFORE_UPDATE */ CREATE TRIGGER KASSLIST_BEFORE_UPDATE FOR KASSLIST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: LANG_BI */ CREATE TRIGGER LANG_BI FOR LANG ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(LANG_ID,1); END ^ /* Trigger: LEV_AI0 */ CREATE TRIGGER LEV_AI0 FOR "LEV" ACTIVE AFTER INSERT POSITION 0 AS begin if (New.Owner is Null and New.Typ=1) then begin Update Lev set Typ = 0 where Owner is Null and Typ = 1 and ID <> New.ID; end if (New.Owner is Null and New.Typ=2) then begin Update Lev set Typ = 0 where Owner is Null and Typ = 2 and ID <> New.ID; end end ^ /* Trigger: LEV_AU0 */ CREATE TRIGGER LEV_AU0 FOR "LEV" ACTIVE AFTER UPDATE POSITION 0 AS begin if (New.Owner is Null and New.Typ=1 and Old.Typ <> 1) then begin Update Lev set Typ = 0 where Owner is Null and Typ = 1 and ID <> New.ID; end if (New.Owner is Null and New.Typ=2 and Old.Typ <> 2) then begin Update Lev set Typ = 0 where Owner is Null and Typ = 2 and ID <> New.ID; end end ^ /* Trigger: LEV_BD0 */ CREATE TRIGGER LEV_BD0 FOR "LEV" ACTIVE BEFORE DELETE POSITION 0 as declare variable ID integer; declare variable Accn varchar(5); begin ID = Null; Accn = Null; select ID, Accn from SUB where An=0 and SubKey=Old.ID into :ID, :Accn; if (:ID is not Null) then exception Common_Exception 'По данной записи занесено начальное сальдо по счету: ' || :Accn; end ^ /* Trigger: LEV_BI0 */ CREATE TRIGGER LEV_BI0 FOR "LEV" ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(Lev_ID, 1); end ^ /* Trigger: LEV_BU0 */ CREATE TRIGGER LEV_BU0 FOR "LEV" ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MAINAMMST_AFTER_UPDATE */ CREATE TRIGGER MAINAMMST_AFTER_UPDATE FOR MAINAMMST ACTIVE AFTER UPDATE POSITION 0 as begin execute procedure MainAmMst_DelAccnRec(Old.ID); if (new.OperID <> 0 and New.OperID is not null) then Execute Procedure MainAmMst_GenAccnRec(New.ID); end ^ /* Trigger: MAINAMMST_BEFORE_DELETE */ CREATE TRIGGER MAINAMMST_BEFORE_DELETE FOR MAINAMMST ACTIVE BEFORE DELETE POSITION 0 as begin execute procedure MainAmMst_DelAccnRec(Old.ID); end ^ /* Trigger: MAINAMMST_BEFORE_INSERT */ CREATE TRIGGER MAINAMMST_BEFORE_INSERT FOR MAINAMMST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: MAINAMMST_BEFORE_UPDATE */ CREATE TRIGGER MAINAMMST_BEFORE_UPDATE FOR MAINAMMST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MAINAMSLV_BU0 */ CREATE TRIGGER MAINAMSLV_BU0 FOR MAINAMSLV ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MAINCHNG_AFTER_DELETE */ CREATE TRIGGER MAINCHNG_AFTER_DELETE FOR MAINPRICE ACTIVE AFTER DELETE POSITION 0 as begin update mainmean set priceo=priceo-old.summa where id=old.mainid; end ^ /* Trigger: MAINCHNG_AFTER_INSERT */ CREATE TRIGGER MAINCHNG_AFTER_INSERT FOR MAINPRICE ACTIVE AFTER INSERT POSITION 0 as begin update mainmean set PriceO = PriceO + New.Summa where ID = New.MainID; if(new.operid is not null and new.operid <> 0) then Execute procedure MainChng_GenAccnRec(New.ID); end ^ /* Trigger: MAINCHNG_AFTER_UPDATE */ CREATE TRIGGER MAINCHNG_AFTER_UPDATE FOR MAINPRICE ACTIVE AFTER UPDATE POSITION 0 as begin update mainmean set priceo=priceo-old.summa+new.summa where id=new.mainid; Execute procedure MainChng_DelAccnRec(old.id); if (new.operid is not null and new.operid <> 0) then Execute procedure MainChng_GenAccnRec(new.id); end ^ /* Trigger: MAINCHNG_BEFORE_DELETE */ CREATE TRIGGER MAINCHNG_BEFORE_DELETE FOR MAINPRICE ACTIVE BEFORE DELETE POSITION 0 as begin Execute procedure MainChng_DelAccnRec(old.id); end ^ /* Trigger: MAINCHNG_BEFORE_UPDATE */ CREATE TRIGGER MAINCHNG_BEFORE_UPDATE FOR MAINPRICE ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MAINCRCH_BI0 */ CREATE TRIGGER MAINCRCH_BI0 FOR MAINCRCH ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(MainCrCh_ID, 1); end ^ /* Trigger: MAINGRP_BI */ CREATE TRIGGER MAINGRP_BI FOR MAINGRP ACTIVE BEFORE INSERT POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MAINGRP_BU */ CREATE TRIGGER MAINGRP_BU FOR MAINGRP ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; if (New.Typ=2 and CoalEsce(New.Use_Period, 0) > 0) then begin Update MainMean set Use_Period = New.Use_Period where GroupID = New.ID and CoalEsce(Use_Period, 0) = 0; Update MainMean set Use_Period = New.Use_Period where GroupID1 = New.ID and CoalEsce(Use_Period, 0) = 0; end end ^ /* Trigger: MAININPAC_BI */ CREATE TRIGGER MAININPAC_BI FOR MAININPAC ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID=Gen_ID(MainInpAc_ID, 1); end ^ /* Trigger: MAINMEANSLV_BU0 */ CREATE TRIGGER MAINMEANSLV_BU0 FOR MAINMEANSLV ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MAINMEAN_AFTER_UPDATE */ CREATE TRIGGER MAINMEAN_AFTER_UPDATE FOR MAINMEAN ACTIVE AFTER UPDATE POSITION 0 as begin execute procedure mainmean_delaccnrec old.id; if ((new.inoperid <> 0 and new.inoperid is not null) or (new.out_date is not null and new.out_typ is not null and new.out_typ <> 0) ) then execute procedure mainmean_genaccnrec new.id; end ^ /* Trigger: MAINMEAN_BEFORE_DELETE */ CREATE TRIGGER MAINMEAN_BEFORE_DELETE FOR MAINMEAN ACTIVE BEFORE DELETE POSITION 0 as Declare Variable ID integer; Declare Variable AccnID integer; begin /* Проводки по вводу в эксплуатацию */ for select ID, AccnKey from MainInpAc where MainKey=Old.ID into :ID, :AccnID do begin delete from MainInpAc where ID=:ID; delete From AccnProv where ID=:AccnID; end /* Проводки по выбытию */ for select ID, AccnKey from MainOutAc where MainKey=Old.ID into :ID, :AccnID do begin delete from MainOutAc where ID=:ID; delete From AccnProv where ID=:AccnID; end /* Перемещения... */ delete from MainMove where MainID=Old.ID; /* Изменение стоимости */ delete from MainPrice where MainID=Old.ID; end ^ /* Trigger: MAINMEAN_BEFORE_INSERT */ CREATE TRIGGER MAINMEAN_BEFORE_INSERT FOR MAINMEAN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(MainMean_ID, 1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; if (New.RPrice is Null) then New.RPrice = 0.0; end ^ /* Trigger: MAINMEAN_BEFORE_UPDATE */ CREATE TRIGGER MAINMEAN_BEFORE_UPDATE FOR MAINMEAN ACTIVE BEFORE UPDATE POSITION 0 AS declare variable summ double precision; begin new.priceo=new.price; for select summa from mainprice where mainid=new.id into :summ do new.priceo=new.priceo+:summ; new.lastedit = Current_TimeStamp; end ^ /* Trigger: MAINMOVE_AD0 */ CREATE TRIGGER MAINMOVE_AD0 FOR MAINMOVE ACTIVE AFTER DELETE POSITION 0 AS declare variable mDate Date; declare variable mID integer; declare variable PodrID integer; begin Select Max(Dat_) from MainMove where MainID=Old.MainID into :mDate; Select Max(ID) from MainMove where MainID=Old.MainID and DAT_=:mDate into :mID; Select PodrDst from MainMove where ID=:mID into :PodrID; if (:PodrID is not Null) then Update MainMean set PodrID=:PodrID where ID=Old.MainID and PodrID <> :PodrID; end ^ /* Trigger: MAINMOVE_AI0 */ CREATE TRIGGER MAINMOVE_AI0 FOR MAINMOVE ACTIVE AFTER INSERT POSITION 0 AS declare variable mDate Date; declare variable mID Integer; declare variable PodrID integer; begin Select Max(Dat_) from MainMove where MainID=New.MainID into :mDate; Select Max(ID) from MainMove where MainID=New.MainID and DAT_=:mDate into :mID; Select PodrDst from MainMove where ID=:mID into :PodrID; if (:PodrID is not Null) then Update MainMean set PodrID=:PodrID where ID=New.MainID and PodrID <> :PodrID; end ^ /* Trigger: MAINMOVE_AU0 */ CREATE TRIGGER MAINMOVE_AU0 FOR MAINMOVE ACTIVE AFTER UPDATE POSITION 0 AS declare variable mDate Date; declare variable mID integer; declare variable PodrID integer; begin Select Max(Dat_) from MainMove where MainID=New.MainID into :mDate; Select Max(ID) from MainMove where MainID=New.MainID and DAT_=:mDate into :mID; Select PodrDst from MainMove where ID=:mID into :PodrID; if (:PodrID is not Null) then Update MainMean set PodrID=:PodrID where ID=New.MainID and PodrID <> :PodrID; end ^ /* Trigger: MAINMOVE_BEFORE_UPDATE */ CREATE TRIGGER MAINMOVE_BEFORE_UPDATE FOR MAINMOVE ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MAINOUTAC_BI */ CREATE TRIGGER MAINOUTAC_BI FOR MAINOUTAC ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID=Gen_ID(MainOutAc_ID, 1); end ^ /* Trigger: MAINPRICE_BI0 */ CREATE TRIGGER MAINPRICE_BI0 FOR MAINPRICE ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(MainPrice_ID, 1); end ^ /* Trigger: MAINRPTINVMST_BI */ CREATE TRIGGER MAINRPTINVMST_BI FOR MAINRPTINVMST ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(MainRptInvMst_ID, 1); end ^ /* Trigger: MAINRPTINVMST_BU */ CREATE TRIGGER MAINRPTINVMST_BU FOR MAINRPTINVMST ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MAINRPTINVSLV_BI */ CREATE TRIGGER MAINRPTINVSLV_BI FOR MAINRPTINVSLV ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(MainRptInvMst_ID, 1); end ^ /* Trigger: MANAGER_PRICE_ORGN_BI */ CREATE TRIGGER MANAGER_PRICE_ORGN_BI FOR MANAGER_PRICE_ORGN ACTIVE BEFORE INSERT POSITION 0 AS begin if (NEW.ID is NULL) then NEW.ID = GEN_ID(gen_manager_price_org_id,1); /* Один менеджер не может работать с одной и той-же организацией по разным прай-листам*/ if (exists (select ID from MANAGER_PRICE_ORGN where PERSONAL_ID = NEW.PERSONAL_ID and ORGN_ID = NEW.ORGN_ID and ID != NEW.ID )) then execute procedure THROW_EXCEPTION('К этой организации уже привязан прайс-лист.'); end ^ /* Trigger: MANAGER_PRICE_ORGN_BU */ CREATE TRIGGER MANAGER_PRICE_ORGN_BU FOR MANAGER_PRICE_ORGN ACTIVE BEFORE UPDATE POSITION 0 AS begin /* Один менеджер не может работать с одной и той-же организацией по разным прай-листам*/ if (exists (select ID from MANAGER_PRICE_ORGN where PERSONAL_ID = NEW.PERSONAL_ID and ORGN_ID = NEW.ORGN_ID and ID != NEW.ID )) then execute procedure THROW_EXCEPTION('К этой организации уже привязан прайс-лист.'); end ^ /* Trigger: MBPDGV_AFTER_INSERT */ CREATE TRIGGER MBPDGV_AFTER_INSERT FOR MBPDGV ACTIVE AFTER INSERT POSITION 0 as begin if(New.OperID is not Null and New.OperID <> 0) then Execute Procedure MbpDgv_GenAccnRec New.ID; end ^ /* Trigger: MBPDGV_AFTER_UPDATE */ CREATE TRIGGER MBPDGV_AFTER_UPDATE FOR MBPDGV ACTIVE AFTER UPDATE POSITION 0 as begin Execute Procedure MbpDgv_DelAccnRec Old.ID; if(New.OperID is Not Null and New.OperID<>0) then Execute Procedure MbpDgv_GenAccnRec New.ID; end ^ /* Trigger: MBPDGV_BEFORE_DELETE */ CREATE TRIGGER MBPDGV_BEFORE_DELETE FOR MBPDGV ACTIVE BEFORE DELETE POSITION 0 as begin execute procedure MbpDgv_DelAccnRec Old.ID; end ^ /* Trigger: MBPDGV_BEFORE_INSERT */ CREATE TRIGGER MBPDGV_BEFORE_INSERT FOR MBPDGV ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: MBPDGV_BEFORE_UPDATE */ CREATE TRIGGER MBPDGV_BEFORE_UPDATE FOR MBPDGV ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MBPGDD_BI0 */ CREATE TRIGGER MBPGDD_BI0 FOR MBPGDD ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(MbpGdd_ID, 1); end ^ /* Trigger: MBPMEAN_BI0 */ CREATE TRIGGER MBPMEAN_BI0 FOR MBPMEAN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(MBPMEAN_ID, 1); if (New.Period is Null) then New.Period = 0; if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: MBPMEAN_BU0 */ CREATE TRIGGER MBPMEAN_BU0 FOR MBPMEAN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: MDOCS_BI */ CREATE TRIGGER MDOCS_BI FOR MDOCS ACTIVE BEFORE INSERT POSITION 0 AS begin if (NEW.ID is NULL) then NEW.ID = GEN_ID(GEN_MDOCS_ID,1); if (NEW.DOC_TIME is NULL) then NEW.DOC_TIME = CURRENT_TIMESTAMP; end ^ /* Trigger: MDOC_GOODS_BI */ CREATE TRIGGER MDOC_GOODS_BI FOR MDOC_GOODS ACTIVE BEFORE INSERT POSITION 0 AS begin if (NEW.ID is NULL) then NEW.ID = GEN_ID(GEN_MDOC_GOODS_ID,1); end ^ /* Trigger: MOG_DISCOUNT_BI */ CREATE TRIGGER MOG_DISCOUNT_BI FOR MOG_DISCOUNT ACTIVE BEFORE INSERT POSITION 0 AS begin if (NEW.ID is NULL) then NEW.ID = GEN_ID(GEN_MOG_DISCOUNT_ID,1); /* MODIFY = -1 не передавалась MODIFY = 0 не менялась MODIFY = 1 передавалась но поменялась */ NEW.MODIFY = -1; end ^ /* Trigger: MOG_DISCOUNT_BU */ CREATE TRIGGER MOG_DISCOUNT_BU FOR MOG_DISCOUNT ACTIVE BEFORE UPDATE POSITION 0 AS begin /* Отследим изменения скидки ( нужно при экспорте групп товаров) */ if (NEW.DISCOUNT != OLD.DISCOUNT) then NEW.MODIFY = 1; end ^ /* Trigger: OBJ_MSGREAD_BI0 */ CREATE TRIGGER OBJ_MSGREAD_BI0 FOR OBJ_MSGREAD ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(Obj_MsgRead_ID, 1); end ^ /* Trigger: OBJ_MSG_AI0 */ CREATE TRIGGER OBJ_MSG_AI0 FOR OBJ_MSG ACTIVE AFTER INSERT POSITION 0 AS begin /* отметить что отправитель прочитал сообщение сразу при отправке */ insert into Obj_MsgRead(MsgID, UserID) values(New.ID, New.SendUserID); end ^ /* Trigger: OBJ_MSG_BI0 */ CREATE TRIGGER OBJ_MSG_BI0 FOR OBJ_MSG ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(Obj_Msg_ID, 1); end ^ /* Trigger: OBJ_STAGEROUTESTD_BI0 */ CREATE TRIGGER OBJ_STAGEROUTESTD_BI0 FOR OBJ_STAGEROUTESTD ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(Obj_StageRouteStd_ID, 1); end ^ /* Trigger: OBJ_STAGEROUTESTD_BU0 */ CREATE TRIGGER OBJ_STAGEROUTESTD_BU0 FOR OBJ_STAGEROUTESTD ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: OPERADD_BI0 */ CREATE TRIGGER OPERADD_BI0 FOR OPERADD ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(OperAdd_ID, 1); end ^ /* Trigger: OPERDELETE_BI0 */ CREATE TRIGGER OPERDELETE_BI0 FOR OPERDELETE ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(OperDelete_ID, 1); end ^ /* Trigger: ORGNBANKACCN_BD0 */ CREATE TRIGGER ORGNBANKACCN_BD0 FOR ORGNBANKACCN ACTIVE BEFORE DELETE POSITION 0 AS declare variable ID integer; declare variable Accn varchar(5); begin /* Начальное сальдо (аналитика по Расч. Счетам) */ ID = Null; Accn = Null; select ID, Accn from SUB where An=6 and SubKey=Old.ID into :ID, :Accn; if (:ID is not Null) then exception Common_Exception 'По данной записи занесено начальное сальдо по счету: ' || :Accn; end ^ /* Trigger: ORGNBANKACCN_BEFORE_INSERT */ CREATE TRIGGER ORGNBANKACCN_BEFORE_INSERT FOR ORGNBANKACCN ACTIVE BEFORE INSERT POSITION 0 AS Declare Variable ID integer; begin if(New.ID is null or New.ID=0) then New.ID=Gen_ID(OrgnBankAccn_ID, 1); if (New.CTYP=1) then New.Typ = 1; /* если валютный счет - то он не основной */ else begin ID = Null; /* есть ли основной счет среди невалютных? */ Select MIN(ID) from OrgnBankAccn where ORGNID=New.OrgnID and TYP=0 and cTyp=0 into :ID; if(:ID is null) then New.Typ=0; else New.Typ=1; end if (New.Name is Null or New.Name = '') then New.Name = New.AccnCode; end ^ /* Trigger: ORGNBANKACCN_BEFORE_UPDATE */ CREATE TRIGGER ORGNBANKACCN_BEFORE_UPDATE FOR ORGNBANKACCN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.Name is Null or New.Name = '') then New.Name = New.AccnCode; if (New.Typ=0 and Old.Typ <> 0) then begin /* данный счет становится основным */ /* все остальные становятся неосновными */ Update OrgnBankAccn Set Typ=1 where OrgnID=New.OrgnID and ID <> Old.ID and Typ <> 1; end end ^ /* Trigger: ORGNGRPOPEMAIL_BI */ CREATE TRIGGER ORGNGRPOPEMAIL_BI FOR ORGNGRPOPEMAIL ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(OrgnGrpOpEMail_ID, 1); end ^ /* Trigger: ORGNGRPOPEMAIL_BU */ CREATE TRIGGER ORGNGRPOPEMAIL_BU FOR ORGNGRPOPEMAIL ACTIVE BEFORE UPDATE POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(OrgnGrpOpEMail_ID, 1); New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ORGNGRPREF_BI0 */ CREATE TRIGGER ORGNGRPREF_BI0 FOR ORGNGRPREF ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null) then New.ID=Gen_ID(OrgnGrpRef_ID,1); end ^ /* Trigger: ORGNINFO_BI0 */ CREATE TRIGGER ORGNINFO_BI0 FOR ORGNINFO ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(OrgnInfo_ID, 1); New.ObjID = Gen_ID(Obj_Class_ID, 1); insert into Obj_Class(ID, Obj_Typ) values (New.ObjID, 190); end ^ /* Trigger: ORGNINFO_BU0 */ CREATE TRIGGER ORGNINFO_BU0 FOR ORGNINFO ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert into Obj_Class(ID, Obj_Typ) values (New.ObjID, 190); end end ^ /* Trigger: ORGNPRICELIST_BI0 */ CREATE TRIGGER ORGNPRICELIST_BI0 FOR ORGNPRICELIST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(OrgnPriceList_ID, 1); end ^ /* Trigger: ORGNPRICELIST_BU0 */ CREATE TRIGGER ORGNPRICELIST_BU0 FOR ORGNPRICELIST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ORGN_BEFORE_DELETE */ CREATE TRIGGER ORGN_BEFORE_DELETE FOR ORGN ACTIVE BEFORE DELETE POSITION 0 AS declare variable ID integer; declare variable Accn varchar(5); begin /* Убрать Организацию из всех групп организаций */ Delete from OrgnGrpRef where OrgnID = Old.ID; /* Удалить расчетные счета по Организации */ Delete from OrgnBankAccn where OrgnID = Old.ID; /* Начальное сальдо (аналитика по Организациям) */ ID = Null; Accn = Null; select ID, Accn from SUB where An=1 and SubKey=Old.ID into :ID, :Accn; if (:ID is not Null) then exception Common_Exception 'По данной записи занесено начальное сальдо по счету: ' || :Accn; /* Доступ по предприятиям */ Delete from UserOrgn where OrgnID=Old.ID; if (Old.OurOrgn <> 0) then Delete from SysConst where OurOrgnID = Old.ID; if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: ORGN_BEFORE_UPDATE */ CREATE TRIGGER ORGN_BEFORE_UPDATE FOR ORGN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (Old.OurOrgn<>1 and New.OurOrgn=1) then begin Update Orgn Set OurOrgn=2 where OurOrgn=1 and ID <> Old.ID; end if (New.OurOrgn <> 0 and (OLd.ID = New.ID)) then begin execute procedure SysConst_SetValue(New.ID, 'OrgName', New.Name); execute procedure SysConst_SetValue(New.ID, 'OrganisationName', SubString(New.fullname from 1 for 255)); execute procedure SysConst_SetValue(New.ID, 'OrgPhone', New.Phone); execute procedure SysConst_SetValue(New.ID, 'OrgAddress', New.Address); execute procedure SysConst_SetValue(New.ID, 'OrgBank', New.Bank); execute procedure SysConst_SetValue(New.ID, 'OrgMfo_Code', New.Mfo_Code); execute procedure SysConst_SetValue(New.ID, 'OrgAccnCode', New.AccnCode); execute procedure SysConst_SetValue(New.ID, 'OrgOkpoCode', New.OkpoCode); execute procedure SysConst_SetValue(New.ID, 'OrgDirector', New.Director); execute procedure SysConst_SetValue(New.ID, 'OrgAccounter', New.Accounter); execute procedure SysConst_SetValue(New.ID, 'OrgnNalNbr', New.NalNbr); execute procedure SysConst_SetValue(New.ID, 'OrgnRegNbr', New.RegNbr); end if (New.ObjID is Null and Old.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); Insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 102); end end ^ /* Trigger: ORGN_BI0 */ CREATE TRIGGER ORGN_BI0 FOR ORGN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(Orgn_ID, 1); New.ObjID = Gen_ID(Obj_Class_ID, 1); Insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 102); end ^ /* Trigger: ORGN_GRPHIDE_BI */ CREATE TRIGGER ORGN_GRPHIDE_BI FOR ORGN_GRPHIDE ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null or New.ID=0) then New.ID = Gen_ID(Orgn_GrpHide_ID, 1); end ^ /* Trigger: ORGN_GRP_BI */ CREATE TRIGGER ORGN_GRP_BI FOR ORGN_GRP ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null or New.ID=0) then New.ID = Gen_ID(Orgn_Grp_ID, 1); New.LastEdit = CURRENT_TIMESTAMP; end ^ /* Trigger: ORGN_GRP_BU */ CREATE TRIGGER ORGN_GRP_BU FOR ORGN_GRP ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ORGN_MANAGER_AD */ CREATE TRIGGER ORGN_MANAGER_AD FOR ORGN_MANAGER ACTIVE AFTER DELETE POSITION 0 as declare variable ID Integer; begin if (Not Exists(Select ID From Orgn_Manager where OurOrgnID=Old.OurOrgnID and OrgnID=Old.OrgnID and DEfMngr=1)) then begin select Max(ID) from Orgn_Manager where OurOrgnID=Old.OurOrgnID and OrgnID=Old.OrgnID into :ID; Update Orgn_Manager Set DefMngr=1 WHERE ID=:ID; end end ^ /* Trigger: ORGN_MANAGER_BI */ CREATE TRIGGER ORGN_MANAGER_BI FOR ORGN_MANAGER ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(Orgn_Manager_ID, 1); if (not Exists(Select ID From Orgn_Manager where OurOrgnID=New.OurOrgnID and OrgnID=New.OrgnID and DEfMngr=1)) then New.DefMngr = 1; if (New.DefMngr=1) then begin Update Orgn_Manager SET DefMngr=0 where OurOrgnID=New.OurOrgnID and OrgnID=New.OrgnID and ID <> New.ID; end end ^ /* Trigger: ORGN_MANAGER_BU */ CREATE TRIGGER ORGN_MANAGER_BU FOR ORGN_MANAGER ACTIVE BEFORE UPDATE POSITION 0 as declare variable DefSubID integer; begin New.LastEdit = Current_TimeStamp; if (CoalEsce(New.Subscribe, 0) = 0) then begin New.SUserID = Null; New.SDateTime = Null; end DefSubID = 0; if (New.DefMngr=1 and Old.DefMngr=0) then begin -- есть ли утвержденный менеджер по умолчанию select Min(ID) from Orgn_Manager where OurOrgnID=New.OurOrgnID and OrgnID=New.OrgnID and ID <> New.ID and Subscribe=1 and DefMngr=1 into :DefSubID; end if (:DefSubID <> 0) then New.DefMngr = 0; if (New.DefMngr=1) then begin Update Orgn_Manager SET DefMngr=0 where OurOrgnID=New.OurOrgnID and OrgnID=New.OrgnID and ID <> New.ID and DefMngr=1; end end ^ /* Trigger: PERSONAL_AI0 */ CREATE TRIGGER PERSONAL_AI0 FOR PERSONAL ACTIVE AFTER INSERT POSITION 0 AS declare variable PodrPostID integer; begin if (New.Inp_Date is not Null and New.PostID is not Null and New.PodrID is not Null) then begin PodrPostID = Null; select Min(PP.ID) from PodrPost PP where PP.PostID = New.PostID and PP.PodrID = New.PodrID and PP.PrsnID is Null into :PodrPostID; if (:PodrPostID is Null) then begin PodrPostID = Gen_ID(PodrPost_ID, 1); insert into PodrPost (ID, PodrID, PostID, PrsnID, TabelID, UserName) Values(:PodrPostID, New.PodrID, New.PostID, New.ID, New.TabelID, New.UserName); end else begin Update PodrPost set PrsnID = New.ID, UserName = New.UserName where ID = :PodrPostID and PrsnID <> New.ID; end insert into PrsnMove(OurOrgnID, PrsnID, PostID, PodrID, PodrPostID, DAT_, Typ, WTyp, StorID, DayWTime, TabelID, FotGrpID) Values(New.OurOrgnID, New.ID, New.PostID, New.PodrID, :PodrPostID, New.Inp_Date, 0, New.WTyp, New.StorID, New.DayWTime, New.TabelID, New.FotGrpID); end end ^ /* Trigger: PERSONAL_AU0 */ CREATE TRIGGER PERSONAL_AU0 FOR PERSONAL ACTIVE AFTER UPDATE POSITION 0 AS declare variable MoveID integer; declare variable MoveTyp integer; declare variable PodrPostID integer; begin if (OLd.Inp_Date is Null and New.Inp_Date is not Null and New.PodrID is not Null and New.PostID is not Null) then begin /* прием на работу */ Select Min(ID) from PrsnMove where PrsnID = New.ID and DAT_ = (Select Min(DAT_) from PrsnMove where PrsnID=New.ID) into :MoveID; if (:MoveID is not Null) then begin Select Typ from PrsnMove where ID = :MoveID into :MoveTyp; if (:MoveTyp <> 0) then MoveID = Null; end if (:MoveID is Null) then begin PodrPostID = Null; select Min(PP.ID) from PodrPost PP where PP.PostID = New.PostID and PP.PodrID = New.PodrID and PP.PrsnID is Null into :PodrPostID; if (:PodrPostID is Null) then begin PodrPostID = Gen_ID(PodrPost_ID, 1); insert into PodrPost (ID, PodrID, PostID, PrsnID, TabelID, UserName) Values(:PodrPostID, New.PodrID, New.PostID, New.ID, New.TabelID, New.UserName); end else begin Update PodrPost set PrsnID = New.ID, UserName = New.UserName where ID = :PodrPostID and PrsnID <> New.ID; end insert into PrsnMove(OurOrgnID, PrsnID, PostID, PodrID, PodrPostID, DAT_, Typ, WTyp, StorID, DayWTime, TabelID, FotGrpID) Values(New.OurOrgnID, New.ID, New.PostID, New.PodrID, :PodrPostID, New.Inp_Date, 0, New.WTyp, New.StorID, New.DayWTime, New.TabelID, New.FotGrpID); end end if (OLd.Out_Date is Null and New.Out_Date is not Null) then begin /* увольнение */ Select Max(ID) from PrsnMove where PrsnID = New.ID and DAT_ = (Select Max(DAT_) from PrsnMove where PrsnID=New.ID) into :MoveID; if (:MoveID is not Null) then begin Select Typ from PrsnMove where ID = :MoveID into :MoveTyp; if (:MoveTyp <> 2) then MoveID = Null; end PodrPostID = Null; select Min(PP.ID) from PodrPost PP where PP.PostID = New.PostID and PP.PodrID = New.PodrID and PP.PrsnID = New.ID into :PodrPostID; if (:PodrPostID is not Null) then Update PodrPost set PrsnID = Null where ID = :PodrPostID; if (:MoveID is Null) then begin insert into PrsnMove(OurOrgnID, PrsnID, PostID, PodrID, PodrPostID, DAT_, Typ, WTyp, StorID, DayWTime, TabelID, FotGrpID) Values(New.OurOrgnID, New.ID, New.PostID, New.PodrID, :PodrPostID, New.Out_Date, 2, New.WTyp, New.StorID, New.DayWTime, New.TabelID, New.FotGrpID); end end end ^ /* Trigger: PERSONAL_BD0 */ CREATE TRIGGER PERSONAL_BD0 FOR PERSONAL ACTIVE BEFORE DELETE POSITION 0 as declare variable ID integer; declare variable Accn varchar(5); begin /* Начисления в лицевом счете */ Delete from ZpltIncrPrsn where PrsnID = Old.ID; /* Удержания в лицевом счете */ Delete from ZpltDecrPrsn where PrsnID = Old.ID; /* Депонент */ Delete From ZpltPrsnDpn where PrsnID = Old.ID; /* Начальное сальдо (аналитика по Сотрудникам) */ ID = Null; Accn = Null; select ID, Accn from SUB where An=3 and SubKey=Old.ID into :ID, :Accn; if (:ID is not Null) then exception Common_Exception 'По данной записи занесено начальное сальдо по счету: ' || :Accn; end ^ /* Trigger: PERSONAL_BEFORE_INSERT */ CREATE TRIGGER PERSONAL_BEFORE_INSERT FOR PERSONAL ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID=0 or New.ID is Null) then New.ID=Gen_ID(Personal_ID,1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; if (New.DayWTime is Null) then New.DayWTime = 8.0; if (New.Name is Null and New.PrsnCardID is not Null) then Select Name from PrsnCard where ID = New.PrsnCardID into New.Name; end ^ /* Trigger: PERSONAL_BEFORE_UPDATE */ CREATE TRIGGER PERSONAL_BEFORE_UPDATE FOR PERSONAL ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = Current_TimeStamp; end ^ /* Trigger: PODRLIST_BD0 */ CREATE TRIGGER PODRLIST_BD0 FOR PODRLIST ACTIVE BEFORE DELETE POSITION 0 as declare variable ID integer; declare variable Accn varchar(5); begin /* Начальное сальдо (аналитика по Подразделениям) */ ID = Null; Accn = Null; select ID, Accn from SUB where An=5 and SubKey=Old.ID into :ID, :Accn; if (:ID is not Null) then exception Common_Exception 'По данной записи занесено начальное сальдо по счету: ' || :Accn; end ^ /* Trigger: PODRLIST_BEFORE_INSERT */ CREATE TRIGGER PODRLIST_BEFORE_INSERT FOR PODRLIST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(PodrList_ID, 1); new.LastEdit = Current_TimeStamp; if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: PODRLIST_BEFORE_UPDATE */ CREATE TRIGGER PODRLIST_BEFORE_UPDATE FOR PODRLIST ACTIVE BEFORE UPDATE POSITION 0 AS begin new.LastEdit=Current_TimeStamp; end ^ /* Trigger: PODRPOST_AU0 */ CREATE TRIGGER PODRPOST_AU0 FOR PODRPOST ACTIVE AFTER UPDATE POSITION 0 AS begin if (New.PostID <> Old.PostID and New.PostID is not Null) then begin Update PrsnMove set PostID = New.PostID where PodrPostID = New.ID and PostID <> New.PostID; end end ^ /* Trigger: PODRPOST_BI0 */ CREATE TRIGGER PODRPOST_BI0 FOR PODRPOST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(PodrPost_ID, 1); end ^ /* Trigger: PODRPOST_BU0 */ CREATE TRIGGER PODRPOST_BU0 FOR PODRPOST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: PODR_FUNCMANAGE_BI */ CREATE TRIGGER PODR_FUNCMANAGE_BI FOR PODR_FUNCMANAGE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_PODR_FUNCMANAGE_ID,1); END ^ /* Trigger: PODR_FUNCSUPPORT_BI */ CREATE TRIGGER PODR_FUNCSUPPORT_BI FOR PODR_FUNCSUPPORT ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_PODR_FUNCSUPPORT_ID,1); END ^ /* Trigger: POST_FUNCMANAGE_BI */ CREATE TRIGGER POST_FUNCMANAGE_BI FOR POST_FUNCMANAGE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_POST_FUNCMANAGE_ID,1); END ^ /* Trigger: POST_FUNCSUPPORT_BI */ CREATE TRIGGER POST_FUNCSUPPORT_BI FOR POST_FUNCSUPPORT ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_POST_FUNCSUPPORT_ID,1); END ^ /* Trigger: PRICEGOODS_AI */ CREATE TRIGGER PRICEGOODS_AI FOR PRICEGOODS ACTIVE AFTER INSERT POSITION 0 AS declare variable aBASE_PRICE_ID INTEGER; begin /*insert into PALM_PRICELISTGOODS (PRICEGOODS_ID,MODIFY) values (NEW.ID,0); */ /* Изменим цену базового прайс-листа в ТОВАРАХ */ select BASE_PRICE_LIST_ID from MOBIL_MAIN where ID = 1 into :aBASE_PRICE_ID; if (NEW.PRICEID = :aBASE_PRICE_ID) then update GOODS SET BASE_PRICE = NEW.PRICE where ID = NEW.GDSKEY; end ^ /* Trigger: PRICEGOODS_AU */ CREATE TRIGGER PRICEGOODS_AU FOR PRICEGOODS ACTIVE AFTER UPDATE POSITION 0 AS declare variable aBASE_PRICE_ID INTEGER; begin /* insert into PALM_PRICELISTGOODS (PRICEGOODS_ID,MODIFY) values (NEW.ID,0); */ /* update PALM_PRICELISTGOODS set MODIFY = 1 where PRICEGOODS_ID = NEW.ID; */ /* Редактирование базовой цены в ТОВАРАХ */ select BASE_PRICE_LIST_ID from MOBIL_MAIN where ID = 1 into :aBASE_PRICE_ID; if (NEW.PRICEID = :aBASE_PRICE_ID) then update GOODS SET BASE_PRICE = NEW.PRICE where ID = NEW.GDSKEY; end ^ /* Trigger: PRICEGOODS_BI0 */ CREATE TRIGGER PRICEGOODS_BI0 FOR PRICEGOODS ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(PriceGoods_ID, 1); end ^ /* Trigger: PRICEGOODS_BU */ CREATE TRIGGER PRICEGOODS_BU FOR PRICEGOODS ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: PRICELIST_AI */ CREATE TRIGGER PRICELIST_AI FOR PRICELIST ACTIVE AFTER INSERT POSITION 0 as declare variable UID Integer; begin -- auto-assign RW-access for Creator Select First 1 ID from UserList where name=New.UserName INTO :UID; insert into userprls(UserID, PrLsID, Rights, EdUserID) Values(:UID, New.ID, 2, :UID); end ^ /* Trigger: PRICELIST_BEFORE_DELETE */ CREATE TRIGGER PRICELIST_BEFORE_DELETE FOR PRICELIST ACTIVE BEFORE DELETE POSITION 0 AS begin Delete From PriceGoods where PriceID=OLD.ID; end ^ /* Trigger: PRICELIST_BU */ CREATE TRIGGER PRICELIST_BU FOR PRICELIST ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: PROFEXPERIENCE_BI */ CREATE TRIGGER PROFEXPERIENCE_BI FOR PROFEXPERIENCE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(PROFEXPERIENCE_ID,1); END ^ /* Trigger: PRSNATTACH_BI */ CREATE TRIGGER PRSNATTACH_BI FOR PRSNATTACH ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_PRSNATTACH_ID,1); END ^ /* Trigger: PRSNATTACH_BU0 */ CREATE TRIGGER PRSNATTACH_BU0 FOR PRSNATTACH ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: PRSNCARD_AU0 */ CREATE TRIGGER PRSNCARD_AU0 FOR PRSNCARD ACTIVE AFTER UPDATE POSITION 0 AS begin if (New.Name <> Old.Name) then Update Personal Set Name = New.Name where PrsnCardID = New.ID; end ^ /* Trigger: PRSNCARD_BI */ CREATE TRIGGER PRSNCARD_BI FOR PRSNCARD ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(PRSNCARD_ID,1); END ^ /* Trigger: PRSNCARD_BI0 */ CREATE TRIGGER PRSNCARD_BI0 FOR PRSNCARD ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(PrsnCard_ID, 1); end ^ /* Trigger: PRSNCARD_BU0 */ CREATE TRIGGER PRSNCARD_BU0 FOR PRSNCARD ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: PRSNMOVE_AD0 */ CREATE TRIGGER PRSNMOVE_AD0 FOR PRSNMOVE ACTIVE AFTER DELETE POSITION 0 AS begin if (Old.Typ in (0, 1) and Old.PodrPostID is not Null) then begin Update PodrPost Set PrsnID = Null where ID = Old.PodrPostID and PrsnID = Old.PrsnID; end if (Old.Typ = 2 and Old.PodrPostID is not Null) then begin Update PodrPost Set PrsnID = Old.PrsnID where ID = Old.PodrPostID and PrsnID is Null; end Execute Procedure PrsnMove_UpdatePrsn(Old.PrsnID); end ^ /* Trigger: PRSNMOVE_AI0 */ CREATE TRIGGER PRSNMOVE_AI0 FOR PRSNMOVE ACTIVE AFTER INSERT POSITION 0 AS Declare Variable PodrPostID integer; Declare Variable PrevMoveID integer; Declare Variable PrevDate Date; begin if (New.Typ = 2 and New.PodrPostID is not Null) then begin -- увольнение - освободить должность update PodrPost set PrsnID = Null where ID = New.PodrPostID and PrsnID = New.PrsnID; -- проставить дату увольнения end if (New.Typ = 1) then begin /* перевод - освободить предыдущую должность */ Select(Max(DAT_)) from PrsnMove where PrsnID = New.PrsnID and OurOrgnID = New.OurOrgnID and DAT_ <= New.DAT_ and ID <> New.ID into :PrevDate; Select Max(ID) from PrsnMove where PrsnID = New.PrsnID and OurOrgnID = New.OurOrgnID and DAT_ = :PrevDate and ID <> New.ID into :PrevMoveID; Select PodrPostID from PrsnMove where ID = :PrevMoveID into :PodrPostID; if (:PodrPostID is not Null) then begin Update PodrPost Set PrsnID = Null where ID = :PodrPostID and PrsnID = New.PrsnID; end end if (New.Typ in (0, 1) and New.PodrPostID is not Null) then begin /* прием на работу / перевод - занять вакантную должность */ update PodrPost set PrsnID = New.PrsnID where ID = New.PodrPostID and PrsnID is Null; end Execute Procedure PrsnMove_UpdatePrsn(New.PrsnID); end ^ /* Trigger: PRSNMOVE_AU0 */ CREATE TRIGGER PRSNMOVE_AU0 FOR PRSNMOVE ACTIVE AFTER UPDATE POSITION 0 AS begin if (Old.PodrPostID <> New.PodrPostID) then begin if (Old.PodrPostID is not Null) then begin if (Old.Typ in (0, 1)) then begin /* отменить прием на работу/перевод */ Update PodrPost Set PrsnID = Null where ID = Old.PodrPostID and PrsnID = Old.PrsnID; end end if (New.PodrPostID is not Null) then begin if (New.Typ in (0, 1)) then begin /* прием на работу/перевод */ Update PodrPost Set PrsnID = New.PrsnID where ID = New.PodrPostID and PrsnID is Null; end end end Execute Procedure PrsnMove_UpdatePrsn(New.PrsnID); end ^ /* Trigger: PRSNMOVE_BD0 */ CREATE TRIGGER PRSNMOVE_BD0 FOR PRSNMOVE ACTIVE BEFORE DELETE POSITION 0 AS declare variable ID integer; begin Select ID from PrsnMove where PrsnID = Old.PrsnID and (DAT_ > Old.DAT_ or (DAT_ = Old.DAT_ and ID > Old.ID)) into :ID; if (:ID is not Null) then Exception Common_Exception 'Можно удалять только последнюю запись...'; end ^ /* Trigger: PRSNMOVE_BEFORE_UPDATE */ CREATE TRIGGER PRSNMOVE_BEFORE_UPDATE FOR PRSNMOVE ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.Oklad is Null) then New.Oklad = 0.0; if (New.PodrPostID=0) then New.PodrPostID = Null; end ^ /* Trigger: PRSNMOVE_BI0 */ CREATE TRIGGER PRSNMOVE_BI0 FOR PRSNMOVE ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(PrsnMove_ID, 1); if (New.Oklad is Null) then New.Oklad = 0.0; end ^ /* Trigger: PRSNOPEMAIL_BI */ CREATE TRIGGER PRSNOPEMAIL_BI FOR PRSNOPEMAIL ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(PrsnOpEMail_ID, 1); end ^ /* Trigger: PRSNOPEMAIL_BU */ CREATE TRIGGER PRSNOPEMAIL_BU FOR PRSNOPEMAIL ACTIVE BEFORE UPDATE POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(PrsnOpEMail_ID, 1); New.LastEdit = Current_TimeStamp; end ^ /* Trigger: PRSNOPERTYPE_BI */ CREATE TRIGGER PRSNOPERTYPE_BI FOR PRSNOPERTYPE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_PRSNOPERTYPE_ID,1); END ^ /* Trigger: PRSNOPERTYPE_BU0 */ CREATE TRIGGER PRSNOPERTYPE_BU0 FOR PRSNOPERTYPE ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: PRSNOPER_BI */ CREATE TRIGGER PRSNOPER_BI FOR PRSNOPER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_PRSNOPER_ID,1); END ^ /* Trigger: PRSNOPER_BU0 */ CREATE TRIGGER PRSNOPER_BU0 FOR PRSNOPER ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = current_timestamp; end ^ /* Trigger: PRSNPOSTPROF_BI */ CREATE TRIGGER PRSNPOSTPROF_BI FOR PRSNPOSTPROF ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(PRSNPOSTPROF_ID,1); END ^ /* Trigger: PRSNPOST_BEFORE_INSERT */ CREATE TRIGGER PRSNPOST_BEFORE_INSERT FOR PRSNPOST ACTIVE BEFORE INSERT POSITION 0 AS begin if(New.ID is null or New.ID=0) then New.ID = Gen_ID(PrsnPost_ID,1); end ^ /* Trigger: PRSNPOST_BEFORE_UPDATE */ CREATE TRIGGER PRSNPOST_BEFORE_UPDATE FOR PRSNPOST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: PRSNTEST_BI */ CREATE TRIGGER PRSNTEST_BI FOR PRSNTEST ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(PRSNTEST_ID,1); END ^ /* Trigger: PRSNTEST_BU0 */ CREATE TRIGGER PRSNTEST_BU0 FOR PRSNTEST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: PTANSW_BI */ CREATE TRIGGER PTANSW_BI FOR PTANSW ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(PTANSW_ID,1); END ^ /* Trigger: PTANSW_BU0 */ CREATE TRIGGER PTANSW_BU0 FOR PTANSW ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: PTQUEST_BI */ CREATE TRIGGER PTQUEST_BI FOR PTQUEST ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(PTQUEST_ID,1); END ^ /* Trigger: PTQUEST_BU0 */ CREATE TRIGGER PTQUEST_BU0 FOR PTQUEST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: RBPRODOC_BEFORE_INSERT */ CREATE TRIGGER RBPRODOC_BEFORE_INSERT FOR RBPRODOC ACTIVE BEFORE INSERT POSITION 0 AS begin new.lastedit = Current_TimeStamp; if(new.id is null or new.id=0) then new.id=Gen_ID(RbProDoc_ID,1); end ^ /* Trigger: RBPRODOC_BEFORE_UPDATE */ CREATE TRIGGER RBPRODOC_BEFORE_UPDATE FOR RBPRODOC ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = Current_TimeStamp; if(new.id is null or new.id=0) then new.id=Gen_ID(RbProDoc_ID,1); end ^ /* Trigger: REPLICATIONLOGFLD_BI0 */ CREATE TRIGGER REPLICATIONLOGFLD_BI0 FOR REPLICATIONLOGFLD ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(ReplicationLogFld_ID,1); end ^ /* Trigger: REPLICATIONLOGREC_BI0 */ CREATE TRIGGER REPLICATIONLOGREC_BI0 FOR REPLICATIONLOGREC ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(ReplicationLogRec_ID,1); end ^ /* Trigger: REPLICATIONLOG_BI0 */ CREATE TRIGGER REPLICATIONLOG_BI0 FOR REPLICATIONLOG ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(ReplicationLog_ID,1); end ^ /* Trigger: REPLICATIONOFFICE_BI0 */ CREATE TRIGGER REPLICATIONOFFICE_BI0 FOR REPLICATIONOFFICE ACTIVE BEFORE INSERT POSITION 0 AS declare variable CID integer; begin if (New.ID is Null) then New.ID = Gen_ID(ReplicationOffice_ID,1); Select ID from ReplicationOffice where CurrentOffice = 1 into :CID; if (:CID is Null) then New.CurrentOffice = 1; Select ID from ReplicationOffice where MainOffice = 1 into :CID; if (:CID is Null) then New.MainOffice = 1; end ^ /* Trigger: REPLICATIONOFFICE_BU0 */ CREATE TRIGGER REPLICATIONOFFICE_BU0 FOR REPLICATIONOFFICE ACTIVE BEFORE UPDATE POSITION 0 AS begin if (New.CurrentOffice = 1 and Old.CurrentOffice = 0) then begin /* этот оффис назначен текущим */ Update ReplicationOffice set CurrentOffice = 0 where ID <> Old.ID and CurrentOffice = 1; end if (New.MainOffice = 1 and Old.MainOffice = 0) then begin /* этот оффис назначен главным */ Update ReplicationOffice set MainOffice = 0 where ID <> Old.ID and MainOffice = 1; end end ^ /* Trigger: RESERVLOG_BEFORE_INSERT */ CREATE TRIGGER RESERVLOG_BEFORE_INSERT FOR RESERVLOG ACTIVE BEFORE INSERT POSITION 0 AS begin New.ID = Gen_ID(ReservLog_ID, 1); New.BDateTime = Current_TimeStamp; if (New.PrsnID = 0) then New.PrsnID = Null; if (New.Manager = 0) then New.Manager = Null; end ^ /* Trigger: SALEACCN_BEFORE_INSERT */ CREATE TRIGGER SALEACCN_BEFORE_INSERT FOR SALEACCN ACTIVE BEFORE INSERT POSITION 0 as begin new.id = gen_id(saleaccn_id, 1); end ^ /* Trigger: SALECROS_AD0 */ CREATE TRIGGER SALECROS_AD0 FOR SALECROS ACTIVE AFTER DELETE POSITION 0 AS declare variable SZID integer; declare variable Typ Integer; declare variable DgvID Integer; begin select SZID, Typ from DgvDt where ID = Old.DgvKey into :SZID, :Typ; if (:Typ = 10) then begin select DgvID from DgvDt_CRecalc(Old.DgvKey) into :DgvID; -- exception common_exception 'DgvID: ' || Old.DgvKey; end Update DgvDt DD Set SaleSumma = SaleSumma - Old.Summa, DD.SCSumma = DD.SCSumma + Old.cSumma, No_LastEdit=1 where ID = Old.DgvKey; if (:SZID is Null or Old.SZDTCRID is Null) then begin -- накладная не из заказа, или оплачена отдельно (не из заказа) Update Sale Set Summ = Summ + Old.Summa, cSumm = cSumm + Old.cSumma where ID = Old.SaleKey; end if (:SZID is not Null) then begin-- накладная из заказа delete from SZDtCr where ID = Old.SZDtCrID; Update StorZakazDt set Summ = Summ + Old.Summa, No_LastEdit=1 where ID = :SZID; end end ^ /* Trigger: SALECROS_AI0 */ CREATE TRIGGER SALECROS_AI0 FOR SALECROS ACTIVE AFTER INSERT POSITION 0 AS declare variable SZID integer; begin Select SZID from DgvDt where ID = New.DgvKey into :SZID; Update DgvDt set SaleSumma = SaleSumma + New.Summa, No_LastEdit=1 where ID = New.DgvKey; if (:SZID is Null) then -- накладная не из заказа Update Sale Set Summ = Summ - New.Summa where ID = New.SaleKey; if (:SZID is not Null) then -- накладная из заказа Update StorZakazDt set Summ = Summ - New.Summa, No_LastEdit=1 where ID = :SZID; end ^ /* Trigger: SALEDTDATA_BI */ CREATE TRIGGER SALEDTDATA_BI FOR SALEDTDATA ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(SaleDtData_ID, 1); end ^ /* Trigger: SALEDTDATA_BU */ CREATE TRIGGER SALEDTDATA_BU FOR SALEDTDATA ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: SALEDTVKCR_AD0 */ CREATE TRIGGER SALEDTVKCR_AD0 FOR SALEDTVKCR ACTIVE AFTER DELETE POSITION 0 AS begin Update Sale Set Summ = Summ + Old.Summa where ID = Old.SaleID; Update VKSL set SSummaDt = SSummaDt - Old.Summa, No_LastEdit=1 where ID = Old.VKSLID; end ^ /* Trigger: SALEDTVKCR_AI0 */ CREATE TRIGGER SALEDTVKCR_AI0 FOR SALEDTVKCR ACTIVE AFTER INSERT POSITION 0 AS begin Update Sale set Summ = Summ - New.Summa where ID = New.SaleID; Update VKSL set SSummaDt = SSummaDt + New.Summa, No_LastEdit=1 where ID = New.VKSLID; end ^ /* Trigger: SALEDUCR_AD0 */ CREATE TRIGGER SALEDUCR_AD0 FOR SALEDUCR ACTIVE AFTER DELETE POSITION 0 AS begin Update Sale Set Summ = Summ+Old.summa, cSumm = cSumm + Old.cSumma where ID = Old.SaleKey; Update DgvDtU set SaleSumma = SaleSumma - Old.Summa, SCSumma = SCSumma - Old.cSumma, No_LastEdit=1 where ID = Old.DgvKey; execute procedure DgvDtU_CReCalc(Old.DgvKey); end ^ /* Trigger: SALEDUCR_AI0 */ CREATE TRIGGER SALEDUCR_AI0 FOR SALEDUCR ACTIVE AFTER INSERT POSITION 0 AS declare variable CurrTyp integer; declare variable sCurs double precision; declare variable dCurs double precision; begin Select CurrTyp, Curs from Sale where ID = New.SaleKey into :CurrTyp, :sCurs; Select Curs from DgvDtU where ID = New.DgvKey into :dCurs; if (CurrTyp is not Null) then begin -- экспорт Update Sale set cSumm = cSumm - New.cSumma, Summ = Summ - New.cSumma * :sCurs where ID = New.SaleKey; Update DgvDtU set SCSumma = SCSumma + New.CSumma, SaleSumma = SaleSumma + New.cSumma * :dCurs, No_LastEdit=1 where ID = New.DgvKey; end else begin -- услуги в нац. валюте Update Sale Set Summ = Summ-New.Summa where ID = New.SaleKey; Update DgvDtU set SaleSumma = SaleSumma + New.Summa, No_LastEdit=1 where ID = New.DgvKey; end end ^ /* Trigger: SALEKTAC_BEFORE_INSERT */ CREATE TRIGGER SALEKTAC_BEFORE_INSERT FOR SALEKTAC ACTIVE BEFORE INSERT POSITION 0 as begin new.id=gen_id(salektac_id,1); end ^ /* Trigger: SALEKTCR_AD0 */ CREATE TRIGGER SALEKTCR_AD0 FOR SALEKTCR ACTIVE AFTER DELETE POSITION 0 AS declare variable dDate Date; declare variable sDate Date; declare variable Typ integer; declare variable CurrTyp integer; declare variable sCurrTyp integer; begin Select DAT_, CurrTyp from SaleKt where ID=Old.SaleKey into :sDate, :sCurrTyp; Update SaleKt set Summa = Summa where ID=Old.SaleKey; Select DAT_, Typ, CurrTyp from DgvKt where ID=Old.DgvKey into :dDate, :Typ, :CurrTyp; if (:Typ=5 and :CurrTyp is not Null and :sDate < :dDate) then /* оприходование импорта - при ранней оплате */ /* пересчитать себестоимость товара */ Execute procedure DgvKt_CReCalc Old.DgvKey; else /* просто обновить проводки */ Update DgvKt set Summa = Summa, No_LastEdit=1 where ID=Old.DgvKey; end ^ /* Trigger: SALEKTCR_BEFORE_INSERT */ CREATE TRIGGER SALEKTCR_BEFORE_INSERT FOR SALEKTCR ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(SaleKtCr_ID,1); end ^ /* Trigger: SALEKTDATA_BI */ CREATE TRIGGER SALEKTDATA_BI FOR SALEKTDATA ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(SaleKtData_ID, 1); end ^ /* Trigger: SALEKTDATA_BU */ CREATE TRIGGER SALEKTDATA_BU FOR SALEKTDATA ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: SALEKT_AD0 */ CREATE TRIGGER SALEKT_AD0 FOR SALEKT ACTIVE AFTER DELETE POSITION 0 AS begin Delete from CurrStor where ID = Old.CurrStorID; if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: SALEKT_AD1 */ CREATE TRIGGER SALEKT_AD1 FOR SALEKT ACTIVE AFTER DELETE POSITION 1 AS begin if (Old.CTyp=1 and Old.CurrTyp is not Null and Old.NameID<>Old.OurOrgnID and Old.CSDTKTHBID is not Null and Old.OrgnInfoID is not Null) then Delete From CurrStorDtKt where DocTyp=0 and DocID=Old.ID; end ^ /* Trigger: SALEKT_AFTER_INSERT */ CREATE TRIGGER SALEKT_AFTER_INSERT FOR SALEKT ACTIVE AFTER INSERT POSITION 0 AS declare variable DID integer; begin if (New.OperID is not Null) then execute procedure salekt_genaccnrec(New.ID); else begin for select ID from SaleKtData where SaleID = New.ID into :DID do execute procedure SaleKtData_GenAccnRec(:DID); end end ^ /* Trigger: SALEKT_AFTER_UPDATE */ CREATE TRIGGER SALEKT_AFTER_UPDATE FOR SALEKT ACTIVE AFTER UPDATE POSITION 0 AS declare variable DgvID integer; declare variable DID integer; begin execute procedure salekt_delaccnrec(new.id); if (New.OperID is not Null) then execute procedure salekt_genaccnrec(New.ID); else begin for select ID from SaleKtData where SaleID = New.ID into :DID do execute procedure SaleKtData_GenAccnRec(:DID); end For Select DgvKey from SaleKtCr where SaleKey=New.ID into :DgvID do Update DgvKt set Summa=Summa, No_LastEdit=1 where ID=:DgvID; for select DgvKey from SaleKuCr where SaleKey=New.ID into :DgvID do Update DgvKtU set Summa=Summa, No_LastEdit=1 where ID=:DgvID; for select VkslID from SaleKtVkCr where SaleID=New.ID into :DgvID do Update VkSl set Summa=Summa, No_LastEdit=1 where ID=:DgvID; end ^ /* Trigger: SALEKT_AI1 */ CREATE TRIGGER SALEKT_AI1 FOR SALEKT ACTIVE AFTER INSERT POSITION 1 AS declare variable CSID integer; begin if (New.NameID <> New.OurOrgnID and New.CTYP=1 and New.CurrTyp is not null and New.SaleDate is not null and New.CSDTKTHBID is not Null and New.OrgnInfoID is not Null) then begin CSID = Gen_ID(CurrStorDtKt_ID, 1); insert Into CurrStorDtKt(ID, OurOrgnID, DAT_, NameID, CurrTyp, Curs, CSUMMA, CSUMM, DocTyp, DocID, OrgnInfoID, CSDTKTHBID, UserName) Values(:CSID, New.OurOrgnID, New.SaleDate, New.NameID, New.CurrTyp, New.Curs, - New.CSUMMA, -New.CSUMMA, 0, New.ID, New.OrgnInfoID, New.CSDTKTHBID, New.UserName); end end ^ /* Trigger: SALEKT_AU0_BDG */ CREATE TRIGGER SALEKT_AU0_BDG FOR SALEKT ACTIVE AFTER UPDATE POSITION 2 AS declare variable UpdFlag integer; begin updFlag = 0; if ((New.DAT_ <> Old.DAT_) or (New.DAT_ IS Null and Old.DAT_ is not null) or (New.DAT_ is not Null and Old.DAT_ is null) ) then updflag = 1; if ((New.SaleDate <> Old.SaleDate) or (New.SaleDate is Null and Old.SaleDate is not null) or (New.SaleDate is not Null and Old.SaleDate is null) ) then updflag = 1; if (CoalEsce(New.Nbr,'') <> CoalEsce(Old.Nbr,'')) then updflag = 1; if (CoalEsce(New.Summa,0) <> CoalEsce(Old.Summa,0)) then updflag = 1; if (CoalEsce(New.CSumma,0) <> CoalEsce(Old.CSumma,0)) then updflag = 1; if (CoalEsce(New.Curs,0) <> CoalEsce(Old.Curs,0)) then updflag = 1; if (CoalEsce(New.CurrTyp,0) <> CoalEsce(Old.CurrTyp,0)) then updflag = 1; if (CoalEsce(New.NameID,0) <> CoalEsce(Old.NameID,0)) then updflag = 1; if (CoalEsce(New.Comment,'') <> CoalEsce(Old.Comment,'')) then updflag = 1; if (CoalEsce(New.OrgnInfoID,0) <> CoalEsce(Old.OrgnInfoID,0)) then updflag = 1; update obj_class set bdg_state = 3 where :updFlag=1 and id = new.objid and bdg_state in (1, 4); end ^ /* Trigger: SALEKT_AU1 */ CREATE TRIGGER SALEKT_AU1 FOR SALEKT ACTIVE AFTER UPDATE POSITION 1 AS declare variable CSID integer; begin CSID = Null; if (Old.CTyp=1 and Old.CurrTyp is not Null and OLd.CSDTKTHBID is not Null and Old.OrgnInfoID is not Null) then begin Select ID from CurrStorDtKt where DocTyp=0 and DocID=Old.ID into :CSID; end if (New.NameID=New.OurOrgnID or New.CTyp <> 1 or New.CurrTyp is Null or New.SaleDate is Null or New.CSDTKTHBID is Null or New.OrgnInfoID is Null) then begin if (:CSID is not Null) then Delete from CurrStorDtKt where ID = :CSID; end else begin if (:CSID is Null) then begin CSID = Gen_ID(CurrStorDtKt_ID, 1); Insert into CurrStorDtKt(ID, OurOrgnID, DAT_, NameID, CurrTyp, Curs, CSUMMA, CSUMM, UserName, DocTyp, DocID, OrgnInfoID, CSDTKTHBID) Values(:CSID, New.OurOrgnID, New.SaleDate, New.NameID, New.CurrTyp, New.Curs, -New.CSUMMA, -New.CSUMMA, New.UserName, 0, New.ID, New.OrgnInfoID, New.CSDTKTHBID); end else begin -- CSID = 100 /0; Update CurrStorDtKt Set DAT_=New.SaleDate, NameID=New.NameID, CurrTyp=New.CurrTyp, Curs=New.Curs, CSUMMA=-New.CSUMMA, CSUMM=-New.CSUMMA, UserName=New.UserName, OrgnInfoID=New.OrgnInfoID, CSDTKTHBID=New.CSDTKTHBID where ID=:CSID and ((Dat_<>New.SaleDate) or (NameID<>New.NameID) or (CurrTyp<>New.CurrTyp) or (Curs<>New.Curs) or (CSUMMA<>New.CSUMMA) or (OrgnInfoID<>New.OrgnInfoID) or (CSDTKTHBID<>New.CSDTKTHBID)); end end end ^ /* Trigger: SALEKT_BEFORE_DELETE */ CREATE TRIGGER SALEKT_BEFORE_DELETE FOR SALEKT ACTIVE BEFORE DELETE POSITION 0 as begin execute procedure salekt_delaccnrec(old.id); if (Old.CTyp=1) then Delete from CurrStorDtKt where DocTyp=0 and DocID=Old.ID; if (Old.BSaleDtID is not Null) then Delete from sale where ID = Old.BSaleDtID; end ^ /* Trigger: SALEKT_BEFORE_INSERT */ CREATE TRIGGER SALEKT_BEFORE_INSERT FOR SALEKT ACTIVE BEFORE INSERT POSITION 0 AS declare variable Credit Integer; declare variable cSumma Double Precision; declare variable CurrTyp integer; declare variable Curs double precision; begin if (New.ID is Null) then New.ID = Gen_ID(SaleKt_ID, 1); if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 196); end if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; NEW.SUMM = NEW.SUMMA; New.CSUMM = New.CSUMMA; if (New.CTyp = 1 and New.BDATE is not null and New.BCurs <> 0.0 and New.BESumma <> 0.0) then begin -- продажа валюты - приход на р/c суммы зачисления New.BSaleDtID = Gen_ID(Sale_ID, 1); Insert Into Sale(ID, OurOrgnID, DAT_, Summa, Summ, NameID, Comment, UserName, Nbr, PrsnID, CTyp, OurAccnID, AccnID) Values(New.BSaleDtID, New.OurOrgnID, New.BDATE, New.BESumma, New.BESumma, New.NameID, New.Comment, New.UserName, New.Nbr, New.PrsnID, 0, New.BAccnID, New.AccnID); end if (New.CTyp = 0 and New.BDate is not Null and New.BCurs <> 0.0 and New.BESumma <> 0.0) then begin -- покупка валюты select CurrTyp from OrgnBankAccn where ID = New.BAccnID into :CurrTyp; select Val from Currency_GetValue(:CurrTyp, New.BDate) into :Curs; New.BSaleDtID = Gen_ID(Sale_ID, 1); insert into Sale(ID, OurOrgnID, Dat_, Nbr, CTYP, Summa, Summ, UserName, NameID, CurrTyp, Curs, CSumma, CSumm, OurAccnID, AccnID, PrsnID, Comment) values(New.BSaleDtID, New.OurOrgnID, New.BDate, New.Nbr, 1, New.BESumma * :Curs, New.BESumma * :Curs, New.UserName, New.NameID, :CurrTyp, :Curs, New.BESumma, New.BESumma, New.BAccnID, New.AccnID, New.PrsnID, New.Comment); end if (New.CurrTyp is not null and New.OurAccnID is not Null) then begin /* движение валюты */ Select Credit from OrgnBankAccn where ID=New.OurAccnID into :Credit; cSumma = New.cSumma; if (:Credit=1) then cSumma = -cSumma; New.CurrStorID = Gen_ID(CurrStor_ID,1); Insert Into CurrStor(ID, AccnID, DAT_, CurrTyp, Typ, cSumma, Curs, OrgnID) Values(New.CurrStorID, New.OurAccnID, New.DAT_, New.CurrTyp, 2, :cSumma, New.Curs, New.NameID); end end ^ /* Trigger: SALEKT_BEFORE_UPDATE */ CREATE TRIGGER SALEKT_BEFORE_UPDATE FOR SALEKT ACTIVE BEFORE UPDATE POSITION 0 AS declare variable s1 Double Precision; declare variable s2 Double Precision; declare variable CurrStorID integer; declare variable Credit Integer; declare variable cSumma Double Precision; declare variable CurrTyp integer; declare variable Curs double precision; declare variable SaleDtID integer; begin new.LastEdit = Current_TimeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 196); end if (new.summa is null) then new.summa=0; new.summ = new.summa; New.CSumm = New.CSumma; s1=0; s2=0; for select summa from salektcr where salekey=new.id into :s1 do s2=:s2+:s1; for select summa from salekucr where salekey=new.id into :s1 do s2=:s2+:s1; for Select Summa from SaleKtVkCr where SaleID=New.ID into :S1 do S2 = :S2+:S1; new.summ=new.summa-:s2; if(New.CTyp=1) then begin s1 = 0; s2 = 0; for select csumma from salektcr where salekey=new.id into :s1 do s2=:s2+:s1; for select csumma from salekucr where salekey=new.id into :s1 do s2=:s2+:s1; New.Csumm=New.CSumma-:s2; end -- покупка / продажа валюты if (New.CTyp = 1) then begin -- продажа валюты if (New.CurrTyp is not Null and New.BDATE is not null and New.BCurs <> 0.0 and New.BESumma <> 0.0) then begin SaleDtID = Null; select ID from sale where ID=New.BSaleDtID into :SaleDtID; if (:SaleDtID is null) then begin New.BSaleDtID = Gen_ID(Sale_ID, 1); Insert Into Sale(ID, OurOrgnID, DAT_, Summa, Summ, NameID, Comment, UserName, Nbr, PrsnID, CTyp, OurAccnID, AccnID) Values(New.BSaleDtID, New.OurOrgnID, New.BDATE, New.BESumma, New.BESumma, New.NameID, New.Comment, New.UserName, New.Nbr, New.PrsnID, 0, New.BAccnID, New.AccnID); end else begin Update Sale Set DAT_=New.BDate, Summa=New.BESumma, NameID=New.NameID, Comment=New.Comment, UserName=New.UserName, Nbr=New.Nbr, PrsnID=New.PrsnID, OurAccnID=New.BAccnID, AccnID=New.AccnID where ID=New.BSaleDtID; end end else delete from Sale where ID=New.BSaleDtID; end else begin -- покупка валюты if (New.BDate is not Null and New.BCurs <> 0.0 and New.BESumma <> 0.0) then begin SaleDtID = Null; select ID from sale where ID = New.BSaleDtID into :SaleDtID; select CurrTyp from OrgnBankAccn where ID = New.BAccnID into :CurrTyp; select Val from Currency_GetValue(:CurrTyp, New.BDate) into :Curs; if (:SaleDtID is null) then begin New.BSaleDtID = Gen_ID(Sale_ID, 1); insert into Sale(ID, OurOrgnID, Dat_, Nbr, CTYP, Summa, Summ, UserName, NameID, CurrTyp, Curs, CSumma, CSumm, OurAccnID, AccnID, PrsnID, Comment) values(New.BSaleDtID, New.OurOrgnID, New.BDate, New.Nbr, 1, New.BESumma * :Curs, New.BESumma * :Curs, New.UserName, New.NameID, :CurrTyp, :Curs, New.BESumma, New.BESumma, New.BAccnID, New.AccnID, New.PrsnID, New.Comment); end else begin update sale set DAT_ = New.BDate, Nbr = New.NBr, Summa = New.BESumma * :Curs, NameID = New.NameID, cSumma = New.BESumma, CurrTyp = :CurrTyp, Curs = :Curs, OurAccnID = New.BAccnID, AccnID = New.AccnID, PrsnID = New.PrsnID, Comment = New.Comment where ID = New.BSaleDtID and (DAT_ <> New.BDate or Nbr <> New.Nbr or Summa <> New.BESumma * :Curs or NameID <> New.NameID or cSumma <> New.BESumma or CurrTyp <> :CurrTyp or Curs <> :Curs or OurAccnID <> New.BAccnID or AccnID <> New.AccnID or PrsnID <> New.PrsnID or Comment <> New.Comment); end end else delete from Sale where ID = New.BSaleDtID; end if (New.CurrTyp is not null and New.OurAccnID is not Null) then begin -- движение валюты select ID from CurrStor where ID=New.CurrStorID into :CurrStorID; Select Credit from OrgnBankAccn where ID=New.OurAccnID into :Credit; cSumma = New.cSumma; if (:Credit=1) then cSumma = -cSumma; if (:CurrStorID is not Null) then begin if ((Old.OurAccnID <> New.OurAccnID) or (Old.SaleDate<>New.SaleDate)or (Old.CurrTyp<>New.CurrTyp) or (Old.cSumma<>New.cSumma) or (Old.Curs<>New.Curs)or (Old.NameID<>New.NameID)) then begin Delete from CurrStor where ID = OLd.CurrStorID; CurrStorID = Null; end else Update CurrStor set cSumma=New.cSumma, Curs=New.Curs, UserName=New.UserName where ID=:CurrStorID; end if (New.SaleDate is not Null and CurrStorID is null) then begin New.CurrStorID = Gen_ID(CurrStor_ID,1); Insert Into CurrStor(ID, AccnID, DAT_, CurrTyp, Typ, cSumma, Curs, OrgnID, UserName) Values(New.CurrStorID, New.OurAccnID, New.SaleDate, New.CurrTyp, 2, :cSumma, New.Curs, New.NameID, New.UserName); end end end ^ /* Trigger: SALEKUCR_AD0 */ CREATE TRIGGER SALEKUCR_AD0 FOR SALEKUCR ACTIVE AFTER DELETE POSITION 0 AS declare variable dCurs double precision; declare variable sCurs double precision; declare variable dcTyp integer; declare variable scTyp integer; begin select cTyp, Curs from DgvKtU where ID = Old.DgvKey into :dcTyp, :dCurs; select cTyp, Curs from SaleKt where Id = Old.SaleKey into :scTyp, :sCurs; if (:dcTyp = 1) then begin Update DgvKtU set scSumma = scSumma - Old.cSumma, SaleSumma = SaleSumma - Old.cSumma * :dCurs, No_LastEdit=1 where ID = Old.DgvKey; execute procedure DgvKtU_cReCalc Old.DgvKey; end if (:dcTyp = 0) then begin Update DgvKtU set SaleSumma = SaleSumma - Old.Summa, No_LastEdit=1 where ID = Old.DgvKey; end if (:scTyp = 1) then begin Update SaleKt set cSumm = cSumm + Old.cSumma, Summ = Summ + Old.cSumma * :sCurs where ID = Old.SaleKey; end if (:scTyp = 0) then begin Update SaleKt set Summ = Summ + Old.Summa where ID = Old.SaleKey; end end ^ /* Trigger: SALEKUCR_AI0 */ CREATE TRIGGER SALEKUCR_AI0 FOR SALEKUCR ACTIVE AFTER INSERT POSITION 0 AS declare variable dCurs double precision; declare variable sCurs double precision; declare variable dcTyp integer; declare variable scTyp integer; begin select cTyp, Curs from DgvKtU where ID = New.DgvKey into :dcTyp, :dCurs; select cTyp, Curs from SaleKt where Id = New.SaleKey into :scTyp, :sCurs; if (:dcTyp = 1) then begin Update DgvKtU set scSumma = scSumma + New.cSumma, SaleSumma = SaleSumma + New.cSumma * :dCurs, No_LastEdit=1 where ID = New.DgvKey; execute procedure DgvKtU_cReCalc New.DgvKey; end if (:dcTyp = 0) then begin Update DgvKtU set SaleSumma = SaleSumma + New.Summa, No_LastEdit=1 where ID = New.DgvKey; end if (:scTyp = 1) then begin Update SaleKt set cSumm = cSumm - New.cSumma, Summ = Summ - New.cSumma * :sCurs where ID = New.SaleKey; end if (:scTyp = 0) then begin Update SaleKt set Summ = Summ - New.Summa where ID = New.SaleKey; end end ^ /* Trigger: SALEKUCR_BI0 */ CREATE TRIGGER SALEKUCR_BI0 FOR SALEKUCR ACTIVE BEFORE INSERT POSITION 0 AS declare variable scTyp integer; declare variable sCurrTyp integer; declare variable sCurs double precision; declare variable sSumm double precision; declare variable scSumm double precision; declare variable dcTyp integer; declare variable dCurrTyp integer; declare variable dCurs double precision; declare variable dSumm double precision; declare variable dcSumm double precision; begin if (New.ID is Null) then New.ID = Gen_ID(SaleKuCr_ID, 1); Select cTyp, CurrTyp, Curs, Summ, cSumm from SaleKt where ID = New.SaleKey into :scTyp, :sCurrTyp, :sCurs, :sSumm, :scSumm; Select cTyp, CurrTyp, Curs, Summa - SaleSumma, cSumma - scSumma from DgvKtU where ID = New.DgvKey into :dcTyp, :dCurrTyp, :dCurs, :dSumm, :dcSumm; if (:scTyp = 1) then begin if (New.cSumma > :scSumm) then New.cSumma = :scSumm; New.Summa = New.cSumma * :sCurs; end if (:scTyp = 0) then begin if (New.Summa > :sSumm) then New.Summa = :sSumm; end if (:dcTyp = 1) then begin if (New.cSumma > :dcSumm) then New.cSumma = :dcSumm; New.Summa = New.cSumma * :sCurs; end if (:dcTyp = 0) then begin if (New.Summa > :dSumm) then New.Summa = :dSumm; end end ^ /* Trigger: SALE_AD0 */ CREATE TRIGGER SALE_AD0 FOR SALE ACTIVE AFTER DELETE POSITION 0 AS begin if (Old.CurrStorID is not Null) then delete from CurrStor where ID=Old.CurrStorID; if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: SALE_AFTER_INSERT */ CREATE TRIGGER SALE_AFTER_INSERT FOR SALE ACTIVE AFTER INSERT POSITION 0 as declare variable CSID integer; declare variable DID integer; begin if (New.OperID is not null) then execute procedure Sale_GenAccnRec New.ID; else begin for select ID from SaleDtData where SaleID = New.ID into :DID do execute procedure SaleDtData_GenAccnRec(:DID); end if (New.CTYP=1 and New.CurrTyp is not null and New.csdtkthbid is Not Null and New.orgninfoid is Not Null) then begin CSID = Gen_ID(CurrStorDtKt_ID, 1); insert Into CurrStorDtKt(ID, DAT_, NameID, CurrTyp, CSUMMA, CSUMM, DocTyp, DocID, OurOrgnID, CSDTKTHBID, ORGNINFOID) Values(:CSID, New.DAT_, New.NameID, New.CurrTyp, New.CSUMMA, New.CSUMMA, 1, New.ID, New.OurOrgnID, New.CSDTKTHBID, New.OrgnInfoID); end end ^ /* Trigger: SALE_AFTER_UPDATE */ CREATE TRIGGER SALE_AFTER_UPDATE FOR SALE ACTIVE AFTER UPDATE POSITION 0 AS declare variable DgvID integer; declare variable DID integer; begin for select DgvKey from saleCros where SaleKey=New.ID into :DgvID do Update DgvDt set Summa=Summa, No_LastEdit=1 where ID=:DgvID; for select DgvKey from SaleDuCr where SaleKey=New.ID into :DgvID do Update DgvDtU set Summa=Summa, No_LastEdit=1 where ID=:DgvID; for select VkslID from SaleDtVkCr where SaleID=New.ID into :DgvID do Update VkSl set Summa=Summa, No_LastEdit=1 where ID=:DgvID; execute procedure Sale_DelAccnRec(new.id); if (New.OperID is not Null) then execute procedure Sale_GenAccnRec New.ID; else begin for select ID from SaleDtData where SaleID = New.ID into :DID do execute procedure SaleDtData_GenAccnRec(:DID); end end ^ /* Trigger: SALE_AU0_BDG */ CREATE TRIGGER SALE_AU0_BDG FOR SALE ACTIVE AFTER UPDATE POSITION 1 AS declare variable updflag integer; begin updflag = 0; if ((New.DAT_ <> Old.DAT_) or (New.DAT_ is Null and Old.DAT_ is not Null) or (New.DAT_ is not Null and Old.DAT_ is Null) ) then updflag = 1; if (CoalEsce(New.Nbr,'') <> CoalEsce(Old.Nbr,'')) then updflag = 1; if (CoalEsce(New.Summa,0) <> CoalEsce(Old.Summa,0)) then updflag = 1; if (CoalEsce(New.CSumma,0) <> CoalEsce(Old.CSumma,0)) then updflag = 1; if (CoalEsce(New.Curs,0) <> CoalEsce(Old.Curs,0)) then updflag = 1; if (CoalEsce(New.CurrTyp,0) <> CoalEsce(Old.CurrTyp,0)) then updflag = 1; if (CoalEsce(New.NameID,0) <> CoalEsce(Old.NameID,0)) then updflag = 1; if (CoalEsce(New.Comment,'') <> CoalEsce(Old.Comment,'')) then updflag = 1; if (CoalEsce(New.OrgnInfoID,0) <> CoalEsce(Old.OrgnInfoID,0)) then updflag = 1; update obj_class set bdg_state = 3 where :updflag=1 and id = new.objid and bdg_state in (1, 4); end ^ /* Trigger: SALE_BEFORE_DELETE */ CREATE TRIGGER SALE_BEFORE_DELETE FOR SALE ACTIVE BEFORE DELETE POSITION 0 as begin execute procedure Sale_DelAccnRec(Old.ID); Delete from CurrStorDtKt where DocTyp=1 and DocID=Old.ID; end ^ /* Trigger: SALE_BEFORE_INSERT */ CREATE TRIGGER SALE_BEFORE_INSERT FOR SALE ACTIVE BEFORE INSERT POSITION 0 as declare variable Credit Integer; declare variable cSumma double precision; begin if (New.ID is Null) then New.ID = Gen_ID(Sale_ID, 1); New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 197); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; New.Summ = New.Summa; New.cSumm = New.cSumma; if (New.CurrTyp is not null and New.OurAccnID is not Null) then begin New.CurrStorID = Gen_ID(CurrStor_ID,1); Select Credit from OrgnBankAccn where ID=New.OurAccnID into :Credit; cSumma = New.cSumma; if (:Credit=1) then cSumma = -cSumma; Insert Into CurrStor(ID, AccnID, DAT_, CurrTyp, Typ, cSumma, Curs, OrgnID) Values(New.CurrStorID, New.OurAccnID, New.DAT_, New.CurrTyp, 1, :cSumma, New.Curs, New.NameID); end end ^ /* Trigger: SALE_BEFORE_UPDATE */ CREATE TRIGGER SALE_BEFORE_UPDATE FOR SALE ACTIVE BEFORE UPDATE POSITION 0 AS declare variable CurrStorID integer; declare variable Credit Integer; declare variable cSumma double precision; begin -- insert into dgvsum (id, summa) values(Gen_ID(DgvDt_ID,1), New.Summa); new.lastedit = Current_TimeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 197); end if (New.Summ < 0.0 or New.summ is null) then New.Summ=0.0; if (New.CSumm < 0.0 or New.CSumm is Null) then New.CSumm = 0.0; -- корректировка остатка при изменении суммы (валюта) if (New.cSumma <> Old.cSumma) then begin if (New.cSumma < Old.cSumma) then begin -- уменьшение суммы ограничить до распределенной if (New.cSumma < Old.cSumma-New.cSumm) then New.cSumma = Old.cSumma-New.cSumm; -- уменьшить остаток на сумму изменения New.cSumm = New.cSumm-(Old.cSumma-New.cSumma); end else begin -- увеличить остаток на сумму изменения New.cSumm = New.cSumm + (New.cSumma-Old.cSumma); end end -- корректировка остатка при изменении суммы if (New.Summa <> Old.Summa) then begin if (New.Summa < Old.Summa) then begin -- уменьшение суммы ограничить до распределенной if (New.Summa < Old.Summa-New.Summ) then New.Summa = Old.Summa-New.Summ; -- уменьшить остаток на сумму изменения New.Summ = New.Summ-(Old.Summa-New.Summa); end else begin -- увеличить остаток на сумму изменения New.Summ = New.Summ + (New.Summa-Old.Summa); end end if (new.summ > new.summa) then new.summ = new.summa; if (New.cSumm > New.cSumma) then New.cSumm = New.cSumma; -- движение валюты if (New.CurrTyp is not null and New.OurAccnID is not Null) then begin select ID from CurrStor where ID=Old.CurrStorID into :CurrStorID; if (:CurrStorID is not Null) then begin if ((New.OurAccnID <> Old.OurAccnID) or (New.Dat_ <> OLd.Dat_) or (New.Curs <> Old.Curs) or (New.cSumma <> Old.cSumma) or (New.NameID <> Old.NameID) or (New.CurrTyp <> Old.CurrTyp)) then begin Delete from CurrStor where ID=Old.CurrStorID; CurrStorID = Null; end else Update CurrStor set cSumma=New.cSumma, Curs=New.Curs, UserName=New.UserName where ID=:CurrStorID; end if (:CurrStorID is Null) then begin Select Credit from OrgnBankAccn where ID=New.OurAccnID into :Credit; cSumma = New.cSumma; if (:Credit=1) then cSumma = -cSumma; New.CurrStorID = Gen_ID(CurrStor_ID,1); Insert Into CurrStor(ID, AccnID, DAT_, CurrTyp, Typ, cSumma, Curs, OrgnID, UserName) Values(New.CurrStorID, New.OurAccnID, New.DAT_, New.CurrTyp, 1, :cSumma, New.Curs, New.NameID, New.UserName); end end end ^ /* Trigger: SC_CARDT_BI0 */ CREATE TRIGGER SC_CARDT_BI0 FOR SC_CARDT ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(SC_CardT_ID, 1); New.LastEdit = Current_TimeStamp; end ^ /* Trigger: SC_CARDT_BU0 */ CREATE TRIGGER SC_CARDT_BU0 FOR SC_CARDT ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: SC_REMONT1_BI */ CREATE TRIGGER SC_REMONT1_BI FOR SC_REMONT1 ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(SC_Remont1_ID, 1); end ^ /* Trigger: SC_REMONT_AD */ CREATE TRIGGER SC_REMONT_AD FOR SC_REMONT ACTIVE AFTER DELETE POSITION 0 as begin update SC_REMO set SUM_JOB = SUM_JOB - Old.CENA_PROC, SUM_GOODS = SUM_GOODS - Old.PRICEG_PROC, SUMMA = SUMMA - Old.CENA_PROC - Old.PRICEG_PROC where ID = Old.RemoID; end ^ /* Trigger: SC_REMONT_AI */ CREATE TRIGGER SC_REMONT_AI FOR SC_REMONT ACTIVE AFTER INSERT POSITION 0 as begin update SC_REMO set SUM_JOB = SUM_JOB + New.CENA_PROC, SUM_GOODS = SUM_GOODS + New.PRICEG_PROC, SUMMA = SUMMA + New.CENA_PROC + New.PRICEG_PROC where ID = New.RemoID; end ^ /* Trigger: SC_REMONT_AU */ CREATE TRIGGER SC_REMONT_AU FOR SC_REMONT ACTIVE AFTER UPDATE POSITION 0 as begin if ((New.CENA_PROC <> Old.CENA_PROC) or (New.PRICEG_PROC <> Old.PRICEG_PROC)) then begin update SC_REMO set SUM_JOB = SUM_JOB + New.CENA_PROC - Old.CENA_PROC, SUM_GOODS = SUM_GOODS + New.PRICEG_PROC - Old.PRICEG_PROC, SUMMA = SUMMA + New.CENA_PROC - Old.CENA_PROC + New.PRICEG_PROC - Old.PRICEG_PROC where ID = New.RemoID; end end ^ /* Trigger: SC_REMONT_BI */ CREATE TRIGGER SC_REMONT_BI FOR SC_REMONT ACTIVE BEFORE INSERT POSITION 0 as declare variable proc_job double precision; begin if (New.CENA is Null) then New.CENA = 0.0; if (New.WTIME is Null) then New.WTIME = 0.0; if (New.PriceG is Null) then New.PriceG = 0.0; if (New.PRICEG_PROC is Null) then New.PRICEG_PROC = 0.0; Select CoalEsce(Proc_Job, 0.0) from SC_REMO where ID = New.RemoID into :Proc_Job; New.CENA_PROC = New.CENA - (New.CENA * :Proc_Job / 100.00); end ^ /* Trigger: SC_REMONT_BU */ CREATE TRIGGER SC_REMONT_BU FOR SC_REMONT ACTIVE BEFORE UPDATE POSITION 0 as declare variable proc_job double precision; begin if (New.CENA is Null) then New.CENA = 0.0; if (New.WTIME is Null) then New.WTIME = 0.0; if (New.PriceG is Null) then New.PriceG = 0.0; if (New.CENA_PROC is Null) then New.CENA_PROC = 0.0; if (New.PRICEG_PROC is Null) then New.PRICEG_PROC = 0.0; Select CoalEsce(Proc_Job, 0.0) from SC_REMO where ID = New.RemoID into :Proc_Job; New.CENA_PROC = New.CENA - (New.CENA * :Proc_Job / 100.00); end ^ /* Trigger: SC_REMO_AD */ CREATE TRIGGER SC_REMO_AD FOR SC_REMO ACTIVE AFTER DELETE POSITION 0 as begin if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: SC_REMO_AU */ CREATE TRIGGER SC_REMO_AU FOR SC_REMO ACTIVE AFTER UPDATE POSITION 0 as begin if (New.Proc_Job <> Old.Proc_Job) then update SC_REMONT set CENA=CENA where RemoID = New.ID; if (New.Proc_Goods <> Old.Proc_Goods) then update SC_REMZAP set PRICE=PRICE where REMID in (select RT.ID from SC_REMONT RT where RT.REMOID = New.ID); if (CoalEsce(New.DgvKey, 0) <> 0) then begin Update DgvDt set CsDtKtHbID=New.DtKtID where ID=New.DgvKey; end end ^ /* Trigger: SC_REMO_BI */ CREATE TRIGGER SC_REMO_BI FOR SC_REMO ACTIVE BEFORE INSERT POSITION 0 as declare variable OurOrgnID Integer; declare variable NID integer; declare variable ObjID integer; begin if (New.ID is Null) then New.ID = Gen_ID(SC_REMO_ID, 1); if (New.Nbr is Null or New.Nbr = '') then begin select C.ourorgnid from SC_CARDT C where C.ID=New.cardtid into :OurOrgnID; NID = 0; Select ID from Nbr_Gen_Nbr('Nbr_SCRemo_Nbr', :OurOrgnID) into :NID; if (:NID > 0) then New.Nbr = :NID; end if (New.Proc_Job is Null) then New.Proc_Job = 0.0; if (New.Proc_Goods is Null) then New.Proc_Goods = 0.0; if (New.Sum_Job is Null) then New.Sum_Job = 0.0; if (New.Sum_Goods is Null) then New.Sum_Goods = 0.0; if (New.Summa is Null) then New.Summa = 0.0; ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(:ObjID, 302); New.ObjID = :ObjID; end ^ /* Trigger: SC_REMO_BU */ CREATE TRIGGER SC_REMO_BU FOR SC_REMO ACTIVE BEFORE UPDATE POSITION 0 as declare variable ObjID integer; begin New.LastEdit = Current_TimeStamp; if (New.Proc_Job is Null) then New.Proc_Job = 0.0; if (New.Proc_Goods is Null) then New.Proc_Goods = 0.0; if (New.Sum_Job is Null) then New.Sum_Job = 0.0; if (New.Sum_Goods is Null) then New.Sum_Goods = 0.0; if (New.Summa is Null) then New.Summa = 0.0; if (not exists(select ID from sc_remont where REMOID = New.ID)) then begin New.Sum_Job = 0.0; New.Sum_Goods = 0.0; New.Summa = 0.0; end if (New.ObjID is Null) then begin ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(:ObjID, 302); New.ObjID = :ObjID; end end ^ /* Trigger: SC_REMO_TYPE_BI */ CREATE TRIGGER SC_REMO_TYPE_BI FOR SC_REMO_TYPE ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID=0 or New.ID is Null) then New.ID = Gen_ID(SC_REMO_TYPE_ID, 1); end ^ /* Trigger: SC_REMO_TYPE_BU */ CREATE TRIGGER SC_REMO_TYPE_BU FOR SC_REMO_TYPE ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: SC_REMO_TYPE_PARAMS_BI */ CREATE TRIGGER SC_REMO_TYPE_PARAMS_BI FOR SC_REMO_TYPE_PARAMS ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or (New.ID=0) ) then New.ID=Gen_ID(SC_REMO_TYPE_PARAMS_ID, 1); end ^ /* Trigger: SC_REMO_TYPE_PARAMS_BU */ CREATE TRIGGER SC_REMO_TYPE_PARAMS_BU FOR SC_REMO_TYPE_PARAMS ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: SC_REMZAP1_BI */ CREATE TRIGGER SC_REMZAP1_BI FOR SC_REMZAP1 ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(SC_RemZap1_ID, 1); end ^ /* Trigger: SC_REMZAP_AD */ CREATE TRIGGER SC_REMZAP_AD FOR SC_REMZAP ACTIVE AFTER DELETE POSITION 0 as begin update SC_REMONT set PRICEG = PRICEG - Old.Price * Old.Quant, PRICEG_PROC = PRICEG_PROC - Old.SUMMA where ID = Old.REMID; end ^ /* Trigger: SC_REMZAP_AI */ CREATE TRIGGER SC_REMZAP_AI FOR SC_REMZAP ACTIVE AFTER INSERT POSITION 0 as begin update SC_REMONT set PRICEG = PRICEG + New.Price * New.Quant, PRICEG_PROC = PRICEG_PROC + New.SUMMA where ID = New.REMID; end ^ /* Trigger: SC_REMZAP_AU */ CREATE TRIGGER SC_REMZAP_AU FOR SC_REMZAP ACTIVE AFTER UPDATE POSITION 0 as begin update SC_REMONT set PRICEG = PRICEG + New.Price * New.Quant - Old.Price * Old.Quant, PRICEG_PROC = PRICEG_PROC + New.SUMMA - Old.Summa where ID = New.REMID; end ^ /* Trigger: SC_REMZAP_BI */ CREATE TRIGGER SC_REMZAP_BI FOR SC_REMZAP ACTIVE BEFORE INSERT POSITION 0 as declare variable Proc_Goods double precision; begin if (New.Quant is Null) then New.Quant = 0.0; if (New.Price is Null) then New.Price = 0.0; select CoalEsce(R2.Proc_Goods, 0.0) from SC_REMONT R1, SC_REMO R2 where R1.ID = New.REMID and R2.ID = R1.REMOID into :Proc_Goods; New.Price_Proc = New.Price - (New.Price * :Proc_Goods / 100.00); New.Summa = New.Price_Proc * New.Quant; end ^ /* Trigger: SC_REMZAP_BU */ CREATE TRIGGER SC_REMZAP_BU FOR SC_REMZAP ACTIVE BEFORE UPDATE POSITION 0 as declare variable Proc_Goods double precision; begin if (New.Quant is Null) then New.Quant = 0.0; if (New.Price is Null) then New.Price = 0.0; select CoalEsce(R2.Proc_Goods, 0.0) from SC_REMONT R1, SC_REMO R2 where R1.ID = New.REMID and R2.ID = R1.REMOID into :Proc_Goods; New.Price_Proc = New.Price - (New.Price * :Proc_Goods / 100.00); New.Summa = New.Price_Proc * New.Quant; end ^ /* Trigger: SERVICESVD_BI0 */ CREATE TRIGGER SERVICESVD_BI0 FOR SERVICESVD ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(ServicesVD_ID, 1); end ^ /* Trigger: STORACCN_BI0 */ CREATE TRIGGER STORACCN_BI0 FOR STORACCN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.Oper is Null) then begin Select Oper from AcOprLst where ID=New.OperID into New.Oper; end end ^ /* Trigger: STORACCN_BU0 */ CREATE TRIGGER STORACCN_BU0 FOR STORACCN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.Oper is Null) then begin Select Oper from AcOprLst where ID=New.OperID into New.Oper; end end ^ /* Trigger: STORGRPREF_BI0 */ CREATE TRIGGER STORGRPREF_BI0 FOR STORGRPREF ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null) then New.ID=Gen_ID(StorGrpRef_ID,1); end ^ /* Trigger: STORGRP_BD0 */ CREATE TRIGGER STORGRP_BD0 FOR STORGRP ACTIVE BEFORE DELETE POSITION 0 as begin Delete From StorGrpRef where GrpID=OLd.ID; end ^ /* Trigger: STORGRP_BI0 */ CREATE TRIGGER STORGRP_BI0 FOR STORGRP ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null) then New.ID=Gen_ID(StorGrp_ID, 1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: STORGRP_NCOST_BI */ CREATE TRIGGER STORGRP_NCOST_BI FOR STORGRP_NCOST ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or (New.ID=0) ) then New.ID = Gen_ID(StorGrp_NCost_ID, 1); end ^ /* Trigger: STORGRP_NCOST_BU */ CREATE TRIGGER STORGRP_NCOST_BU FOR STORGRP_NCOST ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: STORLIST_AI0 */ CREATE TRIGGER STORLIST_AI0 FOR STORLIST ACTIVE AFTER INSERT POSITION 0 AS begin /* Insert Into UserStor(ID, User_ID, Stor_ID, UserName) Select Gen_ID(UserStor_ID,1),ID,New.ID,New.username From UserList; */ end ^ /* Trigger: STORLIST_BD0 */ CREATE TRIGGER STORLIST_BD0 FOR STORLIST ACTIVE BEFORE DELETE POSITION 0 as declare variable ID integer; declare variable Accn varchar(5); begin /* Ссылка на группу складов */ delete from StorGrpRef where StorID=Old.ID; /* Доступ пользователей к Складам */ Delete from UserStor where Stor_ID=Old.ID; /* Начальное сальдо (аналитика по Складам) */ ID = Null; Accn = Null; select ID, Accn from SUB where An=4 and SubKey=Old.ID into :ID, :Accn; if (:ID is not Null) then exception Common_Exception 'По данной записи занесено начальное сальдо по счету: ' || :Accn; /* проводки по распределению накладных расходов - по цеху */ Delete from StorAccn where Oper=80 and Stor=Old.ID; end ^ /* Trigger: STORLIST_BI0 */ CREATE TRIGGER STORLIST_BI0 FOR STORLIST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(StorList_ID, 1); New.LastEdit = Current_TimeStamp; if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; if (New.Typ is Null) then New.Typ = 0; if (New.NdsProc is Null) then New.NdsProc = 20.0; if (New.NdsTyp is Null) then New.NdsTyp = 1; end ^ /* Trigger: STORLIST_BU0 */ CREATE TRIGGER STORLIST_BU0 FOR STORLIST ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: STORZAKAZDT_AU */ CREATE TRIGGER STORZAKAZDT_AU FOR STORZAKAZDT ACTIVE AFTER UPDATE POSITION 0 as declare variable SzGdsID integer; declare variable BQuant double precision; declare variable SLSumma double precision; begin if (Old.State = 4 and New.State <> 4) then begin -- открытие заказа for select ID, CoalEsce(BQuant, 0.0) from StorZDtGds where SZID = Old.ID into :SzGdsID, :BQuant do begin if (:BQuant <> 0.0) then begin update StorZDtGds set Source = Source + :BQuant, BQuant = 0.0 where ID = :SzGdsID; end end select Summa from StorZakazDt_SLSumma(New.ID) into :SLSumma; -- открытие заявок update WorkRequest set Closed = 0 where SZID=New.ID; end end ^ /* Trigger: STORZAKAZDT_BD0 */ CREATE TRIGGER STORZAKAZDT_BD0 FOR STORZAKAZDT ACTIVE BEFORE DELETE POSITION 0 AS begin if (Old.ObjID is not Null) then Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: STORZAKAZDT_BI0 */ CREATE TRIGGER STORZAKAZDT_BI0 FOR STORZAKAZDT ACTIVE BEFORE INSERT POSITION 0 AS declare variable ObjID integer; begin if (New.ID is Null) then New.ID = Gen_ID(StorZakazDt_ID, 1); ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(:ObjID, 200); New.ObjID = :ObjID; end ^ /* Trigger: STORZAKAZDT_BU0 */ CREATE TRIGGER STORZAKAZDT_BU0 FOR STORZAKAZDT ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 200); end if (Not Exists (Select ID from SZDTCR where SZDTID = New.ID)) then New.SaleSumma = 0.0; if (New.SaleSumma < 0.0) then New.SaleSumma = 0.0; if (New.Summ < 0.0) then New.Summ = 0.0; if (New.Summ > New.SaleSumma) then New.Summ = New.SaleSumma; if (New.SLSumma <> Old.SLSumma or New.SaleSumma <> Old.SaleSumma) then begin if (New.SaleSumma < New.SLSumma and Abs(New.SaleSumma-New.SLSumma) > 1.0e-3) then New.SaleDate = Null; else Select Max(S.DAT_) from Sale S, SZDTCR C where C.SZDTID = New.ID and S.ID=C.SaleID into New.SaleDate; end if (New.No_LastEdit = 1) then begin if (Old.LastEdit is not Null) then New.LastEdit = Old.LastEdit; if (CoalEsce(Old.UserName,'')<>'') then New.UserName = Old.UserName; end if (New.No_LastEdit is Null or New.No_LastEdit <> 0) then New.No_LastEdit = 0; end ^ /* Trigger: STORZDTGDS_AD0 */ CREATE TRIGGER STORZDTGDS_AD0 FOR STORZDTGDS ACTIVE AFTER DELETE POSITION 0 AS begin if (Old.Source <> 0.0 and Old.Price <> 0.0) then Update StorZakazDt set Summa = Summa - (Old.Source * Old.Price) where ID = Old.SZID; end ^ /* Trigger: STORZDTGDS_AI0 */ CREATE TRIGGER STORZDTGDS_AI0 FOR STORZDTGDS ACTIVE AFTER INSERT POSITION 0 AS begin if (New.Source <> 0.0 and New.Price <> 0.0) then Update StorZakazDt set Summa = Summa + (New.Source * New.Price) where ID = New.SZID; end ^ /* Trigger: STORZDTGDS_AU0 */ CREATE TRIGGER STORZDTGDS_AU0 FOR STORZDTGDS ACTIVE AFTER UPDATE POSITION 0 AS Declare Variable NewSumma double precision; Declare Variable OldSumma double precision; declare variable OldState integer; declare variable State3 integer; begin NewSumma = New.Source * New.Price; OldSumma = Old.Source * Old.Price; if (:NewSumma <> :OldSumma) then Update StorZakazDt set Summa = Summa - :OldSumma + :NewSumma where ID = New.SZID; if ((New.Source <> Old.Source) or (New.RSQuant <> Old.RSQuant) ) then begin Select State from StorZakazDt where ID = New.SZID into :OldState; State3 = 0; if (not exists (Select D.ID from StorZDtGds D where D.SZID = New.SZID and Abs(D.Source - D.RSQuant) > 1.0e-5)) then State3 = 1; if (:OldState < 3 and :State3 = 1) then Update StorZakazDt set State = 3, ReadyFDateTime = Current_Date where ID = New.SZID; if (:OldState >= 3 and :State3 = 0) then Update StorZakazDt Set State = 0, ReadyFDateTime = Null where ID = New.SZID; end end ^ /* Trigger: STORZDTGDS_BD0 */ CREATE TRIGGER STORZDTGDS_BD0 FOR STORZDTGDS ACTIVE BEFORE DELETE POSITION 0 AS begin Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: STORZDTGDS_BI0 */ CREATE TRIGGER STORZDTGDS_BI0 FOR STORZDTGDS ACTIVE BEFORE INSERT POSITION 0 AS declare variable ObjID integer; begin if (New.ID is Null) then New.ID = Gen_ID(StorZDtGds_ID, 1); ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(:ObjID, 201); New.ObjID = :ObjID; end ^ /* Trigger: STORZDTGDS_BU0 */ CREATE TRIGGER STORZDTGDS_BU0 FOR STORZDTGDS ACTIVE BEFORE UPDATE POSITION 0 AS begin if (Exists (Select D.ID from GddDt D where D.SzGdsID = New.ID) ) then begin New.SizeX = Old.SizeX; New.SizeY = Old.SizeY; New.SizeZ = Old.SizeZ; end if (New.Source <> Old.Source) then begin if (New.Source < New.RSQuant) then New.Source = New.RSQuant; end end ^ /* Trigger: SUB_BI0 */ CREATE TRIGGER SUB_BI0 FOR SUB ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is null or New.ID=0) then New.ID=Gen_ID(Sub_ID,1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: SUB_BU0 */ CREATE TRIGGER SUB_BU0 FOR SUB ACTIVE BEFORE UPDATE POSITION 0 as begin if (New.ID is null or New.ID=0) then New.ID=Gen_ID(Sub_ID,1); New.LastEdit = Current_TimeStamp; end ^ /* Trigger: SYSCONST_BEFORE_INSERT */ CREATE TRIGGER SYSCONST_BEFORE_INSERT FOR SYSCONST ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null or new.id = 0) then new.id=Gen_ID(SysConst_ID,1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: SYSCONST_BEFORE_UPDATE */ CREATE TRIGGER SYSCONST_BEFORE_UPDATE FOR SYSCONST ACTIVE BEFORE UPDATE POSITION 0 as begin if (new.id is null or new.id = 0) then new.id=Gen_ID(SysConst_ID,1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: SYSLOGLOGIN_BI */ CREATE TRIGGER SYSLOGLOGIN_BI FOR SYSLOGLOGIN ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID = 0) then New.ID = Gen_ID(SysLogLogin_ID, 1); end ^ /* Trigger: SYSLOGPROV_BEFORE_INSERT */ CREATE TRIGGER SYSLOGPROV_BEFORE_INSERT FOR SYSLOGPROV ACTIVE BEFORE INSERT POSITION 0 AS begin if(New.ID is null or New.ID=0) then new.id=Gen_ID(syslogprov_ID,1); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: SYSLOG_BEFORE_INSERT */ CREATE TRIGGER SYSLOG_BEFORE_INSERT FOR SYSLOG ACTIVE BEFORE INSERT POSITION 0 AS begin New.DAT_ = Current_TimeStamp; if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: SYSLOG_BI */ CREATE TRIGGER SYSLOG_BI FOR SYSLOG ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (New.ID is Null OR New.ID=0) THEN New.ID=Gen_ID(SysLog_ID, 1); END ^ /* Trigger: SYSLOG_BU */ CREATE TRIGGER SYSLOG_BU FOR SYSLOG ACTIVE BEFORE UPDATE POSITION 0 AS BEGIN IF (New.ID is Null OR New.ID=0) THEN New.ID=Gen_ID(SysLog_ID, 1); END ^ /* Trigger: SZDTCR_AD0 */ CREATE TRIGGER SZDTCR_AD0 FOR SZDTCR ACTIVE AFTER DELETE POSITION 0 AS begin Update Sale Set Summ = Summ + Old.Summa where ID = Old.SaleID; Update StorZakazDt set SaleSumma = SaleSumma - Old.Summa, Summ = Summ - Old.Summa, No_LastEdit=1 where ID = Old.SZDTID; end ^ /* Trigger: SZDTCR_AI0 */ CREATE TRIGGER SZDTCR_AI0 FOR SZDTCR ACTIVE AFTER INSERT POSITION 0 AS declare variable DgvDtID integer; declare variable dSumm double precision; declare variable dSumma double precision; declare variable SM double precision; declare variable SMSumm double precision; begin Update Sale set Summ = Summ - New.Summa where ID = New.SaleID; Update StorZakazDt set SaleSumma = SaleSumma + New.Summa, No_LastEdit=1 where ID = New.SZDTID; dSumma = New.Summa; /* итоговая сумма оплаты */ SMSumm = 0.0; /* распределение по накладным заказа */ for select ID, Summa-SaleSumma from DgvDt where SZID = New.SZDTID and (Summa-SaleSumma > 0.0) and Typ = 0 order by DAT_, ID into :DgvDtID, :dSumm do begin SM = :dSumma; if (:SM < 0.0) then SM = 0.0; if (:dSumm < 0.0) then dSumm = 0.0; if (:dSumm < :SM) then SM = :dSumm; if (:SM > 0.0) then begin insert into SaleCros(ID, SaleKey, DgvKey, SZDTCRID, Summa, UserName) values(Gen_ID(SaleCros_ID, 1), New.SaleID, :DgvDtID, New.ID, :SM, New.UserName); dSumma = :dSumma - :SM; SMSumm = :SMSumm + :SM; end end end ^ /* Trigger: SZDTCR_BI0 */ CREATE TRIGGER SZDTCR_BI0 FOR SZDTCR ACTIVE BEFORE INSERT POSITION 0 AS declare variable sSumm double precision; declare variable zSumm double precision; begin if (New.ID is Null) then New.ID = Gen_ID(SZDTCR_ID, 1); Select Summ from Sale where ID = New.SaleID into :sSumm; Select SLSUMMA-SALESUMMA from StorZakazDt where ID = New.SZDTID into :zSumm; if (:sSumm is Null) then sSumm = 0.0; if (:zSumm is Null) then zSumm = 0.0; if (:sSumm < 0.0) then sSumm = 0.0; if (:zSumm < 0.0) then zSumm = 0.0; if (New.Summa > :sSumm) then New.Summa = :sSumm; if (New.Summa > :zSumm) then New.Summa = :zSumm; if (New.Summa < 0.0) then New.Summa = 0.0; end ^ /* Trigger: SZDTCR_BU0 */ CREATE TRIGGER SZDTCR_BU0 FOR SZDTCR ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: USERDCATEGORY_BI */ CREATE TRIGGER USERDCATEGORY_BI FOR USERDCATEGORY ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_USERDCATEGORY_ID,1); if (new.lastedit is null) then new.lastedit = current_timestamp; END ^ /* Trigger: USERDDOCFOLDER_BI */ CREATE TRIGGER USERDDOCFOLDER_BI FOR USERDDOCFOLDER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_USERDDOCFOLDER_ID,1); END ^ /* Trigger: USERDGRP_AI0 */ CREATE TRIGGER USERDGRP_AI0 FOR USERDGRP ACTIVE AFTER INSERT POSITION 0 AS begin /* авто-доступ по вложенным группам */ insert into UserDGrp(UserID, DGrpID) select New.UserID, G2.ID from DocmGroups G1, DocmGroups G2 where G1.ID = New.DGrpID and G2.ParentID = G1.ID and G2.ID not in (Select DGrpID from UserDGrp where UserID=New.UserID and DGrpID = G2.ID); end ^ /* Trigger: USERDGRP_BD0 */ CREATE TRIGGER USERDGRP_BD0 FOR USERDGRP ACTIVE BEFORE DELETE POSITION 0 AS begin /* запретить доступ по вложенным группам */ delete from UserDGrp where UserID = Old.UserID and DGrpID in (Select ID from DocmGroups where ParentID = Old.DGrpID); end ^ /* Trigger: USERDGRP_BI0 */ CREATE TRIGGER USERDGRP_BI0 FOR USERDGRP ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(UserDGrp_ID, 1); end ^ /* Trigger: USERGGRP_BD0 */ CREATE TRIGGER USERGGRP_BD0 FOR USERGGRP ACTIVE BEFORE DELETE POSITION 0 AS declare variable GID Integer; begin /* родитель должен отменить доступ для потомков */ delete from UserGGrp UG where UG.UserID=Old.UserID and UG.GGrpID in (Select G.ID from Goods G where G.Owner = Old.GGrpID and G.Grou_=0); end ^ /* Trigger: USERGGRP_BI0 */ CREATE TRIGGER USERGGRP_BI0 FOR USERGGRP ACTIVE BEFORE INSERT POSITION 0 AS declare variable GGrpID Integer; declare variable Owner Integer; begin if (New.ID is Null) then New.ID = Gen_ID(UserGGrp_ID,1); /* потомок должен "пробить" доступ своему родителю */ /* есть ли родитель? */ Select G.Owner From Goods G where G.ID=New.GGrpID into :Owner; /* если это корень - ничего делать не надо */ if (:Owner is not Null) then begin /* добавляем доступ родителю */ select GGrpID from UserGGrp where GGrpID=:Owner and UserID=New.UserID into :GGrpID; /*if (:GGrpID is Null) then Insert Into UserGGrp(UserID, GGrpID, UserName) Values(New.UserID, :Owner, New.UserName); */ end end ^ /* Trigger: USERLIST_AFTER_INSERT */ CREATE TRIGGER USERLIST_AFTER_INSERT FOR USERLIST ACTIVE AFTER INSERT POSITION 0 AS begin /* Авто-доступ по Складам */ Insert Into UserStor(ID, User_ID, Stor_ID, UserName) Select Gen_ID(UserStor_ID,1),New.ID,ID,New.username From StorList; /* Авто-доступ по Кассам */ Insert Into UserKass(ID, User_ID, Kass_ID, UserName) Select Gen_ID(UserKass_ID,1),New.ID,ID,New.username From KassList; /* Авто-доступ по Группам Товаров */ Insert Into UserGGrp(ID, UserID, GGrpID, UserName) Select Gen_ID(UserGGrp_ID,1),New.ID,ID,New.username From Goods where Grou_ = 0; /* доступ по папкам задач для администраторов */ if (New.Rights > 0) then Insert Into UserDGrp (DGrpID, UserID, UserName) Select G.ID, New.ID, New.UserName from DocmGroups G where New.Rights > 0; end ^ /* Trigger: USERLIST_BEFORE_DELETE */ CREATE TRIGGER USERLIST_BEFORE_DELETE FOR USERLIST ACTIVE BEFORE DELETE POSITION 0 AS begin Delete From UserKass where User_ID=Old.ID; Delete From UserOrgn where UserID=Old.ID; Delete From UserStor where User_ID=OLd.ID; Delete From FrReportTreeUser where UserID=Old.ID; end ^ /* Trigger: USERLIST_BEFORE_INSERT */ CREATE TRIGGER USERLIST_BEFORE_INSERT FOR USERLIST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID = 0) then New.ID = Gen_ID(UserList_ID, 1); if (New.PassWrd is Null and New.PSWD is Null) then New.PassWrd = ''; end ^ /* Trigger: USERLIST_BEFORE_UPDATE */ CREATE TRIGGER USERLIST_BEFORE_UPDATE FOR USERLIST ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = Current_TimeStamp; if (New.ID is null or New.ID = 0) then new.id=Gen_ID(UserList_ID,1); if (New.SaleAgent is Null) then New.SaleAgent = 0; if (New.OperMask is Null) then New.OperMask = 0; if (New.AppsMask is Null) then New.AppsMask = 0; if (New.BdgtMask is Null) then New.BdgtMask = 0; if (New.Hb_Stor is Null) then New.Hb_Stor = 0; if (New.Hb_Prsn is Null) then New.Hb_Prsn = 0; if (New.Hb_Orgn is Null) then New.Hb_Orgn = 0; if (New.Hb_Gods is Null) then New.Hb_Gods = 0; end ^ /* Trigger: USERORGN_BI0 */ CREATE TRIGGER USERORGN_BI0 FOR USERORGN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(UserOrgn_ID,1); if (New.AppsMask is Null) then New.AppsMask = 0; if (New.BdgtMask is Null) then New.BdgtMask = 0; if (New.CtlgMask is Null) then New.CtlgMask = 0; if (New.OperMask is Null) then New.OperMask = 0; if (New.CadrMask is Null) then New.CadrMask = 0; if (New.HB_Stor is Null) then New.HB_Stor = 0; if (New.HB_Prsn is Null) then New.HB_Prsn = 0; end ^ /* Trigger: USERPODR_BI0 */ CREATE TRIGGER USERPODR_BI0 FOR USERPODR ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(UserPodr_ID, 1); end ^ /* Trigger: USERPODR_BU0 */ CREATE TRIGGER USERPODR_BU0 FOR USERPODR ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: USERPRLS_BI */ CREATE TRIGGER USERPRLS_BI FOR USERPRLS ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID=0 or (New.id is Null) ) then New.ID = Gen_ID(UserPrLs_ID, 1); end ^ /* Trigger: USERPRLS_BU */ CREATE TRIGGER USERPRLS_BU FOR USERPRLS ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: USERSTOR_BEFORE_INSERT */ CREATE TRIGGER USERSTOR_BEFORE_INSERT FOR USERSTOR ACTIVE BEFORE INSERT POSITION 0 AS begin if (new.id is null or new.id = 0) then new.id=Gen_ID(UserStor_ID,1); end ^ /* Trigger: USERSTOR_BEFORE_UPDATE */ CREATE TRIGGER USERSTOR_BEFORE_UPDATE FOR USERSTOR ACTIVE BEFORE UPDATE POSITION 0 AS begin new.lastedit = Current_TimeStamp; if (new.id is null or new.id = 0) then new.id=Gen_ID(UserStor_ID,1); end ^ /* Trigger: USER_GRPREF_BI0 */ CREATE TRIGGER USER_GRPREF_BI0 FOR USER_GRPREF ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID = 0) then New.ID = Gen_ID(User_GrpRef_ID, 1); end ^ /* Trigger: USER_GRP_BI0 */ CREATE TRIGGER USER_GRP_BI0 FOR USER_GRP ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID = 0) then New.ID = Gen_ID(User_Grp_ID, 1); end ^ /* Trigger: USER_RIGHT_BI */ CREATE TRIGGER USER_RIGHT_BI FOR USER_RIGHT ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_USER_RIGHT_ID,1); END ^ /* Trigger: VENDORNAME_BI */ CREATE TRIGGER VENDORNAME_BI FOR VENDORNAME ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(VendorName_ID, 1); end ^ /* Trigger: VENDORNAME_BU */ CREATE TRIGGER VENDORNAME_BU FOR VENDORNAME ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: VKSLACCR_AFTER_DELETE */ CREATE TRIGGER VKSLACCR_AFTER_DELETE FOR VKSLACCR ACTIVE AFTER DELETE POSITION 0 AS begin Delete From AccnProv where ID=Old.ACCNID; end ^ /* Trigger: VKSLACCR_BEFORE_INSERT */ CREATE TRIGGER VKSLACCR_BEFORE_INSERT FOR VKSLACCR ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is null or (New.ID=0)) then New.ID = Gen_ID(VKSLACCR_ID,1); end ^ /* Trigger: VKSL_AI0 */ CREATE TRIGGER VKSL_AI0 FOR VKSL ACTIVE AFTER INSERT POSITION 0 AS begin Execute Procedure VKSL_GENACCNREC(New.ID, 0); -- покупка Execute Procedure VKSL_GENACCNREC(New.ID, 1); -- продажа Execute Procedure VKSL_GENACCNREC(New.ID, 2); -- выдача / поступление Execute Procedure VKSL_GENACCNREC(New.ID, 3); -- предъявление к платежу Execute Procedure VKSL_GENACCNREC(New.ID, 4); -- акцепт end ^ /* Trigger: VKSL_AU0 */ CREATE TRIGGER VKSL_AU0 FOR VKSL ACTIVE AFTER UPDATE POSITION 0 as begin Execute Procedure VKSL_DELACCNREC Old.ID; Execute Procedure VKSL_GENACCNREC(New.ID, 0); -- покупка Execute Procedure VKSL_GENACCNREC(New.ID, 1); -- продажа Execute Procedure VKSL_GENACCNREC(New.ID, 2); -- выдача / поступление Execute Procedure VKSL_GENACCNREC(New.ID, 3); -- предъявление к платежу Execute Procedure VKSL_GENACCNREC(New.ID, 4); -- акцепт end ^ /* Trigger: VKSL_BEFORE_DELETE */ CREATE TRIGGER VKSL_BEFORE_DELETE FOR VKSL ACTIVE BEFORE DELETE POSITION 0 AS begin if (Old.SaleDtID is not Null) then delete from Sale where ID = Old.SaleDtID; if (Old.SaleKtID is not Null) then delete from SaleKt where ID = Old.SaleKtID; execute Procedure VKSL_DELACCNREC OLD.ID; end ^ /* Trigger: VKSL_BI0 */ CREATE TRIGGER VKSL_BI0 FOR VKSL ACTIVE BEFORE INSERT POSITION 0 AS declare variable SaleKtID integer; declare variable SaleDtID integer; declare variable CTyp integer; declare variable CurrTyp integer; declare variable Curs double precision; declare variable CSumma double precision; begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; if (New.Blns = 1 and New.Out_Date is not Null) then begin CurrTyp = New.CurrTyp; Curs = New.Curs; CSumma = New.CSumma; if (New.CurrTyp is not Null) then CTyp = 1; else begin CTyp = 0; Curs = 0.0; CSumma = 0.0; end if (New.OurOrgnID = New.OrgnVkDtID) then begin -- salekt SaleKtID = Gen_ID(SaleKt_ID, 1); insert into SaleKt(ID, OurOrgnID, Nbr, DAT_, SaleDate, Summa, Summ, CTyp, CurrTyp, Curs, CSumma, CSumm, NameID, Comment, UserName) values(:SaleKtID, New.OurOrgnID, New.Nbr, New.Out_Date, New.Out_Date, New.Summa, New.Summa, :CTyp, :CurrTyp, :Curs, :CSumma, :CSumma, New.OrgnVKKtID, New.IOComment, New.UserName); New.SaleKtID = :SaleKtID; end if (New.OurOrgnID = New.OrgnVkKtID) then begin -- saledt SaleDtID = Gen_ID(Sale_ID, 1); insert into Sale(ID, OurOrgnID, Nbr, DAT_, Summa, Summ, CTyp, CurrTyp, Curs, CSumma, CSumm, NameID, Comment, UserName) values(:SaleDtID, New.OurOrgnID, New.Nbr, New.Out_Date, New.Summa, New.Summa, :CTyp, :CurrTyp, :Curs, :CSumma, :CSumma, New.OrgnVKDtID, New.IOComment, New.UserName); New.SaleDtID = :SaleDtID; end end end ^ /* Trigger: VKSL_BU0 */ CREATE TRIGGER VKSL_BU0 FOR VKSL ACTIVE BEFORE UPDATE POSITION 0 AS declare variable S1 Double Precision; declare variable S2 Double Precision; declare variable SDATE DATE; declare variable SaleDtID integer; declare variable SaleKtID integer; declare variable CurrTyp integer; declare variable Curs double precision; declare variable CSumma double precision; declare variable CTyp integer; begin if (New.SumDt is Null) then New.SumDt = 0.0; if (New.SumKt is Null) then New.SumKt = 0.0; if (New.SSummaDt is Null) then New.SSummaDt = 0.0; if (New.SSummaKt is Null) then New.SSummaKt = 0.0; if (New.Curs is Null) then New.Curs = 0.0; if (New.CursDt is Null) then New.CursDt = 0.0; if (New.CursKt is Null) then New.CursKt = 0.0; if (New.cSumma is Null) then New.cSumma = 0.0; if (New.cSumDt is Null) then New.cSumDt = 0.0; if (New.cSumKt is Null) then New.cSumKt = 0.0; if (New.scSummaDt is Null) then New.scSummaDt = 0.0; if (New.scSummaKt is Null) then New.scSummaKt = 0.0; S1 = 0.0; S2 = 0.0; New.SDATEDT = Null; New.SDATEKT = Null; For Select Summa from SaleKtVkCr where VKSLID=New.ID into :S1 do S2 = :S2+:S1; if (:S2 is Null) then S2 = 0.0; New.SSUMMAKT = :S2; if(:S2 >= New.SUMKT and not(New.OutSale = 1)) then for Select MAX(S.DAT_) from SaleKtVkCr C, SaleKt S where C.VKSLID=New.ID and S.ID=C.SALEID into :SDATE do New.SDATEKT=:SDATE; if(:S2 >= New.SUMMA and New.OutSale = 1) then for Select MAX(S.DAT_) from SaleKtVkCr C, SaleKt S where C.VKSLID=New.ID and S.ID=C.SALEID into :SDATE do New.SDATEKT=:SDATE; S1 = 0.0; S2 = 0.0; For Select Summa from SaleDtVkCr where VKSLID=New.ID into :S1 do S2 = :S2+:S1; if (:S2 is Null) then S2 = 0.0; New.SSUMMADT = :S2; if(:S2 >= New.SUMDT and not(New.OutSale = 1)) then for Select MAX(S.DAT_) from SaleDtVkCr C, Sale S where C.VKSLID=New.ID and S.ID=C.SALEID into :SDATE do New.SDATEDT=:SDATE; if(:S2 >= New.SUMMA and New.OutSale = 1) then for Select MAX(S.DAT_) from SaleDtVkCr C, Sale S where C.VKSLID=New.ID and S.ID=C.SALEID into :SDATE do New.SDATEDT=:SDATE; if (New.Blns = 1 and New.Out_Date is not Null) then begin CurrTyp = New.CurrTyp; Curs = New.Curs; CSumma = New.CSumma; if (New.CurrTyp is not Null) then CTyp = 1; else begin CTyp = 0; Curs = 0.0; CSumma = 0.0; end if (New.OurOrgnID = New.OrgnVkDtID) then begin -- salekt if (Old.SaleKtID is Null or (not exists (select ID from SaleKt where ID = Old.SaleKtID))) then begin SaleKtID = Gen_ID(SaleKt_ID, 1); insert into SaleKt(ID, OurOrgnID, Nbr, DAT_, SaleDate, Summa, Summ, CTyp, CurrTyp, Curs, CSumma, CSumm, NameID, Comment, UserName) values(:SaleKtID, New.OurOrgnID, New.Nbr, New.Out_Date, New.Out_Date, New.Summa, New.Summa, :CTyp, :CurrTyp, :Curs, :CSumma, :CSumma, New.OrgnVkKtID, New.IOComment, New.UserName); New.SaleKtID = :SaleKtID; end else begin update SaleKt set Nbr = New.Nbr, Dat_ = New.Out_Date, SaleDate = New.Out_Date, Summa = New.Summa, CTyp = :CTyp, CurrTyp = :CurrTyp, Curs = :Curs, CSumma = :CSumma, NameID = New.OrgnVkKtID, Comment = New.IOComment, UserName = New.UserName where ID = Old.SaleKtID; end end if (New.OurOrgnID = New.OrgnVkKtID) then begin -- saledt if (Old.SaleDtID is Null or (not exists (select ID from Sale where ID = Old.SaleDtID))) then begin SaleDtID = Gen_ID(Sale_ID, 1); insert into Sale(ID, OurOrgnID, Nbr, DAT_, Summa, Summ, CTyp, CurrTyp, Curs, CSumma, CSumm, NameID, Comment, UserName) values(:SaleDtID, New.OurOrgnID, New.Nbr, New.Out_Date, New.Summa, New.Summa, :CTyp, :CurrTyp, :Curs, :CSumma, :CSumma, New.OrgnVkDtID, New.IOComment, New.UserName); New.SaleDtID = :SaleDtID; end else begin update Sale set Nbr = New.Nbr, Dat_ = New.Out_Date, Summa = New.Summa, CTyp = :CTyp, CurrTyp = :CurrTyp, Curs = :Curs, CSumma = :CSumma, NameID = New.OrgnVkDtID, Comment = New.IOComment, UserName = New.UserName where ID = Old.SaleDtID; end end end if (Old.SaleKtID is not Null) then begin if (Not(New.Blns = 1) or New.Out_Date is Null or New.OurOrgnID <> New.OrgnVkDtID) then begin delete from SaleKt where ID = Old.SaleKtID; New.SaleKtID = Null; end end if (Old.SaleDtID is not Null) then begin if (Not(New.Blns = 1) or New.Out_Date is Null or New.OurOrgnID <> New.OrgnVkKtID) then begin delete from Sale where ID = Old.SaleDtID; New.SaleDtID = Null; end end if (New.No_LastEdit = 1) then begin if (Old.LastEdit is not Null) then New.LastEdit = Old.LastEdit; if (CoalEsce(Old.UserName,'')<>'') then New.UserName = Old.UserName; end if (New.No_LastEdit is Null or New.No_LastEdit <> 0) then New.No_LastEdit = 0; end ^ /* Trigger: WORKCALCMST_AU0 */ CREATE TRIGGER WORKCALCMST_AU0 FOR WORKCALCMST ACTIVE AFTER UPDATE POSITION 0 AS begin execute procedure worknk_DelAccnRec(OLd.ID); execute procedure worknk_GenAccnRec(New.ID); end ^ /* Trigger: WORKCALCMST_BEFORE_DELETE */ CREATE TRIGGER WORKCALCMST_BEFORE_DELETE FOR WORKCALCMST ACTIVE BEFORE DELETE POSITION 0 AS begin Execute procedure WorkNk_DelAccnRec Old.ID; delete from WorkCalcNk where MstID=Old.ID; end ^ /* Trigger: WORKCALCMST_BI0 */ CREATE TRIGGER WORKCALCMST_BI0 FOR WORKCALCMST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: WORKCALCMST_BU0 */ CREATE TRIGGER WORKCALCMST_BU0 FOR WORKCALCMST ACTIVE BEFORE UPDATE POSITION 0 AS begin new.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKCALCNKPRM_BI */ CREATE TRIGGER WORKCALCNKPRM_BI FOR WORKCALCNKPRM ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID=0 or (New.ID is Null) ) then New.ID = Gen_ID(WorkCalcNkPrm_ID, 1); end ^ /* Trigger: WORKCALCNKPRM_BU */ CREATE TRIGGER WORKCALCNKPRM_BU FOR WORKCALCNKPRM ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKCALCNK_BEFORE_DELETE */ CREATE TRIGGER WORKCALCNK_BEFORE_DELETE FOR WORKCALCNK ACTIVE BEFORE DELETE POSITION 0 AS begin delete from WorkCalcPodr where CalcNkID=Old.ID; Delete From WorkNkDg where CalcNkID=Old.ID; Delete From WorkZNK where CalcNkID=Old.ID; end ^ /* Trigger: WORKCALCNK_BI */ CREATE TRIGGER WORKCALCNK_BI FOR WORKCALCNK ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(WorkCalcNk_ID, 1); end ^ /* Trigger: WORKCALCPODR_BI */ CREATE TRIGGER WORKCALCPODR_BI FOR WORKCALCPODR ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID = 0) then New.ID = Gen_ID(WorkCalcPodr_ID, 1); end ^ /* Trigger: WORKCALCPROV_BEFORE_INSERT */ CREATE TRIGGER WORKCALCPROV_BEFORE_INSERT FOR WORKCALCPROV ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is null or New.ID=0) then New.ID=Gen_ID(WorkCalcProv_ID,1); end ^ /* Trigger: WORKGODSTEMP_BI */ CREATE TRIGGER WORKGODSTEMP_BI FOR WORKGODSTEMP ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null or (New.ID=0) ) then New.ID = Gen_ID(WorkGodsTemp_ID, 1); end ^ /* Trigger: WORKGOODSGDS_BI0 */ CREATE TRIGGER WORKGOODSGDS_BI0 FOR WORKGOODSGDS ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkGoodsGds_ID, 1); end ^ /* Trigger: WORKGOODSGDS_BU0 */ CREATE TRIGGER WORKGOODSGDS_BU0 FOR WORKGOODSGDS ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKGOODSLINK_BI0 */ CREATE TRIGGER WORKGOODSLINK_BI0 FOR WORKGOODSLINK ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkGoodsLink_ID, 1); end ^ /* Trigger: WORKGOODS_AU0 */ CREATE TRIGGER WORKGOODS_AU0 FOR WORKGOODS ACTIVE AFTER UPDATE POSITION 0 AS Declare Variable MGID integer; declare variable NoZReserv integer; declare variable WMGID integer; declare variable LID integer; begin if (New.Qnt <> Old.Qnt) then Update WorkModelGds set Qnt = New.Qnt where WkGdsID=New.ID and CalcType <> 0; if (New.KDelta <> Old.KDelta) then begin For Select ID from WorkModelGds where WkGdsID = New.ID into :MGID do begin Update WorkLink L set L.KDelta = New.KDelta where L.ModelGdsID = :MgID; end end if (New.NW <> Old.NW or New.Packed <> Old.Packed) then begin if (New.Packed = 0) then Update WorkModelGds set Nw = New.Nw, Gw = 0.0 where WkGdsID = New.ID; if (New.Packed = 1) then Update WorkModelGds set Nw = 0.0, Gw = New.Nw where WkGdsID = New.ID; end if (New.Typ <> Old.Typ) then begin -- вспомогательный материал NoZReserv = Null; if (Old.Typ <> 2 and New.Typ = 2) then NoZReserv = 1; if (Old.Typ = 2 and New.Typ <> 2) then NoZReserv = 0; if (NoZReserv is not Null) then begin for select ID from WorkModelGds where WkGdsID = New.ID into :WMGID do begin for Select ID from WorkLink where ModelGdsID = :WMGID into :LID do begin Update WorkLink Set NoZReserv = :NoZReserv where ID = :LID; end end end end end ^ /* Trigger: WORKGOODS_BU0 */ CREATE TRIGGER WORKGOODS_BU0 FOR WORKGOODS ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKHBLN_BI */ CREATE TRIGGER WORKHBLN_BI FOR WORKHBLN ACTIVE BEFORE INSERT POSITION 0 as declare variable AlreadyUse integer; declare variable CurMainID integer; begin if (New.ID is Null) then New.ID = Gen_ID(WorkHbLn_ID, 1); AlreadyUse = 0; if (CoalEsce(New.MainGds, 0) <> 0) then begin select L.Owner from WorkLink L where L.ID=New.RefID into :CurMainID; Select AlreadyUse from WorkMainGds_Check(New.GodsID, :CurMainID, 0, 0, 1) into :AlreadyUse; end end ^ /* Trigger: WORKHBLN_BU */ CREATE TRIGGER WORKHBLN_BU FOR WORKHBLN ACTIVE BEFORE UPDATE POSITION 0 as declare variable AlreadyUse integer; declare variable CurMainID integer; begin New.LastEdit = Current_TimeStamp; if (CoalEsce(New.MainGds, 0) <> 0 and CoalEsce(Old.MainGds, 0) = 0) then begin AlreadyUse = 0; select L.Owner from WorkLink L where L.ID=New.RefID into :CurMainID; Select AlreadyUse from WorkMainGds_Check(New.GodsID, :CurMainID, 0, New.ID, 1) into :AlreadyUse; end end ^ /* Trigger: WORKHBNK_BI0 */ CREATE TRIGGER WORKHBNK_BI0 FOR WORKHBNK ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkHbNk_ID, 1); end ^ /* Trigger: WORKHBNK_BU0 */ CREATE TRIGGER WORKHBNK_BU0 FOR WORKHBNK ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKLINK_AD0 */ CREATE TRIGGER WORKLINK_AD0 FOR WORKLINK ACTIVE AFTER DELETE POSITION 0 AS begin Update WorkMain Set InvalidModel = 1 where ID=Old.Owner and ModelID is not Null and InvalidModel <> 1; end ^ /* Trigger: WORKLINK_AI0 */ CREATE TRIGGER WORKLINK_AI0 FOR WORKLINK ACTIVE AFTER INSERT POSITION 0 AS begin Update WorkMain Set InvalidModel = 1 where ID=New.Owner and ModelID is not Null and InvalidModel <> 1; end ^ /* Trigger: WORKLINK_BI */ CREATE TRIGGER WORKLINK_BI FOR WORKLINK ACTIVE BEFORE INSERT POSITION 0 as declare variable Name varchar(40); declare variable code varchar(20); declare variable MainID integer; declare variable LinkID integer; declare variable EqID integer; declare variable AlreadyUse integer; begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(WorkLink_ID, 1); AlreadyUse = 0; if (CoalEsce(New.MainGds, 0) <> 0) then begin Select AlreadyUse from WorkMainGds_Check(New.GodsID, New.Owner, 0, 0, 1) into :AlreadyUse; end end ^ /* Trigger: WORKLINK_BU0 */ CREATE TRIGGER WORKLINK_BU0 FOR WORKLINK ACTIVE BEFORE UPDATE POSITION 0 AS declare variable AlreadyUse integer; begin New.LastEdit = Current_TimeStamp; if (CoalEsce(New.MainGds, 0) <> 0 and CoalEsce(Old.MainGds, 0) = 0) then begin AlreadyUse = 0; Select AlreadyUse from WorkMainGds_Check(New.GodsID, New.Owner, New.ID, 0, 1) into :AlreadyUse; end end ^ /* Trigger: WORKMAINTOOL_BI */ CREATE TRIGGER WORKMAINTOOL_BI FOR WORKMAINTOOL ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(workmaintool_id,1); end ^ /* Trigger: WORKMAINTOOL_BU */ CREATE TRIGGER WORKMAINTOOL_BU FOR WORKMAINTOOL ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKMAIN_AD0 */ CREATE TRIGGER WORKMAIN_AD0 FOR WORKMAIN ACTIVE AFTER DELETE POSITION 0 AS declare variable GrpID integer; begin Select Owner from Goods where ID = Old.GodsID into :GrpID; Update GoodsGroups GG set GG.WorkMainGrp = 0 where GG.ID = :GrpID and GG.WorkMainGrp = 1 and not exists (Select G.ID from WorkMain M, Goods G where G.Owner = GG.ID and M.GodsID = G.ID) and not Exists (Select GG1.ID from GoodsGroups GG1 where GG1.ParentID = GG.ID and GG1.WorkMainGrp = 1); end ^ /* Trigger: WORKMAIN_AI0 */ CREATE TRIGGER WORKMAIN_AI0 FOR WORKMAIN ACTIVE AFTER INSERT POSITION 0 AS begin Update GoodsGroups set WorkMainGrp = 1 where WorkMainGrp = 0 and ID = (Select Owner from Goods where ID = New.GodsID); end ^ /* Trigger: WORKMAIN_AU0 */ CREATE TRIGGER WORKMAIN_AU0 FOR WORKMAIN ACTIVE AFTER UPDATE POSITION 0 AS begin if (New.Nw <> Old.Nw or New.Gw <> Old.Gw) then begin Update Goods Set Nw = New.Nw, Gw = New.Gw where ID = New.GodsID; end if (New.ModelID is Null) then begin Update WorkLink set ModelDtlID = Null, ModelGdsID = Null, MainDtlID = Null where Owner = New.ID and ((ModelDtlID is not Null) or (ModelGdsID is not Null) or (MainDtlID is not Null)); end end ^ /* Trigger: WORKMAIN_BU0 */ CREATE TRIGGER WORKMAIN_BU0 FOR WORKMAIN ACTIVE BEFORE UPDATE POSITION 0 AS declare variable PackQnt double precision; declare variable Qnt double precision; begin New.LastEdit = Current_TimeStamp; if (New.ModelID is not Null and Old.ModelID is Null) then begin -- привязка модели Select SizeX, SizeY, SizeZ, Nw, Gw from WorkModel where ID = New.ModelID into New.SizeX, New.SizeY, New.SizeZ, New.Nw, New.Gw; end if (New.ModelID is Null) then New.InValidModel = 0; if (New.ModelID is not Null and (Old.ModelID is Null or Old.ModelID <> New.ModelID)) then begin /* замена или удаление модели */ Select PackQnt, Nw, Gw from WorkModel where ID = New.ModelID into :PackQnt, New.Nw, New.Gw; Qnt = 0.0; if (:PackQnt <> 0.0) then Qnt = 1.0 / :PackQnt; Update Goods set Qnt = :Qnt where ID = New.GodsID and (Qnt <> :Qnt or Qnt is Null); end end ^ /* Trigger: WORKMODELDTL_AD0 */ CREATE TRIGGER WORKMODELDTL_AD0 FOR WORKMODELDTL ACTIVE AFTER DELETE POSITION 0 AS Declare Variable ModelID integer; begin /* если данная модель входит как деталь в другие модели... */ for select distinct ParentID from WorkModel_UsedParents(Old.ModelID) into ModelID do begin Update WorkMain set InvalidModel = 1 where ModelID = :ModelID and InvalidModel <> 1; end end ^ /* Trigger: WORKMODELDTL_AI0 */ CREATE TRIGGER WORKMODELDTL_AI0 FOR WORKMODELDTL ACTIVE AFTER INSERT POSITION 0 AS Declare Variable ModelID integer; begin insert into WorkModelDtl (ID, ModelID, DetailID, ParentID, ModelDtlID, Quant, Nbr, PackNbr, Nw, Gw, UserName, ProcOrientation, ProcType, ProcTypeCode) select Gen_ID(WorkModelDtl_ID, 1), New.ModelID, MD.DetailID, New.ID, MD.ID, MD.Quant, MD.Nbr, MD.PackNbr, MD.Nw, MD.Gw, New.UserName, MD.ProcOrientation, MD.ProcType, MD.ProcTypeCode from WorkModelDtl MD where MD.ModelID = New.DetailID and MD.ParentID is Null; if (New.ParentID is Null) then begin insert into WorkModelDtl (ID, ModelID, DetailID, ParentID, ModelDtlID, Quant, Nbr, PackNbr, Nw, Gw, UserName, ProcOrientation, ProcType, ProcTypeCode) select Gen_ID(WorkModelDtl_ID, 1), MD.ModelID, New.DetailID, MD.ID, New.ID, New.Quant, New.Nbr, New.PackNbr, New.Nw, New.Gw, New.UserName, New.ProcOrientation, New.ProcType, New.ProcTypeCode From WorkModelDtl MD where MD.DetailID = New.ModelID; end Insert into WorkModelGds(ID, ModelID, WkGdsID, ModelDtlID, ModelGdsID, Quant, Qnt, UserName, SizeX, SizeY, SizeZ, Cutting, StructureXY, DeltaX, DeltaY, DeltaZ, CalcType, Kx, Ky, Kz, KNorm, Nw, Gw, ScaleSize, ScaleDelta, ScaleX, ScaleY, ScaleZ, ScaleDX, ScaleDY, ScaleDZ) select Gen_ID(WorkModelGds_ID, 1), New.ModelID, MG.WkGdsID, New.ID, MG.ID, MG.Quant, MG.Qnt, New.UserName, MG.SizeX, MG.SizeY, MG.SizeZ, Cutting, StructureXY, DeltaX, DeltaY, DeltaZ, CalcType, Kx, Ky, Kz, KNorm, Nw, Gw, ScaleSize, ScaleDelta, ScaleX, ScaleY, ScaleZ, ScaleDX, ScaleDY, ScaleDZ from WorkModelGds MG where ModelID = New.DetailID and ModelDtlID is Null; /* устанавливаем фгаг инвалидности в изделиях по данной модели */ Update WorkMain set InvalidModel = 1 where ModelID = New.ModelID and InvalidModel <> 1; /* если данная модель входит как деталь в другие модели... */ for select distinct ParentID from WorkModel_UsedParents(New.ModelID) into ModelID do begin Update WorkMain set InvalidModel = 1 where ModelID = :ModelID and InvalidModel <> 1; end /* пересчет веса */ if ((New.NW <> 0.0 or New.GW <> 0.0) and New.Quant <> 0.0 and New.ParentID is Null) then begin Update WorkModel Set Nw = Nw + New.Quant * New.NW, Gw = Gw + New.Quant * New.GW where ID = New.ModelID; end end ^ /* Trigger: WORKMODELDTL_AU0 */ CREATE TRIGGER WORKMODELDTL_AU0 FOR WORKMODELDTL ACTIVE AFTER UPDATE POSITION 0 AS declare Variable ModelGdsID integer; Declare Variable Quant double precision; Declare Variable QuantDtl double precision; Declare Variable QuantGds double precision; Declare Variable Qnt double precision; Declare Variable ParentID integer; begin if (New.DetailID <> Old.DetailID) then begin -- замена детали (очистка) Delete from WorkModelDtl where ParentID = Old.ID; Delete from WorkModelGds where ModelDtlID = Old.ID; end if (New.Quant <> Old.Quant or New.Nbr <> Old.Nbr or New.PackNbr <> Old.PackNbr or New.Nw <> Old.Nw or New.Gw <> Old.Gw or New.ProcOrientation <> Old.ProcOrientation or New.ProcType <> Old.ProcType or New.ProcTypeCode <> Old.ProcTypeCode) then Update WorkModelDtl set Quant = New.Quant, Nbr = New.Nbr, PackNbr = New.PackNbr, Nw = New.Nw, Gw = New.Gw, ProcOrientation = New.ProcOrientation, ProcType = New.ProcType, ProcTypeCode = New.ProcTypeCode where ModelDtlID = New.ID; Quant = New.Quant; /* количество данных деталей в текущем узле */ QuantDtl = :Quant; ParentID = New.ParentID; while (:ParentID is not Null) do begin Select Quant, ParentID from WorkModelDtl where ID = :ParentID into :Qnt, :ParentID; QuantDtl = :QuantDtl * :Qnt; end /* QuantDtl - количество данных деталей по модели в целом */ Update WorkLink set Quant = :QuantDtl, Qnt_One = :QuantDtl where ModelDtlID = New.ID and ModelGdsID is Null and Quant <> :QuantDtl; if (New.NW <> Old.NW or New.GW <> Old.GW or New.Quant <> Old.Quant) then Execute procedure WorkModel_ReCalcNW(New.ModelID); /* материалы в изделиях */ if (New.Quant <> Old.Quant) then begin for Select MG.ID, MG.Quant from WorkModelGds MG where MG.ModelDtlID = New.ID into :ModelGdsID, :Qnt do begin QuantGds = :QuantDtl * :Qnt; Update WorkLink Set Quant = :QuantGds, Qnt_One = :QuantDtl where ModelGdsID = :ModelGdsID and (Quant <> :QuantGds or Qnt_One <> :QuantDtl); end end end ^ /* Trigger: WORKMODELDTL_BI0 */ CREATE TRIGGER WORKMODELDTL_BI0 FOR WORKMODELDTL ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkModelDtl_ID, 1); Select Nw, Gw from WorkModel where ID = New.DetailID into New.NW, New.GW; end ^ /* Trigger: WORKMODELDTL_BU0 */ CREATE TRIGGER WORKMODELDTL_BU0 FOR WORKMODELDTL ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKMODELGDS_AD0 */ CREATE TRIGGER WORKMODELGDS_AD0 FOR WORKMODELGDS ACTIVE AFTER DELETE POSITION 0 AS Declare Variable ModelID integer; Declare Variable NW double precision; Declare Variable GW double precision; begin /* если текущая модель входит как деталь в другие модели... */ for select distinct ParentID from WorkModel_UsedParents(Old.ModelID) into ModelID do begin Update WorkMain set InvalidModel = 1 where ModelID = :ModelID and InvalidModel <> 1; end if ((Old.NW <> 0.0 or Old.GW <> 0.0) and Old.Quant <> 0.0) then begin NW = Old.NW * Old.Quant; GW = Old.GW * Old.Quant; Update WorkModel Set Nw = Nw - :NW, Gw = Gw - :Nw - :Gw where ID = Old.ModelID; end end ^ /* Trigger: WORKMODELGDS_AI0 */ CREATE TRIGGER WORKMODELGDS_AI0 FOR WORKMODELGDS ACTIVE AFTER INSERT POSITION 0 AS declare variable ModelID integer; Declare Variable NW double precision; Declare Variable GW double precision; begin Update WorkMain M set M.InvalidModel = 1 where M.ModelID = New.ModelID and M.InvalidModel <> 1; for select distinct ParentID from WorkModel_UsedParents(New.ModelID) into ModelID do begin Update WorkMain M set M.InvalidModel = 1 where M.ModelID = :ModelID and M.InvalidModel <> 1; end if (((New.NW <> 0.0 or New.GW <> 0.0) and New.Quant <> 0.0) and New.modelDtlID is Null) then begin Nw = New.NW * New.Quant; Gw = New.GW * New.Quant; Update WorkModel Set Nw = Nw + :NW, Gw = Gw + :NW + :GW where ID = New.ModelID; end if (New.ModelDtlID is Null) then begin insert into WorkModelGds(ID, ModelID, WkGdsID, ModelDtlID, ModelGdsID, SizeX, SizeY, SizeZ, DeltaX, DeltaY, DeltaZ, Cutting, StructureXY, Qnt, CalcType, Quant, KDelta, Kx, Ky, Kz, KNorm, UserName, Nw, Gw, ScaleSize, ScaleDelta, ScaleX, ScaleY, ScaleZ, ScaleDX, SCaleDY, ScaleDZ) select Gen_ID(WorkModelGds_ID, 1), MD.ModelID, New.WkGdsID, MD.ID, New.ID, New.SizeX, New.SizeY, New.SizeZ, New.DeltaX, New.DeltaY, New.DeltaZ, New.Cutting, New.StructureXY, New.Qnt, New.CalcType, New.Quant, New.KDelta, New.Kx, New.Ky, New.Kz, New.KNorm, New.UserName, New.Nw, New.Gw, New.ScaleSize, New.ScaleDelta, New.ScaleX, New.ScaleY, New.ScaleZ, New.ScaleDX, New.ScaleDY, New.ScaleDZ from WorkModelDtl MD where MD.DetailID = New.ModelID; end end ^ /* Trigger: WORKMODELGDS_AU0 */ CREATE TRIGGER WORKMODELGDS_AU0 FOR WORKMODELGDS ACTIVE AFTER UPDATE POSITION 0 AS Declare variable Quant double precision; Declare variable QuantGds double precision; Declare variable QuantDtl double precision; Declare variable Qnt double precision; Declare Variable ParentID integer; begin Update WorkModelGds set WkGdsID=New.WkGdsID, Qnt = New.Qnt, CalcType = New.CalcType, Quant = New.Quant, Cutting = New.Cutting, KNorm = New.KNorm, StructureXY = New.StructureXY, KDelta=New.KDelta, SizeX=New.SizeX, SizeY = New.SizeY, SizeZ = New.SizeZ, DeltaX = New.DeltaX, DeltaY = New.DeltaY, DeltaZ = New.DeltaZ, Nw = New.Nw, Gw = New.Gw, ScaleSize = New.ScaleSize, ScaleDelta = New.ScaleDelta, ScaleX = New.ScaleX, ScaleY = New.ScaleY, ScaleZ = New.ScaleZ, ScaleDX = New.ScaleDX, ScaleDY = New.ScaleDY, ScaleDZ = New.ScaleDZ where ModelGdsID = New.ID /* обновить, если что-то изменилось */ and ((New.WkGdsID <> Old.WkGdsID) or (New.Qnt <> Old.Qnt) or (New.CalcType <> Old.CalcType) or (New.Quant <> OLd.Quant) or (New.Cutting <> Old.Cutting) or (New.KNorm <> Old.KNorm) or (New.StructureXY <> Old.StructureXY) or (New.SizeX <> Old.SizeX) or (New.SizeY <> Old.SizeY) or (New.SizeZ <> Old.SizeZ) or (New.DeltaX <> Old.DeltaX) or (New.DeltaY <> Old.DeltaY) or (New.DeltaZ <> Old.DeltaZ) or (New.Nw <> Old.Nw) or (New.Gw <> Old.Gw) or (New.ScaleSize <> Old.ScaleSize) or (New.ScaleDelta <> Old.ScaleDelta) or (New.ScaleX <> Old.ScaleX) or (New.ScaleY <> Old.ScaleY) or (New.ScaleZ <> Old.ScaleZ) or (New.ScaleDX <> Old.ScaleDX) or (New.ScaleDY <> Old.ScaleDY) or (New.ScaleDZ <> Old.ScaleDZ) or New.KDelta <> Old.KDelta); if (New.WkGdsID <> Old.WkGdsID) then begin Update WorkMain Set InvalidModel = 1 where ModelID = New.ModelID and InvalidModel = 0; end Quant = New.Quant; QuantGds = :Quant; QuantDtl = 1.0; ParentID = New.ModelDtlID; while (:ParentID is not Null) do begin Select Quant, ParentID from WorkModelDtl where ID = :ParentID into :Qnt, :ParentID; QuantDtl = :QuantDtl * :Qnt; end QuantGds = :Quant * :QuantDtl; Update WorkLink Set Quant = :QuantGds, Qnt_One = :QuantDtl, Cutting = New.Cutting, StructureXY = New.StructureXY, SizeX = New.SizeX, SizeY = New.SizeY, SizeZ = New.SizeZ, KDelta = New.KDelta where ModelGdsID = New.ID and (Quant <> :QuantGds or Qnt_One <> :QuantDtl or Cutting <> New.Cutting or StructureXY <> New.StructureXY or SizeX <> New.SizeX or SizeY <> New.SizeY or SizeZ <> New.SizeZ or KDelta <> New.KDelta); if (New.NW <> Old.NW or New.GW <> Old.GW or New.Quant <> Old.Quant) then Execute Procedure WorkModel_ReCalcNW(New.ModelID); end ^ /* Trigger: WORKMODELGDS_BI0 */ CREATE TRIGGER WORKMODELGDS_BI0 FOR WORKMODELGDS ACTIVE BEFORE INSERT POSITION 0 AS declare variable X double precision; declare variable Y double precision; declare variable Z double precision; declare variable cValue double precision; Declare Variable Rnd double precision; Declare Variable GNW double precision; Declare Variable Packed integer; begin if (New.ID is Null) then New.ID = Gen_ID(WorkModelGds_ID, 1); Select Rnd, Nw, Packed, Qnt from WorkGoods where ID = New.WkGdsID into :Rnd, :GNW, :Packed, New.Qnt; if (:Packed is Null) then Packed = 0; if (:GNw is Null) then GNw = 0.0; if (New.Qnt is Null or New.Qnt = 0.0) then New.Qnt = 1.0; if (New.kNorm is Null or New.kNorm = 0) then New.kNorm = 1.0; if (New.CalcType <> 0 and New.ModelGdsID is Null and New.ModelDtlID is Null) then begin X = New.SizeX + New.DeltaX; Y = New.SizeY + New.DeltaY; Z = New.SizeZ + New.DeltaZ; cValue = 0.0; if (New.CalcType=1) then begin /* по длине */ cValue = :X * New.KX + :Y * New.KY + :Z * New.KZ; cValue = :cValue / New.kNorm; end if (New.CalcType=2) then begin /* по площади */ cValue = (:X*:Y*New.KX)+ (:Y*:Z*New.KY)+ (:X*:Z*New.KZ); cValue = :cValue / New.kNorm / New.kNorm; end if (New.CalcType=3) then begin /* по объему */ cValue = (:X*:Y*:Z*New.KX); cValue = :cValue / New.kNorm / New.kNorm / New.kNorm; end New.Quant = :cValue * New.Qnt; if (:Rnd <> 0.0 and New.Quant <> 0.0) then New.Quant = Cast(New.Quant/:Rnd as Integer) * :Rnd; end if (:Packed = 0) then begin New.NW = :GNW; New.GW = 0.0; end if (:Packed = 1) then begin New.GW = :GNW; New.NW = 0.0; end end ^ /* Trigger: WORKMODELGDS_BU0 */ CREATE TRIGGER WORKMODELGDS_BU0 FOR WORKMODELGDS ACTIVE BEFORE UPDATE POSITION 0 AS declare variable X double precision; declare variable Y double precision; declare variable Z double precision; declare variable cValue double precision; Declare Variable Rnd double precision; Declare Variable GNW double precision; Declare Variable Packed integer; begin New.LastEdit = Current_TimeStamp; if (New.kNorm is Null or New.kNorm = 0.0) then New.kNorm = 1.0; Select Rnd, Nw, Packed from WorkGoods where ID = New.WkGdsID into :Rnd, :GNW, :Packed; if (New.CalcType <> 0) then begin if (New.sizeX<>Old.SizeX or New.SizeY<>Old.SizeY or New.SizeZ<>Old.SizeZ or New.Qnt<>Old.Qnt or New.KX<>Old.KX or New.KY<>Old.KY or New.KZ<>Old.KZ or New.DeltaX<>Old.DeltaX or New.DeltaY<>Old.DeltaY or New.DeltaZ<>Old.DeltaZ) then begin X = New.SizeX + New.DeltaX; Y = New.SizeY + New.DeltaY; Z = New.SizeZ + New.DeltaZ; cValue = 0.0; if (New.CalcType=1) then begin /* по длине */ cValue = :X * New.KX + :Y * New.KY + :Z * New.KZ; cValue = :cValue / New.kNorm; end if (New.CalcType=2) then begin /* по площади */ cValue = (:X*:Y*New.KX)+ (:Y*:Z*New.KY)+ (:X*:Z*New.KZ); cValue = :cValue / New.kNorm / New.kNorm; end if (New.CalcType=3) then begin /* по объему */ cValue = (:X*:Y*:Z*New.KX); cValue = :cValue / New.kNorm / New.kNorm / New.kNorm; end New.Quant = :cValue * New.Qnt; if (:Rnd <> 0.0 and New.Quant <> 0.0) then New.Quant = Cast(New.Quant/:Rnd as Integer) * :Rnd; end end if (:Packed = 0) then begin New.NW = :GNW; New.GW = 0.0; end if (:Packed = 1) then begin New.GW = :GNW; New.NW = 0.0; end end ^ /* Trigger: WORKMODEL_AU0 */ CREATE TRIGGER WORKMODEL_AU0 FOR WORKMODEL ACTIVE AFTER UPDATE POSITION 0 AS Declare Variable LID integer; declare Variable GodsID integer; Declare Variable Qnt double precision; declare variable ID integer; declare variable ScaleSize integer; declare variable ScaleDelta integer; declare variable ScaleX double precision; declare variable ScaleY double precision; declare variable ScaleZ double precision; declare variable ScaleDX double precision; declare variable ScaleDY double precision; declare variable ScaleDZ double precision; declare variable Sx double precision; declare variable Sy double precision; declare variable Sz double precision; declare variable Dx double precision; declare variable Dy double precision; declare variable Dz double precision; begin /* кол-во упаковок (в справочнике товаров - количество в упаковке) */ if (New.PackQnt <> Old.PackQnt) then begin for select GodsID from WorkMain where ModelID = New.ID into :GodsID do begin Qnt = 0.0; if (New.PackQnt <> 0.0) then Qnt = 1.0 / New.PackQnt; Update Goods set Qnt = :Qnt where ID = :GodsID and (Qnt <> :Qnt or Qnt is Null); end end if (New.SizeX <> Old.SizeX or New.SizeY <> Old.SizeY or New.SizeZ <> Old.SizeZ) then begin /* обновление размеров материалов в моделях - если они считаются по детали */ for select ID, ScaleSize, ScaleDelta, ScaleX, ScaleY, ScaleZ, ScaleDX, ScaleDY, ScaleDZ, SizeX, SizeY, SizeZ, DeltaX, DeltaY, DeltaZ from WorkModelGds where ModelID = New.ID into :ID, :ScaleSize, :ScaleDelta, :ScaleX, :ScaleY, :ScaleZ, :ScaleDX, :ScaleDY, :ScaleDZ, :Sx, :Sy, :Sz, :Dx, :Dy, Dz do begin if (:ScaleSize = 1 and Old.SizeX <> 0.0 and New.SizeX <> 0.0) then begin if (:ScaleX <> 0.0) then Sx = :Sx / Old.SizeX * New.SizeX; if (:ScaleY <> 0.0) then Sy = :Sy / Old.SizeY * New.SizeY; if (:ScaleZ <> 0.0) then Sz = :Sz / Old.SizeZ * New.SizeZ; end if (:ScaleDelta = 1 and Old.SizeX <> 0.0 and New.SizeX <> 0.0) then begin if (:ScaleDX <> 0.0) then Dx = :Dx / Old.SizeX * New.SizeX; if (:ScaleDY <> 0.0) then Dy = :Dy / Old.SizeY * New.SizeY; if (:ScaleDZ <> 0.0) then Dz = :Dz / Old.SizeZ * New.SizeZ; end update WorkModelGds set SizeX = :Sx, SizeY = :Sy, SizeZ = :Sz, DeltaX = :Dx, DeltaY = :Dy, DeltaZ = :Dz where ID = :ID; end /* размеры изделий по данной модели */ Update WorkMain Set SizeX = New.SizeX, SizeY = New.SizeY, SizeZ = New.SizeZ where ModelID = New.ID and (SizeX <> New.SizeX or SizeY <> New.SizeY or SizeZ <> New.SizeZ); /* обновление размеров в нормах на изделия */ for Select L.ID from WorkModelDtl MD, WorkLink L where MD.ModelID=New.ID and L.ModelDtlID = MD.ID into :LID do begin Update WorkLink Set SizeX=New.SizeX, SizeY=New.SizeY, SizeZ=New.SizeZ where ID=:LID and (SizeX <> New.SizeX or SizeY <> New.SizeY or SizeZ <> New.SizeZ); end end if (New.NW <> Old.NW or New.GW <> Old.GW) then begin Update WorkModelDtl Set Nw = New.NW, Gw = New.Gw where DetailID = New.ID; Update WorkMain Set Nw = New.Nw, Gw = New.Gw where ModelID = New.ID; end end ^ /* Trigger: WORKMODEL_BU0 */ CREATE TRIGGER WORKMODEL_BU0 FOR WORKMODEL ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKOPERATION_BI0 */ CREATE TRIGGER WORKOPERATION_BI0 FOR WORKOPERATION ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkOperation_ID, 1); end ^ /* Trigger: WORKOPERATION_BU0 */ CREATE TRIGGER WORKOPERATION_BU0 FOR WORKOPERATION ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKOPER_BI0 */ CREATE TRIGGER WORKOPER_BI0 FOR WORKOPER ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkOper_ID, 1); New.OperTime = 0.0; if (New.NormTime <> 0.0) then New.OperTime = New.Qnt / New.NormTime; end ^ /* Trigger: WORKOPER_BU0 */ CREATE TRIGGER WORKOPER_BU0 FOR WORKOPER ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; New.OperTime = 0.0; if (New.NormTime <> 0.0) then New.OperTime = New.Qnt / New.NormTime; end ^ /* Trigger: WORKPLANMST_BEFORE_DELETE */ CREATE TRIGGER WORKPLANMST_BEFORE_DELETE FOR WORKPLANMST ACTIVE BEFORE DELETE POSITION 0 AS begin Delete from WorkPlanStor where MSTID=OLD.ID; Delete From WorkPlanSlv where MSTID=OLD.ID; end ^ /* Trigger: WORKREQUESTGDS_BD0 */ CREATE TRIGGER WORKREQUESTGDS_BD0 FOR WORKREQUESTGDS ACTIVE BEFORE DELETE POSITION 0 AS begin Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: WORKREQUESTGDS_BI0 */ CREATE TRIGGER WORKREQUESTGDS_BI0 FOR WORKREQUESTGDS ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkRequestGds_ID, 1); New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 205); end ^ /* Trigger: WORKREQUESTGDS_BU0 */ CREATE TRIGGER WORKREQUESTGDS_BU0 FOR WORKREQUESTGDS ACTIVE BEFORE UPDATE POSITION 0 AS begin -- для переданных в производство изделий запретить изменение количества if (New.WMID is not Null) then begin New.Quant = Old.Quant; New.Qnt_One = Old.Qnt_One; New.SizeX = Old.SizeX; New.SizeY = Old.SizeY; New.SizeZ = Old.SizeZ; end if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 205); end end ^ /* Trigger: WORKREQUEST_BD0 */ CREATE TRIGGER WORKREQUEST_BD0 FOR WORKREQUEST ACTIVE BEFORE DELETE POSITION 0 AS begin Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: WORKREQUEST_BI0 */ CREATE TRIGGER WORKREQUEST_BI0 FOR WORKREQUEST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkRequest_ID, 1); New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 204); end ^ /* Trigger: WORKREQUEST_BU0 */ CREATE TRIGGER WORKREQUEST_BU0 FOR WORKREQUEST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_timeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 204); end end ^ /* Trigger: WORKTOOLTYP_BI */ CREATE TRIGGER WORKTOOLTYP_BI FOR WORKTOOLTYP ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(WorkToolTyp_ID, 1); select 1 from rdb$database where not exists (select id from WorkToolTyp where DefTyp=1) into New.DefTyp; end ^ /* Trigger: WORKTOOLTYP_BU */ CREATE TRIGGER WORKTOOLTYP_BU FOR WORKTOOLTYP ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; if (New.DefTyp=1) then begin update WorkToolTyp set DefTyp=0 where DefTyp=1 and ID <> New.ID; end end ^ /* Trigger: WORKTOOL_BI */ CREATE TRIGGER WORKTOOL_BI FOR WORKTOOL ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(worktool_id,1); end ^ /* Trigger: WORKTOOL_BU */ CREATE TRIGGER WORKTOOL_BU FOR WORKTOOL ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKZAKAZ_AD0 */ CREATE TRIGGER WORKZAKAZ_AD0 FOR WORKZAKAZ ACTIVE AFTER DELETE POSITION 0 AS begin Delete from Obj_Class where ID = Old.ObjID; end ^ /* Trigger: WORKZAKAZ_BEFORE_DELETE */ CREATE TRIGGER WORKZAKAZ_BEFORE_DELETE FOR WORKZAKAZ ACTIVE BEFORE DELETE POSITION 0 AS begin Delete from WorkZMst where ZID=Old.ID; end ^ /* Trigger: WORKZAKAZ_BEFORE_UPDATE */ CREATE TRIGGER WORKZAKAZ_BEFORE_UPDATE FOR WORKZAKAZ ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 202); end New.ZMReady = 0; /* ? все изделия выпущены */ Select 1 from rdb$Database where not exists (Select M.ID from WorkZMst M where M.ZID=New.ID and M.Quant < M.Source) into New.ZMReady; end ^ /* Trigger: WORKZAKAZ_BI0 */ CREATE TRIGGER WORKZAKAZ_BI0 FOR WORKZAKAZ ACTIVE BEFORE INSERT POSITION 0 AS begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 202); if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; if (New.Nbr is Null or New.Nbr = '') then New.Nbr = New.ID; end ^ /* Trigger: WORKZCUTTING_BI0 */ CREATE TRIGGER WORKZCUTTING_BI0 FOR WORKZCUTTING ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkZCutting_ID, 1); end ^ /* Trigger: WORKZCUTTING_BU0 */ CREATE TRIGGER WORKZCUTTING_BU0 FOR WORKZCUTTING ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKZMST_AI0 */ CREATE TRIGGER WORKZMST_AI0 FOR WORKZMST ACTIVE AFTER INSERT POSITION 0 AS declare variable MID integer; declare variable WMID integer; begin if (New.WrGdsID is not Null) then begin Select WMID from WorkRequestGds where ID = New.WrGdsID into :WMID; if (:WMID is not Null) then Exception WorkZMst_StorZDtGds; else Update WorkRequestGds set WMID = New.ID where ID = New.WrGdsID; end for select M.ID from WorkMain M where M.ID=New.MID into :MID do begin insert into WorkZSlv (ID, MstID, GodsID, LID, QNT, Source, NormDelta, KDelta, Kx, Ky, Kz, DetailName, KF, NoZReserv, SizeX, SizeY, SizeZ, Cutting, StructureXY, Qnt_One, TestOne, RndQnt, Typ) Select Gen_ID(WorkZSlv_ID, 1), New.ID, L.GodsID, L.ID, L.Quant, L.Quant * (Case L.TestOne when 1 then 1.0 else New.Source end), L.NormDelta, L.KDelta, L.Kx, L.Ky, L.Kz, L.DetailName, L.KF, L.NoZReserv, L.SizeX, L.SizeY, L.SizeZ, L.Cutting, L.StructureXY, L.Qnt_One, L.TestOne, L.RndQnt, L.Typ From WorkLink L where L.Owner = :MID; if (New.ScaleSize <> 0) then execute procedure WorkZMst_CalcSlv(New.ID); end if (New.MID is not Null) then begin insert into WorkZTool (MstID, ToolID, UserName) Select New.ID, MT.ToolID, New.UserName from WorkMainTool MT where MT.MainID=New.MID; end end ^ /* Trigger: WORKZMST_AU0 */ CREATE TRIGGER WORKZMST_AU0 FOR WORKZMST ACTIVE AFTER UPDATE POSITION 0 AS begin if (New.ScaleSize = 0 and New.Source <> Old.Source) then begin /* пересчет количества комплектующих */ Update WorkZSlv S Set S.Source = S.Qnt * (Case S.TestOne when 1 then 1.0 else New.Source end) where S.MstID = New.ID; end if (New.ScaleSize = 1 and (New.SizeX <> Old.SizeX or New.SizeY <> Old.SizeY or New.SizeZ <> Old.SizeZ or New.Source <> Old.Source or New.Src_One <> Old.Src_One)) then begin execute procedure WorkZMst_CalcSlv(New.ID); end end ^ /* Trigger: WORKZMST_BEFORE_DELETE */ CREATE TRIGGER WORKZMST_BEFORE_DELETE FOR WORKZMST ACTIVE BEFORE DELETE POSITION 0 AS begin Delete from Obj_Class where ID = Old.ObjID; Delete From WorkZSlv where MSTID=Old.ID; Delete From WorkZNk where ZMID=Old.ID; if (Old.WRGdsID is not Null) then Update WorkRequestGds set WMID = Null where ID = Old.WRGdsID and WMID = Old.ID; end ^ /* Trigger: WORKZMST_BI0 */ CREATE TRIGGER WORKZMST_BI0 FOR WORKZMST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkZMst_ID, 1); New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 203); end ^ /* Trigger: WORKZMST_BU0 */ CREATE TRIGGER WORKZMST_BU0 FOR WORKZMST ACTIVE BEFORE UPDATE POSITION 0 AS begin if (New.ObjID is Null) then begin New.ObjID = Gen_ID(Obj_Class_ID, 1); insert Into Obj_Class(ID, Obj_Typ) Values(New.ObjID, 203); end if (New.WRGdsID is not Null) then begin -- блокировать изменение количества для позиций из заявки на производство New.Source = Old.Source; New.Src_One = Old.Src_One; end end ^ /* Trigger: WORKZPARAM_BI */ CREATE TRIGGER WORKZPARAM_BI FOR WORKZPARAM ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or (New.ID=0) ) then New.ID=Gen_ID(WorkZParam_ID, 1); end ^ /* Trigger: WORKZREF_AD */ CREATE TRIGGER WORKZREF_AD FOR WORKZREF ACTIVE AFTER DELETE POSITION 0 as begin delete from WorkZMst where ID=Old.DtlID; end ^ /* Trigger: WORKZREF_BI */ CREATE TRIGGER WORKZREF_BI FOR WORKZREF ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or (New.ID=0) ) then New.ID=Gen_ID(WorkZRef_ID, 1); end ^ /* Trigger: WORKZSLV_BI0 */ CREATE TRIGGER WORKZSLV_BI0 FOR WORKZSLV ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(WorkZSlv_ID, 1); end ^ /* Trigger: WORKZSLV_BU */ CREATE TRIGGER WORKZSLV_BU FOR WORKZSLV ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: WORKZTOOL_BI */ CREATE TRIGGER WORKZTOOL_BI FOR WORKZTOOL ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null or New.ID=0) then new.id = gen_id(workztool_id,1); end ^ /* Trigger: WORKZTOOL_BU */ CREATE TRIGGER WORKZTOOL_BU FOR WORKZTOOL ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTCALCDECR_BI0 */ CREATE TRIGGER ZPLTCALCDECR_BI0 FOR ZPLTCALCDECR ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.cSumma is Null) then New.cSumma = 0.0; end ^ /* Trigger: ZPLTCALCDECR_BU0 */ CREATE TRIGGER ZPLTCALCDECR_BU0 FOR ZPLTCALCDECR ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTCALCINCR_BI0 */ CREATE TRIGGER ZPLTCALCINCR_BI0 FOR ZPLTCALCINCR ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null or New.ID=0) then New.ID = Gen_ID(ZpltCalcIncr_ID, 1); if (New.Proc is Null) then New.Proc = 0.0; if (New.Summa is Null) then New.Summa = 0.0; if (New.cSumma is Null) then New.cSumma = 0.0; end ^ /* Trigger: ZPLTCALCINCR_BU0 */ CREATE TRIGGER ZPLTCALCINCR_BU0 FOR ZPLTCALCINCR ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTCALCMST_AU0 */ CREATE TRIGGER ZPLTCALCMST_AU0 FOR ZPLTCALCMST ACTIVE AFTER UPDATE POSITION 0 as Declare variable MID integer; begin execute procedure ZPlt_CalcMstDelAccnRec Old.ID; if(New.OperID is not null and new.OperID <> 0) then begin select MID from ZPlt_CalcMstGenAccnRec (Old.ID) into :MID; end end ^ /* Trigger: ZPLTCALCMST_BEFORE_DELETE */ CREATE TRIGGER ZPLTCALCMST_BEFORE_DELETE FOR ZPLTCALCMST ACTIVE BEFORE DELETE POSITION 0 AS begin /* Индивидуальные наряды */ Delete from ZpltJobPrsnMst where MstID = Old.ID; /* Бригадные наряды */ Delete from ZPltJobGrpMst where MstID = Old.ID; /* Сотрудники в ведомости */ Delete from ZpltCalcSlv where MstID = Old.ID; /* Проводки по ведомости */ execute procedure ZPlt_CalcMstDelAccnRec Old.ID; end ^ /* Trigger: ZPLTCALCMST_BI0 */ CREATE TRIGGER ZPLTCALCMST_BI0 FOR ZPLTCALCMST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: ZPLTCALCMST_BU0 */ CREATE TRIGGER ZPLTCALCMST_BU0 FOR ZPLTCALCMST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTCALCSLV_AI0 */ CREATE TRIGGER ZPLTCALCSLV_AI0 FOR ZPLTCALCSLV ACTIVE AFTER INSERT POSITION 0 AS Declare Variable Avans Integer; begin /* начисления из лицевого счета */ Select Avans from ZpltCalcMst where ID = New.MstID into :Avans; if (:Avans <> 1) then begin insert into ZpltCalcIncr(ID, SlvID, IncrID, Summa, Proc, UserName) select Gen_ID(ZpltCalcIncr_ID, 1), New.ID, IP.IncrID, IP.Summa, IP.Proc, New.UserName from ZpltIncrPrsn IP where IP.PrsnID = New.PrsnID; end /* удержания из лицевого счета */ if (:Avans = 1) then begin /* авансовая ведомость */ insert into ZpltCalcDecr(ID, SlvID, DecrID, Summa, Proc, UserName) select Gen_ID(ZpltCalcDecr_ID, 1), New.ID, DP.DecrID, DP.Summa, DP.Proc, New.UserName from ZpltDecrPrsn DP, ZpltDecr D where DP.PrsnID = New.PrsnID and D.ID = DP.DecrID and D.Avans = 1; end else begin /* обычная расчетная ведомость */ insert into ZpltCalcDecr(ID, SlvID, DecrID, Summa, Proc, UserName) select Gen_ID(ZpltCalcDecr_ID, 1), New.ID, DP.DecrID, DP.Summa, DP.Proc, New.UserName from ZpltDecrPrsn DP where DP.PrsnID = New.PrsnID; end end ^ /* Trigger: ZPLTCALCSLV_BEFORE_DELETE */ CREATE TRIGGER ZPLTCALCSLV_BEFORE_DELETE FOR ZPLTCALCSLV ACTIVE BEFORE DELETE POSITION 0 AS begin /* Начисления по Сотрудникам в ведомости */ Delete From ZpltCalcIncr where SlvID=Old.ID; /* Удержания по Сотрудникам в ведомости */ Delete From ZpltCalcDecr where SlvID=Old.ID; /* Начисления на ФОТ по Сотрудникам в ведомости */ Delete From ZpltCalcSlvFot where SlvID=Old.ID; end ^ /* Trigger: ZPLTCALCSLV_BEFORE_UPDATE */ CREATE TRIGGER ZPLTCALCSLV_BEFORE_UPDATE FOR ZPLTCALCSLV ACTIVE BEFORE UPDATE POSITION 0 AS declare variable WTime double precision; begin New.LastEdit = Current_TimeStamp; WTime = new.d1+new.d2+new.d3+new.d4+new.d5+new.d6+new.d7+new.d8+new.d9+new.d10+ new.d11+new.d12+new.d13+new.d14+new.d15+new.d16+new.d17+new.d18+new.d19+new.d20+ new.d21+new.d22+new.d23+new.d24+new.d25+new.d26+new.d27+new.d28+new.d29+new.d30+ new.d31; if (:WTime is Null) then WTime = 0.0; if (:WTime <> 0.0) then New.WTime = :WTime; end ^ /* Trigger: ZPLTCALCSLV_BI0 */ CREATE TRIGGER ZPLTCALCSLV_BI0 FOR ZPLTCALCSLV ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(zpltcalcslv_id, 1); end ^ /* Trigger: ZPLTCALENDARBASE_BI0 */ CREATE TRIGGER ZPLTCALENDARBASE_BI0 FOR ZPLTCALENDARBASE ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(ZpltCalendarBase_ID,1); end ^ /* Trigger: ZPLTDECRFOT_BD0 */ CREATE TRIGGER ZPLTDECRFOT_BD0 FOR ZPLTDECRFOT ACTIVE BEFORE DELETE POSITION 0 as begin delete from ZpltIncrFot where FotID=OLd.ID; end ^ /* Trigger: ZPLTDECRFOT_BU0 */ CREATE TRIGGER ZPLTDECRFOT_BU0 FOR ZPLTDECRFOT ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTDECRINCR_BU0 */ CREATE TRIGGER ZPLTDECRINCR_BU0 FOR ZPLTDECRINCR ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTDECRPRSN_BU0 */ CREATE TRIGGER ZPLTDECRPRSN_BU0 FOR ZPLTDECRPRSN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTDECR_BU0 */ CREATE TRIGGER ZPLTDECR_BU0 FOR ZPLTDECR ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTFOTGRPREF_BI0 */ CREATE TRIGGER ZPLTFOTGRPREF_BI0 FOR ZPLTFOTGRPREF ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(ZpltFotGrpRef_ID,1); end ^ /* Trigger: ZPLTFOTGRPREF_BU0 */ CREATE TRIGGER ZPLTFOTGRPREF_BU0 FOR ZPLTFOTGRPREF ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTFOTGRP_BU0 */ CREATE TRIGGER ZPLTFOTGRP_BU0 FOR ZPLTFOTGRP ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTGRPPRSNMST_BU0 */ CREATE TRIGGER ZPLTGRPPRSNMST_BU0 FOR ZPLTGRPPRSNMST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTGRPPRSNSLV_BU0 */ CREATE TRIGGER ZPLTGRPPRSNSLV_BU0 FOR ZPLTGRPPRSNSLV ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTINCRFOT_BI0 */ CREATE TRIGGER ZPLTINCRFOT_BI0 FOR ZPLTINCRFOT ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(ZpltIncrFot_ID, 1); end ^ /* Trigger: ZPLTINCRFOT_BU0 */ CREATE TRIGGER ZPLTINCRFOT_BU0 FOR ZPLTINCRFOT ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTINCRINCR_BI0 */ CREATE TRIGGER ZPLTINCRINCR_BI0 FOR ZPLTINCRINCR ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(ZpltIncrIncr_ID, 1); end ^ /* Trigger: ZPLTINCRINCR_BU0 */ CREATE TRIGGER ZPLTINCRINCR_BU0 FOR ZPLTINCRINCR ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTINCRPRSN_BU0 */ CREATE TRIGGER ZPLTINCRPRSN_BU0 FOR ZPLTINCRPRSN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTINCR_BU0 */ CREATE TRIGGER ZPLTINCR_BU0 FOR ZPLTINCR ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTJOBGRPJOB_BI0 */ CREATE TRIGGER ZPLTJOBGRPJOB_BI0 FOR ZPLTJOBGRPJOB ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.Price is Null) then New.Price = 0.0; if (New.Quant is Null) then New.Quant = 0.0; New.TSumma = Cast(New.Price * New.Quant * 100.00 as integer) / 100.00; New.PSumma = Cast(New.TSumma / 100.0 * New.PProc *100.00 as integer) / 100.00; end ^ /* Trigger: ZPLTJOBGRPJOB_BU0 */ CREATE TRIGGER ZPLTJOBGRPJOB_BU0 FOR ZPLTJOBGRPJOB ACTIVE BEFORE UPDATE POSITION 0 AS begin if (New.Price is Null) then New.Price = 0.0; if (New.Quant is Null) then New.Quant = 0.0; New.TSumma = Cast(New.Price * New.Quant * 100.00 as integer) / 100.00; New.PSumma = Cast(New.TSumma / 100.0 * New.PProc *100.00 as integer) / 100.00; end ^ /* Trigger: ZPLTJOBGRPMST_AI0 */ CREATE TRIGGER ZPLTJOBGRPMST_AI0 FOR ZPLTJOBGRPMST ACTIVE AFTER INSERT POSITION 0 AS begin if (New.BrigadeID is not Null) then begin /* добавить недостающих сотрудников в расчетную ведомость */ Insert into ZpltCalcSlv(ID, MstID, PrsnID) Select Gen_ID(ZpltCalcSlv_ID, 1), New.MstID, GS.PrsnID from ZpltGrpPrsnSlv GS where GS.MstID = New.BrigadeID and GS.PrsnID is not Null and not exists (Select S.ID from ZpltCalcSlv S where S.MstID=New.MstID and S.PrsnID=GS.PrsnID); /* члены бригады в наряде */ Insert into ZpltJobGrpPrsn(ID, MstID, PrsnSlvID, KTU, Incr1ID, Incr2ID, Incr3ID, UserName) Select Gen_ID(ZpltJobGrpPrsn_ID, 1), New.ID, CS.ID, GS.KTU, M.Incr1ID, M.Incr2ID, M.Incr3ID, New.UserName from ZpltGrpPrsnSlv GS, ZpltCalcSlv CS, ZpltGrpPrsnMst M where GS.MstID = New.BrigadeID and GS.PrsnID is not Null and CS.PrsnID = GS.PrsnID and M.ID=New.BrigadeID and CS.MstID = New.MstID; end end ^ /* Trigger: ZPLTJOBGRPMST_BEFORE_DELETE */ CREATE TRIGGER ZPLTJOBGRPMST_BEFORE_DELETE FOR ZPLTJOBGRPMST ACTIVE BEFORE DELETE POSITION 0 AS begin /* Рабочие в бригадном наряде (бригада) */ Delete from ZPltJobGrpPrsn where MstID=Old.ID; /* Работы в бригадном наряде */ Delete from ZPltJobGrpJob where MstID=Old.ID; end ^ /* Trigger: ZPLTJOBGRPMST_BI0 */ CREATE TRIGGER ZPLTJOBGRPMST_BI0 FOR ZPLTJOBGRPMST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.Name is Null or New.Name = '') then New.Name = New.ID; end ^ /* Trigger: ZPLTJOBGRPMST_BU0 */ CREATE TRIGGER ZPLTJOBGRPMST_BU0 FOR ZPLTJOBGRPMST ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTJOBGRPPRSN_BU0 */ CREATE TRIGGER ZPLTJOBGRPPRSN_BU0 FOR ZPLTJOBGRPPRSN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; if (New.TSumma is Null) then New.TSumma = 0.0; if (New.PSumma is Null) then New.PSumma = 0.0; if (New.DSumma is Null) then New.DSumma = 0.0; end ^ /* Trigger: ZPLTJOBPRSNMST_BD0 */ CREATE TRIGGER ZPLTJOBPRSNMST_BD0 FOR ZPLTJOBPRSNMST ACTIVE BEFORE DELETE POSITION 0 as begin /* Рабочие/Работы в индивидуальном наряде */ delete from ZpltJobPrsnSlv where MstID=Old.ID; end ^ /* Trigger: ZPLTJOBPRSNMST_BU0 */ CREATE TRIGGER ZPLTJOBPRSNMST_BU0 FOR ZPLTJOBPRSNMST ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTJOBPRSNSLV_BU0 */ CREATE TRIGGER ZPLTJOBPRSNSLV_BU0 FOR ZPLTJOBPRSNSLV ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTJOBSLIST_BI */ CREATE TRIGGER ZPLTJOBSLIST_BI FOR ZPLTJOBSLIST ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null or (New.ID=0) ) then New.ID = Gen_ID(zpltjobslist_ID, 1); end ^ /* Trigger: ZPLTJOBSLIST_BU */ CREATE TRIGGER ZPLTJOBSLIST_BU FOR ZPLTJOBSLIST ACTIVE BEFORE UPDATE POSITION 0 as declare variable Owner Integer; begin New.lastedit = Current_TimeStamp; -- check circular links in tree if (New.Owner is not Null and New.Owner=New.ID) then New.Owner=Old.Owner; Owner = New.Owner; while (:Owner is not Null) do begin Select Owner from ZpltJobsList where ID=:Owner and CoalEsce(Grou_,0)=1 into :Owner; if (:Owner=New.ID) then New.Owner = OLd.Owner; end -- end ^ /* Trigger: ZPLTPLATACCR_AD0 */ CREATE TRIGGER ZPLTPLATACCR_AD0 FOR ZPLTPLATACCR ACTIVE AFTER DELETE POSITION 0 as begin Delete from AccnProv where ID=Old.AccnID; end ^ /* Trigger: ZPLTPLATACCR_BI0 */ CREATE TRIGGER ZPLTPLATACCR_BI0 FOR ZPLTPLATACCR ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is null) then New.ID = Gen_ID(ZpltPlatAcCr_ID,1); end ^ /* Trigger: ZPLTPLATMST_AU0 */ CREATE TRIGGER ZPLTPLATMST_AU0 FOR ZPLTPLATMST ACTIVE AFTER UPDATE POSITION 0 as begin if (New.OperID is Not Null and New.OperID <> 0) then Execute Procedure ZpltPlatMst_GenAccnRec(New.ID); end ^ /* Trigger: ZPLTPLATMST_BD0 */ CREATE TRIGGER ZPLTPLATMST_BD0 FOR ZPLTPLATMST ACTIVE BEFORE DELETE POSITION 0 as begin if (Old.Closed = 0) then delete From ZpltPlatSlv where MstID=Old.ID; end ^ /* Trigger: ZPLTPLATMST_BI0 */ CREATE TRIGGER ZPLTPLATMST_BI0 FOR ZPLTPLATMST ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.OurOrgnID is null) then Select Min(ID) from Orgn where OurOrgn=1 into New.OurOrgnID; end ^ /* Trigger: ZPLTPLATMST_BU0 */ CREATE TRIGGER ZPLTPLATMST_BU0 FOR ZPLTPLATMST ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; Execute Procedure ZpltPlatMst_DelAccnRec(OLd.ID); end ^ /* Trigger: ZPLTPLATSLV_AU0 */ CREATE TRIGGER ZPLTPLATSLV_AU0 FOR ZPLTPLATSLV ACTIVE AFTER UPDATE POSITION 0 as begin /* Gen Prov. */ Update ZpltPlatMst set ID=ID where ID=New.MstID; end ^ /* Trigger: ZPLTPLATSLV_BD0 */ CREATE TRIGGER ZPLTPLATSLV_BD0 FOR ZPLTPLATSLV ACTIVE BEFORE DELETE POSITION 0 as begin /* Удалить Депонент */ Delete from ZpltPrsnDpn where PSlvID = Old.ID; end ^ /* Trigger: ZPLTPLATSLV_BU0 */ CREATE TRIGGER ZPLTPLATSLV_BU0 FOR ZPLTPLATSLV ACTIVE BEFORE UPDATE POSITION 0 as begin New.LastEdit = Current_TimeStamp; if (New.SSumma is Null) then New.SSumma = 0; if ((New.SSumma=0) and (New.SUMMA <> 0)) then New.SDate=Null; if (New.SDATE is Null) then New.SSUMMA = 0; if (Old.Dpn=1 and New.Dpn=0) then begin Delete From ZpltPrsnDpn Where PSLVID=Old.ID; New.DSUMMA = 0.0; New.DDATE = Null; end end ^ /* Trigger: ZPLTPRSNDPN_BU0 */ CREATE TRIGGER ZPLTPRSNDPN_BU0 FOR ZPLTPRSNDPN ACTIVE BEFORE UPDATE POSITION 0 as begin if (New.SDATE is Null) then New.SSUMMA = 0.0; if (New.SDATE is not Null) then New.SSUMMA = New.DSUMMA; end ^ /* Trigger: ZPLTSERTMEDIC_BI0 */ CREATE TRIGGER ZPLTSERTMEDIC_BI0 FOR ZPLTSERTMEDIC ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(ZpltSertMedic_ID, 1); end ^ /* Trigger: ZPLTSERTMEDIC_BU0 */ CREATE TRIGGER ZPLTSERTMEDIC_BU0 FOR ZPLTSERTMEDIC ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTSERTVACAT_BI0 */ CREATE TRIGGER ZPLTSERTVACAT_BI0 FOR ZPLTSERTVACAT ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(ZpltSertVacat_ID, 1); end ^ /* Trigger: ZPLTSERTVACAT_BU0 */ CREATE TRIGGER ZPLTSERTVACAT_BU0 FOR ZPLTSERTVACAT ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ /* Trigger: ZPLTSLVDAYCOMMENT_BI */ CREATE TRIGGER ZPLTSLVDAYCOMMENT_BI FOR ZPLTSLVDAYCOMMENT ACTIVE BEFORE INSERT POSITION 0 as begin if (New.ID is Null) then New.ID = Gen_ID(ZpltSlvDayComment_ID, 1); end ^ /* Trigger: ZPLTTABELPLAN_BI0 */ CREATE TRIGGER ZPLTTABELPLAN_BI0 FOR ZPLTTABELPLAN ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(zplttabelplan_id, 1); New.wTime = New.D1 + New.D2 + New.D3 + New.D4 + New.D5 + New.D6 + New.D7 + New.D8 + New.D9 + New.D10 + New.D11 + New.D12 + New.D13 + New.D14 + New.D15 + New.D16 + New.D17 + New.D18 + New.D19 + New.D20 + New.D21 + New.D22 + New.D23 + New.D24 + New.D25 + New.D26 + New.D27 + New.D28 + New.D29 + New.D30 + New.D31; end ^ /* Trigger: ZPLTTABELPLAN_BU0 */ CREATE TRIGGER ZPLTTABELPLAN_BU0 FOR ZPLTTABELPLAN ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; New.wTime = New.D1 + New.D2 + New.D3 + New.D4 + New.D5 + New.D6 + New.D7 + New.D8 + New.D9 + New.D10 + New.D11 + New.D12 + New.D13 + New.D14 + New.D15 + New.D16 + New.D17 + New.D18 + New.D19 + New.D20 + New.D21 + New.D22 + New.D23 + New.D24 + New.D25 + New.D26 + New.D27 + New.D28 + New.D29 + New.D30 + New.D31; end ^ /* Trigger: ZPLTTABEL_BI0 */ CREATE TRIGGER ZPLTTABEL_BI0 FOR ZPLTTABEL ACTIVE BEFORE INSERT POSITION 0 AS begin if (New.ID is Null) then New.ID = Gen_ID(zplttabel_id, 1); end ^ /* Trigger: ZPLTTABEL_BU0 */ CREATE TRIGGER ZPLTTABEL_BU0 FOR ZPLTTABEL ACTIVE BEFORE UPDATE POSITION 0 AS begin New.LastEdit = Current_TimeStamp; end ^ SET TERM ; ^ /******************************************************************************/ /*** Stored procedures ***/ /******************************************************************************/ SET TERM ^ ; ALTER PROCEDURE ACCNPLAN_ANNAME ( ACCN VARCHAR(5), ANID INTEGER) RETURNS ( ANNAME VARCHAR(40)) AS declare variable A1 integer; declare variable A2 integer; declare variable A3 integer; declare variable A4 integer; declare variable A5 integer; declare variable A6 integer; declare variable A7 integer; declare variable A8 integer; declare variable A9 integer; declare variable G0 integer; declare variable G1 integer; begin AnName = Null; select A1, A2, A3, A4, A5, A6, A7, A8, A9, Group0, Group1 from AccnPlan where Accn = :Accn into :A1, :A2, :A3, :A4, :A5, :A6, :A7, :A8, :A9, :G0, :G1; if (:G1 = 1) then Select Name from Lev where ID = :AnID into :AnName; if (:G0 = 1) then Select Name from Lev where ID = :AnID into :AnName; if (:A9 = 1) then Select Name from Lev where ID = :AnID into :AnName; if (:A8 = 1) then Select Name from Lev where ID = :AnID into :AnName; if (:A7 = 1) then Select Name from KassList where ID = :AnID into :AnName; if (:A6 = 1) then Select Name from OrgnBankAccn where ID = :AnID into :AnName; if (:A5 = 1) then Select Name from PodrList where ID = :AnID into :AnName; if (:A4 = 1) then Select Name from StorList where ID = :AnID into :AnName; if (:A3 = 1) then Select Name from Personal where ID = :AnID into :AnName; if (:A2 = 1) then Select Name from Goods where ID = :AnID into :AnName; if (:A1 = 1) then Select Name from Orgn where ID = :AnID into :AnName; suspend; end^ ALTER PROCEDURE ACCNPLAN_CALCAN ( ORGNID INTEGER, ACCN VARCHAR(5), AN INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, BS DOUBLE PRECISION, OD DOUBLE PRECISION, OK DOUBLE PRECISION, ES DOUBLE PRECISION, NAME VARCHAR(40)) AS begin if (An = 1) then begin /*** организации ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join Orgn H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT1, Sum(A.Summa), H.Name from AccnProv A Left Join Orgn H on H.ID = A.DT1 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT1, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT1, -Sum(A.Summa), H.Name from AccnProv A Left Join Orgn H on H.ID = A.KT1 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT1, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT1, Sum(A.Summa), H.Name from AccnProv A Left Join Orgn H on H.ID = A.DT1 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT1, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT1, Sum(A.Summa), H.Name from AccnProv A Left Join Orgn H on H.ID = A.KT1 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT1, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = 2) then begin /*** товары ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join Goods H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT2, Sum(A.Summa), H.Name from AccnProv A Left Join Goods H on H.ID = A.DT2 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT2, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT2, -Sum(A.Summa), H.Name from AccnProv A Left Join Goods H on H.ID = A.KT2 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT2, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT2, Sum(A.Summa), H.Name from AccnProv A Left Join Goods H on H.ID = A.DT2 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT2, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT2, Sum(A.Summa), H.Name from AccnProv A Left Join Goods H on H.ID = A.KT2 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT2, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = 3) then begin /*** сотрудники ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join Personal H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT3, Sum(A.Summa), H.Name from AccnProv A Left Join Personal H on H.ID = A.DT3 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT3, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT3, -Sum(A.Summa), H.Name from AccnProv A Left Join Personal H on H.ID = A.KT3 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT3, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT3, Sum(A.Summa), H.Name from AccnProv A Left Join Personal H on H.ID = A.DT3 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT3, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT3, Sum(A.Summa), H.Name from AccnProv A Left Join Personal H on H.ID = A.KT3 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT3, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = 4) then begin /*** склады ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join StorList H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT4, Sum(A.Summa), H.Name from AccnProv A Left Join StorList H on H.ID = A.DT4 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT4, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT4, -Sum(A.Summa), H.Name from AccnProv A Left Join StorList H on H.ID = A.KT4 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT4, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT4, Sum(A.Summa), H.Name from AccnProv A Left Join StorList H on H.ID = A.DT4 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT4, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT4, Sum(A.Summa), H.Name from AccnProv A Left Join StorList H on H.ID = A.KT4 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT4, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = 5) then begin /*** подразделения ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join PodrList H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT5, Sum(A.Summa), H.Name from AccnProv A Left Join PodrList H on H.ID = A.DT5 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT5, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT5, -Sum(A.Summa), H.Name from AccnProv A Left Join PodrList H on H.ID = A.KT5 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT5, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT5, Sum(A.Summa), H.Name from AccnProv A Left Join PodrList H on H.ID = A.DT5 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT5, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT5, Sum(A.Summa), H.Name from AccnProv A Left Join PodrList H on H.ID = A.KT5 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT5, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = 6) then begin /*** расч. счета ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join OrgnBankAccn H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT6, Sum(A.Summa), H.Name from AccnProv A Left Join OrgnBankAccn H on H.ID = A.DT6 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT6, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT6, -Sum(A.Summa), H.Name from AccnProv A Left Join OrgnBankAccn H on H.ID = A.KT6 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT6, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT6, Sum(A.Summa), H.Name from AccnProv A Left Join OrgnBankAccn H on H.ID = A.DT6 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT6, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT6, Sum(A.Summa), H.Name from AccnProv A Left Join OrgnBankAccn H on H.ID = A.KT6 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT6, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = 7) then begin /*** кассы ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join KassList H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT7, Sum(A.Summa), H.Name from AccnProv A Left Join KassList H on H.ID = A.DT7 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT7, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT7, -Sum(A.Summa), H.Name from AccnProv A Left Join KassList H on H.ID = A.KT7 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT7, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT7, Sum(A.Summa), H.Name from AccnProv A Left Join KassList H on H.ID = A.DT7 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT7, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT7, Sum(A.Summa), H.Name from AccnProv A Left Join KassList H on H.ID = A.KT7 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT7, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = 8) then begin /*** валовые доходы ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join Lev H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT8, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.DT8 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT8, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT8, -Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.KT8 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT8, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT8, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.DT8 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT8, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT8, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.KT8 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT8, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = 9) then begin /*** валовые расходы ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Left Join Lev H on H.ID = S.SubKey where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = :An into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DT9, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.DT9 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DT9, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KT9, -Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.KT9 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KT9, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DT9, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.DT9 where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DT9, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KT9, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.KT9 where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KT9, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = -1) then begin /*** По Подразделениям ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Join AccnPlan A on A.Accn = :Accn and A.Accn = S.Accn Join Lev H on H.ID = S.SubKey and H.Owner = A.Group0 where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = 0 into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DtPrt, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.DtPrt where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DtPrt, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KtPrt, -Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.KtPrt where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KtPrt, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DtPrt, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.DtPrt where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DtPrt, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KtPrt, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.KtPrt where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KtPrt, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end if (An = -2) then begin /*** По Объектам ***/ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; /* начальное сальдо из SUB */ for select S.Subkey, S.Saldo, H.Name from Sub S Join AccnPlan A on A.Accn = :Accn and A.Accn = S.Accn Join Lev H on H.ID = S.SubKey and H.Owner = A.Group1 where S.OurOrgnID = :OrgnID and S.Accn = :Accn and S.An = 0 into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по дебету до начала отчетного периода */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for Select A.DtObj, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.DtObj where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ < :BDATE Group by A.DtObj, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* начальное сальдо - обороты по кредиту до начала отчетного периода */ for Select A.KtObj, -Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.KtObj where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ < :BDATE Group by A.KtObj, H.Name into :ID, :BS, :Name do begin ES = :BS; Suspend; end /* обороты по дебету за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.DtObj, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.DtObj where A.OurOrgnID = :OrgnID and A.DT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.DtObj, H.Name into :ID, :OD, :Name do begin ES = :OD; Suspend; end /* обороты по кредиту за период */ BS = 0.0; OD = 0.0; OK = 0.0; ES = 0.0; for select A.KtObj, Sum(A.Summa), H.Name from AccnProv A Left Join Lev H on H.ID = A.KtObj where A.OurOrgnID = :OrgnID and A.KT=:Accn and A.DAT_ >= :BDATE and A.DAT_ <= :EDATE Group by A.KtObj, H.Name into :ID, :OK, :Name do begin ES = -:OK; Suspend; end end end^ ALTER PROCEDURE ACCNPLAN_CALCSALDO ( ORGNID INTEGER, ACCN VARCHAR(5), BDATE TIMESTAMP) RETURNS ( DT DOUBLE PRECISION, KT DOUBLE PRECISION, CDT DOUBLE PRECISION, CKT DOUBLE PRECISION) AS Declare Variable G0 Integer; Declare Variable G1 Integer; Declare Variable A1 integer; Declare Variable A2 integer; Declare Variable A3 integer; Declare Variable A4 integer; Declare Variable A5 integer; Declare Variable A6 integer; Declare Variable A7 integer; Declare Variable A8 integer; Declare Variable A9 integer; Declare Variable S Double Precision; Declare Variable cS Double Precision; Declare Variable sS Double Precision; Declare Variable csS Double Precision; Declare Variable An Integer; Declare Variable oDt Double Precision; Declare Variable oKt Double Precision; Declare Variable CoDt Double Precision; Declare Variable CoKt Double Precision; Declare Variable LevID Integer; Declare Variable PrevID Integer; Declare Variable Summa Double Precision; Declare Variable cSumma Double Precision; Declare Variable X Integer; declare variable Saldo double precision; declare variable cSaldo double precision; begin Dt=0; Kt=0; for select Group0,Group1,a1,a2,a3,a4,a5 from AccnPlan A where Accn=:Accn and (exists (select dt from accnprov where dt=a.accn and OurOrgnID=:OrgnID) or Exists (select kt from accnprov where kt=a.accn and OurOrgnID=:OrgnID) or Exists (Select Accn from Sub where Accn = A.Accn and OurOrgnID=:OrgnID)) into :G0,:G1,:A1,:A2,:A3,:A4,:A5 do begin An=Null; if(:G0 is Not Null and :G0 <> 0) then An=0; if(:G1 is Not Null and :G1 <> 0) then An=0; if(:A5=1)then An=5; if(:A4=1)then An=4; if(:A3=1)then An=3; if(:A2=1)then An=2; if(:A1=1)then An=1; if(An is Null) then begin /* Счет без аналитики */ Select Saldo, cSaldo from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An = 0 and SubKey = 0 into :Saldo, :cSaldo; if (:Saldo is Null) then Saldo = 0.0; if (:cSaldo is Null) then cSaldo = 0.0; Dt = 0.0; Kt = 0.0; cDt = 0.0; cKt = 0.0; if (:Saldo > 0.0) then Dt = :Saldo; if (:Saldo < 0.0) then Kt = -:Saldo; if (:cSaldo > 0.0) then cDt = :cSaldo; if (:cSaldo < 0.0) then cKt = -:cSaldo; oDt=0.0; oKt=0.0; CoDt = 0.0; CoKt = 0.0; Select Sum(Summa), Sum(cSumma) from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0<:bDate into :oDt, :CoDt; Select Sum(Summa), Sum(cSumma) from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0<:bDate into :oKt, :CoKt; if(:oDt is Null) then oDt = 0; if(:oKt is Null) then oKt = 0; if(:CoDt is Null) then CoDt = 0; if(:CoKt is Null) then CoKt = 0; S = :Dt - :Kt + :oDt - :oKt; cS = :cDt - :cKt + :CoDt - :CoKt; Dt=0; Kt=0; cDt = 0; cKt = 0; if(:S > 0) then begin Dt=:S; Kt=0; end if(:S < 0) then begin Dt=0; Kt=-:S; end if(:cS > 0) then begin cDt=:cS; cKt=0; end if(:cS < 0) then begin cDt=0; cKt=-:cS; end Suspend; Exit; end if(:An=1) then begin /* организации */ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select Subkey, Saldo, cSaldo, 1 from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An=1 union Select Dt1, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate Group By Dt1 union Select Kt1, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate Group By Kt1 into :LevID, :Summa, :cSumma, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end if(:An=2) then begin /* товар */ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select Subkey, Saldo, cSaldo, 1 from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An=2 union Select Dt2, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate Group By Dt2 union Select Kt2, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate Group By Kt2 into :LevID, :Summa, :cSumma, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end if(:An=3) then begin /* сотрудники */ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select Subkey, Saldo, cSaldo, 1 from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An=3 union Select Dt3, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate Group By Dt3 union Select Kt3, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate Group By Kt3 into :LevID, :Summa, :cSumma, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end if(:An=4) then begin /* склады */ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select Subkey, Saldo, cSaldo, 1 from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An=4 union Select Dt4, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate Group By Dt4 union Select Kt4, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate Group By Kt4 into :LevID, :Summa, :cSumma, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end if(:An=5) then begin /* подразделения */ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select Subkey, Saldo, cSaldo, 1 from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An=5 union Select Dt5, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate Group By Dt5 union Select Kt5, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate Group By Kt5 into :LevID, :Summa, :cSumma, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end if(:An=6) then begin /* расчетные счета */ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select Subkey, Saldo, cSaldo, 1 from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An=6 union Select Dt6, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate Group By Dt6 union Select Kt6, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate Group By Kt6 into :LevID, :Summa, :cSumma, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end if(:An=7) then begin /* кассы */ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select Subkey, Saldo, cSaldo, 1 from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An=7 union Select Dt7, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate Group By Dt7 union Select Kt7, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate Group By Kt7 into :LevID, :Summa, :cSumma, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end if(:An=0 and :G0 is Not Null and :G0 <> 0) then begin /* LEV G0*/ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select S.Subkey, S.Saldo, S.cSaldo, 1 from Sub S,Lev L where S.OurOrgnID=:OrgnID and S.Accn=:Accn and S.An=0 and L.ID=S.SubKey and L.Owner=:G0 union All Select DtPrt, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate and DtPrt is Not Null Group By DtPrt union All Select 0, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate and DtPrt is Null Group By DtPrt union All Select KtPrt, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate and KtPrt is Not Null Group By KtPrt union All Select 0, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate and KtPrt is Null Group By KtPrt Order by 1 into :LevID, :Summa, :cSumma, :X do begin if (:LevID is Null) then LevID = 0; if(:PrevID <> :LevID or :PrevID is Null) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end if(:An=0 and :G1 is Not Null and :G1 <> 0) then begin /* LEV G1 */ Dt = 0; Kt = 0; cDt = 0; cKt = 0; PrevID = Null; S=0; sS=0; cS = 0; csS = 0; for select S.Subkey, S.Saldo, S.cSaldo, 1 from Sub S,Lev L where S.OurOrgnID=:OrgnID and S.Accn=:Accn and S.An=0 and L.ID=S.SubKey and L.Owner=:G1 union All Select DtObj, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate and DtObj is not Null Group By DtObj union All Select 0, +Sum(Summa), +Sum(cSumma), 2 from AccnProv where OurOrgnID=:OrgnID and Dt=:Accn and Dat_+0 < :bDate and DtObj is Null Group By DtObj union All Select KtObj, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate and KtObj is not Null Group By KtObj union All Select 0, -Sum(Summa), -Sum(cSumma), 3 from AccnProv where OurOrgnID=:OrgnID and Kt=:Accn and Dat_+0 < :bDate and KtObj is Null Group By KtObj Order by 1 into :LevID, :Summa, :cSumma, :X do begin if (:LevID is Null) then LevID = 0; if(:PrevID <> :LevID or :PrevID is Null) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0.0; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; if(:cSumma is Not Null) then csS=:cSumma; else csS=0.0; end else begin sS=:sS+:Summa; csS=:csS+:cSumma; end PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:csS > 0) then cDt=:cDt+:csS; if(:csS < 0) then cKt=:cKt-:csS; Suspend; Exit; end end if (:Dt is Null) then Dt=0; if (:Kt is Null) then Kt=0; if (:cDt is Null) then cDt=0; if (:cKt is Null) then cKt=0; Suspend; end^ ALTER PROCEDURE ACCNPLAN_CALCSALDOCURR ( ORGNID INTEGER, ACCN VARCHAR(5), BDATE TIMESTAMP, CURRTYP INTEGER) RETURNS ( DT DOUBLE PRECISION, KT DOUBLE PRECISION, SALDO DOUBLE PRECISION) AS DECLARE VARIABLE G0 INTEGER; DECLARE VARIABLE G1 INTEGER; DECLARE VARIABLE A1 INTEGER; DECLARE VARIABLE A2 INTEGER; DECLARE VARIABLE A3 INTEGER; DECLARE VARIABLE A4 INTEGER; DECLARE VARIABLE A5 INTEGER; DECLARE VARIABLE S DOUBLE PRECISION; DECLARE VARIABLE SS DOUBLE PRECISION; DECLARE VARIABLE AN INTEGER; DECLARE VARIABLE ODT DOUBLE PRECISION; DECLARE VARIABLE OKT DOUBLE PRECISION; DECLARE VARIABLE LEVID INTEGER; DECLARE VARIABLE PREVID INTEGER; DECLARE VARIABLE SUMMA DOUBLE PRECISION; DECLARE VARIABLE X INTEGER; DECLARE VARIABLE BCURS DOUBLE PRECISION; begin Dt=0; Kt=0; for select Dt,Kt,Group0,Group1,a1,a2,a3,a4,a5 from AccnPlan where Accn=:Accn into :Dt,:Kt,:G0,:G1,:A1,:A2,:A3,:A4,:A5 do begin /* начальное сальдо пересчитывается по самому раннему курсу */ select nBank from CurrData where Typ=:CurrTyp and Dat_=(select min(Dat_) from CurrData where Typ=:CurrTyp) into :bCurs; An=Null; if(:G0 is Not Null and :G0 <> 0) then An=0; if(:G1 is Not Null and :G1 <> 0) then An=0; if(:A5=1)then An=5; if(:A4=1)then An=4; if(:A3=1)then An=3; if(:A2=1)then An=2; if(:A1=1)then An=1; if(:Dt is Null) then Dt = 0; if(:Kt is Null) then Kt = 0; if(An is Null) then begin /* No Analitic */ Dt = :Dt/:bCurs; Kt = :Kt/:bCurs; oDt=0; oKt=0; For Select Sum(A.Summa/(Select Val From Currency_GetValue(:CurrTyp,A.Dat_)) ) from AccnProv A where A.Dt=:Accn and A.Dat_<:bDate into :oDt do oDt=:oDt; For Select Sum(A.Summa/(Select Val From Currency_GetValue(:CurrTyp,A.Dat_)) ) from AccnProv A where A.Kt=:Accn and A.Dat_<:bDate into :oKt do oKt=:oKt; if(:oDt is Null) then oDt = 0; if(:oKt is Null) then oKt = 0; S = Dt - Kt + oDt - oKt; Dt=0; Kt=0; if(:S > 0) then begin Dt=:S; Kt=0; end if(:S < 0) then begin Dt=0; Kt=-:S; end Saldo = :Dt-:Kt; Suspend; Exit; end if(:An=1) then begin /* ORGN */ Dt = 0; Kt = 0; PrevID = Null; S=0; sS=0; for select S.Subkey, S.Saldo/:bCurs, 1 from Sub S where S.Accn=:Accn and S.An=1 union Select A1.Dt1, +Sum(A1.Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A1.DAT_))), 2 from AccnProv A1 where A1.Dt=:Accn and A1.Dat_ < :bDate Group By A1.Dt1 union Select A2.Kt1, -Sum(A2.Summa/(Select Val From CURRENCY_GETVALUE(:CurrTyp,A2.DAT_))), 3 from AccnProv A2 where A2.Kt=:Accn and A2.Dat_ < :bDate Group By A2.Kt1 into :LevID, :Summa, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0; end else sS=:sS+:Summa; PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; Suspend; Exit; end if(:An=2) then begin /* GOODS */ Dt = 0; Kt = 0; PrevID = Null; S=0; sS=0; for select S.Subkey, S.Saldo/:bCurs, 1 from Sub S where S.Accn=:Accn and S.An=2 union Select A1.Dt2, +Sum(A1.Summa/ (select Val From CURRENCY_GETVALUE(:CurrTyp,A1.DAT_))), 2 from AccnProv A1 where A1.Dt=:Accn and A1.Dat_ < :bDate Group By A1.Dt2 union Select A2.Kt2, -Sum(A2.Summa/ (select Val From CURRENCY_GETVALUE(:CurrTyp,A2.DAT_))), 3 from AccnProv A2 where A2.Kt=:Accn and A2.Dat_ < :bDate Group By A2.Kt2 into :LevID, :Summa, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0; end else sS=:sS+:Summa; PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; Suspend; Exit; end if(:An=3) then begin /* PERSONAL */ Dt = 0; Kt = 0; PrevID = Null; S=0; sS=0; for select S.Subkey, S.Saldo/:bCurs, 1 from Sub S where S.Accn=:Accn and S.An=3 union Select A1.Dt3, +Sum(A1.Summa/ (select Val From CURRENCY_GETVALUE(:CurrTyp,A1.DAT_))), 2 from AccnProv A1 where A1.Dt=:Accn and A1.Dat_ < :bDate Group By A1.Dt3 union Select A2.Kt3, -Sum(A2.Summa/ (select Val From CURRENCY_GETVALUE(:CurrTyp,A2.DAT_))), 3 from AccnProv A2 where A2.Kt=:Accn and A2.Dat_ < :bDate Group By A2.Kt3 into :LevID, :Summa, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0; end else sS=:sS+:Summa; PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; Suspend; Exit; end if(:An=4) then begin /* STORLIST */ Dt = 0; Kt = 0; PrevID = Null; S=0; sS=0; for select S.Subkey, S.Saldo/:bCurs, 1 from Sub S where S.Accn=:Accn and S.An=4 union Select A1.Dt4, +Sum(A1.Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A1.DAT_))), 2 from AccnProv A1 where A1.Dt=:Accn and A1.Dat_ < :bDate Group By A1.Dt4 union Select A2.Kt4, -Sum(A2.Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A2.DAT_))), 3 from AccnProv A2 where A2.Kt=:Accn and A2.Dat_ < :bDate Group By A2.Kt4 into :LevID, :Summa, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0; end else sS=:sS+:Summa; PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; Suspend; Exit; end if(:An=5) then begin /* */ Dt = 0; Kt = 0; PrevID = Null; S=0; sS=0; for select S.Subkey, S.Saldo/:bCurs, 1 from Sub S where S.Accn=:Accn and S.An=5 union Select A1.Dt5, +Sum(A1.Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A1.DAT_))), 2 from AccnProv A1 where A1.Dt=:Accn and A1.Dat_ < :bDate Group By A1.Dt5 union Select A2.Kt5, -Sum(A2.Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A2.DAT_))), 3 from AccnProv A2 where A2.Kt=:Accn and A2.Dat_ < :bDate Group By A2.Kt5 into :LevID, :Summa, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0; end else sS=:sS+:Summa; PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; Suspend; Exit; end if(:An=0 and :G0 is Not Null and :G0 <> 0) then begin /* LEV G0*/ Dt = 0; Kt = 0; PrevID = Null; S=0; sS=0; for select S.Subkey, S.Saldo/:bCurs, 1 from Sub S,Lev L where S.Accn=:Accn and S.An=0 and L.ID=S.SubKey and L.Owner=:G0 union Select DtPrt, +Sum(Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A1.DAT_))), 2 from AccnProv A1 where Dt=:Accn and Dat_ < :bDate Group By DtPrt union Select KtPrt, -Sum(Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A2.DAT_))), 3 from AccnProv A2 where Kt=:Accn and Dat_ < :bDate Group By KtPrt into :LevID, :Summa, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0; end else sS=:sS+:Summa; PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; Suspend; Exit; end if(:An=0 and :G1 is Not Null and :G1 <> 0) then begin /* LEV G1 */ Dt = 0; Kt = 0; PrevID = Null; S=0; sS=0; for select S.Subkey, S.Saldo, 1 from Sub S,Lev L where S.Accn=:Accn and S.An=0 and L.ID=S.SubKey and L.Owner=:G1 union Select DtObj, +Sum(Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A1.DAT_))), 2 from AccnProv A1 where Dt=:Accn and Dat_ < :bDate Group By DtObj union Select KtObj, -Sum(Summa/(select Val From CURRENCY_GETVALUE(:CurrTyp,A2.DAT_))), 3 from AccnProv A2 where Kt=:Accn and Dat_ < :bDate Group By KtObj into :LevID, :Summa, :X do begin if(:PrevID <> :LevID) then begin if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; if(:Summa is Not Null) then sS=:Summa; else sS=0; end else sS=:sS+:Summa; PrevID=:LevID; end if(:sS > 0) then Dt=:Dt+:sS; if(:sS < 0) then Kt=:Kt-:sS; Suspend; Exit; end end if (:Dt is Null) then Dt=0; if(:Kt is Null) then Kt=0; Suspend; end^ ALTER PROCEDURE ACCNPLAN_RECALC ( ORGNID INTEGER, ACCN VARCHAR(5), OWNER INTEGER, AN INTEGER) AS declare variable DT Double Precision; declare variable KT Double Precision; declare variable CDT Double Precision; declare variable CKT Double Precision; declare variable Saldo Double Precision; declare variable cSaldo Double Precision; declare variable SubID integer; begin if (:an=0) then begin select sum(sub.saldo),Sum(Sub.cSaldo) from sub,lev where Sub.OurOrgnID=:OrgnID and sub.accn=:accn and Sub.SubKey <> 0 and lev.id=sub.subkey and lev.owner =:owner and an=:an and sub.saldo>0.0 into :DT,:CDT; if (:DT is Null) then DT=0.0; if (:CDT is Null) then CDT = 0.0; select -sum(sub.saldo),-Sum(Sub.cSaldo) from sub,lev where Sub.OurOrgnID=:OrgnID and sub.accn=:accn and Sub.SubKey <> 0 and lev.id=sub.subkey and lev.owner =:owner and an = :an and sub.saldo<0.0 into :KT,:CKT; if(:KT is Null) then KT=0.0; if (:CKT is Null) then CKT = 0.0; end else begin select sum(saldo),Sum(cSaldo) from sub where OurOrgnID=:OrgnID and Accn=:Accn and an=:an and SubKey <> 0 and saldo>0.0 into :DT,:CDT; select -sum(saldo),-Sum(cSaldo) from sub where OurOrgnID=:OrgnID and accn=:accn and an=:an and SubKey <> 0 and saldo<0.0 into :KT,:CKT; if (:DT is Null) then DT=0.0; if (:KT is Null) then KT=0.0; if (:CDT is Null) then CDT=0.0; if (:CKT is Null) then CKT=0.0; end Saldo = :DT-:KT; cSaldo = :cDT-:cKT; update accnplan set DT=:DT, KT=:KT, CDT=:CDT, CKT=:CKT where ACCN = :ACCN; SubID = Null; select ID from Sub where OurOrgnID=:OrgnID and Accn=:Accn and An=0 and SubKey=0 into :SubID; if ((:SubID is Null) and (:Saldo <> 0.0 or :cSaldo <> 0.0)) then begin Insert into Sub(OurOrgnID, Accn, An, SubKey, Saldo, cSaldo) Values(:OrgnID, :Accn, 0, 0, :Saldo, :cSaldo); end if ((:SubID is not Null) and (:Saldo=0.0 and :cSaldo=0.0)) then begin Delete from Sub where ID=:SubID; end if ((:SubID is not Null) and (:Saldo<>0.0 or :cSaldo<>0.0)) then begin Update Sub set Saldo=:Saldo, cSaldo=:cSaldo where ID=:SubID; end end^ ALTER PROCEDURE BANKMFO_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(BankMfo_ID, 1); end^ ALTER PROCEDURE BOOKSLDT_GENACCNREC ( ID INTEGER) AS Declare variable NameID integer; declare variable AccnProvID integer; declare variable Nbr varchar(32); declare variable Comment varchar(255); Declare variable aDate Date; Declare variable OperID integer; Declare variable SumTyp integer; Declare variable OpID integer; Declare variable Oper integer; Declare variable Dt varchar(5); Declare variable Kt varchar(5); Declare variable aSumma double precision; Declare Variable ProcNds double precision; Declare variable Proc double precision; Declare variable Storno integer; Declare variable UserName varchar(20); Declare variable DtPrt integer; Declare variable DtObj integer; Declare variable KtPrt integer; Declare variable KtObj integer; Declare variable Dt1 integer; Declare variable Kt1 integer; Declare variable Summa double precision; declare variable kSumma double precision; declare variable Nds double precision; declare variable NdsProc double precision; declare variable OurOrgnID integer; declare variable BookDaysID integer; declare variable kNbr varchar(32); begin ProcNds = 20.0; for select Summa, kSumma, NameID, Dat_, OperID, Nbr, BookDaysID, Nds, NdsProc, kNbr from BookSlDt where ID = :ID and DAT_ is not Null and OperID is not Null into :Summa, :kSumma, :NameID, :aDate, :OperID, :Nbr, :BookDaysID, :Nds, :NdsProc, :kNbr do begin select OurOrgnID from BookSlDtDays where ID = :BookDaysID into OurOrgnID; for Select ID, Oper, Dt, Kt, Comment, SumTyp, Proc, Storno, DtPrt, DtObj, KtPrt, KtObj from StorAccn where OperID = :OperID order by ID into :OpID, :Oper, :Dt, :Kt, :Comment, :SumTyp, :Proc, :Storno, :DtPrt, :DtObj, :KtPrt, :KtObj do begin aSumma = :Summa; if (:kSumma <> 0) then Nbr = :kNbr; if (:SumTyp = 0) then aSumma = :Summa; if (:SumTyp = 1) then aSumma = :Nds; --:Summa / (100.0 + :ProcNds) * :ProcNds; if (:SumTyp = 2) then aSumma = :Summa - :Nds; --:Summa - (:Summa / (100.0 + :ProcNds) * :ProcNds); if (:SumTyp = 3) then begin aSumma = :kSumma; end dt1 = Null; kt1 = Null; Select a1 from AccnPlan where Accn = :Dt into :dt1; Select a1 from AccnPlan where Accn = :Kt into :kt1; if (:dt1 = 1) then dt1 = :NameID; else dt1 = Null; if (:kt1 = 1) then kt1 = :NameID; else kt1 = Null; if (:aSumma <> 0.0 and :aDate is not Null) then begin if (:Proc <> 0.0 and :Proc is not Null) then aSumma = :aSumma / 100.0 * :Proc; if (:Storno = 1) then aSumma = -:aSumma; AccnProvID = Gen_ID(AccnProv_ID, 1); insert into AccnProv (ID, OurOrgnID, DAT_, Summa, Document, Dt, Kt, Comment, UserName, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID, dt1, kt1) Values(:AccnProvID, :OurOrgnID, :aDate, :aSumma, :Nbr, :Dt, :Kt, :Comment, :UserName, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :OperID, :ID, :dt1, :kt1); Insert into BookSlDtAcCr(BookSlDtID, AccnProvID) Values(:ID, :AccnProvID); end end end end^ ALTER PROCEDURE BOOKSLDT_IMPORT ( ORGNID INTEGER, ADATE TIMESTAMP) RETURNS ( DOCTYP INTEGER, DOCID INTEGER, NBR VARCHAR(20), NAMEID INTEGER, SUMMA DOUBLE PRECISION, NDS DOUBLE PRECISION, NDSPROC DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, KNDS DOUBLE PRECISION, NNBR VARCHAR(20), NDATE TIMESTAMP, DATECALC TIMESTAMP, FORMSTR VARCHAR(255)) AS declare variable ProcNDS double precision; declare variable SumS1 double precision; declare variable SumS2 double precision; declare variable sSumma double precision; declare variable CrCnt integer; begin -- накладные (товар) for select Cast(0 as integer), DD.ID, DD.Nbr, DD.NameID, CoalEsce((select Sum(D.Quant*D.Price) from gdddt d where d.DgvKey=DD.ID),0.0) + CoalEsce((select Sum(D.Quant*D.Price) from gdddtddu d where d.DgvKey=DD.ID),0.0), CoalEsce((select Sum(D.Quant*D.Nds) from gdddt d where d.dgvkey=dd.id), 0.0) + CoalEsce((select Sum(D.Quant*D.Nds) from gdddtddu d where d.dgvkey=dd.id), 0.0), DD.ProcNDS, Cast(0.0 as Double precision), Cast(0.0 as Double precision), DD.NNBR, DD.NDATE, DD.out_date, 'ПНЕ' from DgvDt DD join storlist S on S.ID=DD.Stor -- left join GddDt D on d.DgvKey=DD.ID where DD.out_date is not Null and DD.Out_Date = :ADATE and DD.Typ in (0, 10) and S.OurOrgnID = :ORGNID -- Group By DD.ID, DD.Nbr, DD.NameID, DD.ProcNDS, DD.NNBR, DD.NDATE, DD.Out_Date union -- акты (услуги) select Cast(1 as integer), DD.ID, DD.Nbr, DD.NameID, DD.Summa, Null, Cast(20.00 as double precision), Cast(0.0 as Double precision), Cast(0.0 as Double precision), DD.NNBR, DD.NDATE, DD.out_date, 'ПНЕ' from DgvDtU DD, DgvDtUD D where DD.out_date is not Null and DD.Out_Date = :ADATE and D.ID = DD.DgvID and D.OurOrgnID = :ORGNID union -- платежи select Cast(2 as integer), S.ID, S.Nbr, S.NameID, S.Summa, S.Nds, S.NdsProc, Cast(0.0 as Double precision), Cast(0.0 as Double precision), S.NNBR, Cast(Null as TimeStamp), S.DAT_, Cast(Null as Varchar(255)) from Sale S left join AcOprLst A on A.ID = S.OperID where S.DAT_ is not Null and S.DAT_ = :ADATE and (S.System_Flag <> 2 or S.System_Flag is Null) and S.OurOrgnID = :OrgnID and A.ID is not Null and A.Blns = 1 union -- возвраты от заказчика select Cast(3 as integer), KK.ID, Max(KK.NNbr), KK.NameID, Cast(0.0 as double precision), Cast(0.0 as double precision), Max(DD.ProcNDS), -Sum(K.Source * D.Price), -Sum(K.Source * D.Nds), Max(KK.NNBr), Max(KK.NDate), KK.DAT_, 'РКЕ' from DgvKt KK, StorList S, DgvDt DD, GddKt K, GddDt D where KK.Typ = 2 and KK.dat_ is not Null and KK.DAT_ = :ADATE and S.ID = KK.Stor and S.OurOrgnID = :OrgnID and DD.ID = KK.DgvKey and K.DgvKey = KK.ID and D.ID = K.GddKey group by KK.ID, KK.Nbr, KK.NameID, KK.DAT_ union -- приходные кассовые ордера select Cast(4 as integer), S.ID, K.Nbr, K.OrgnID, K.Summa, Null, Cast(20.00 as double precision), Cast(0.0 as Double precision), Cast(0.0 as Double precision), Cast(Null as varchar(20)), Cast(Null as TimeStamp), K.DAT_, 'ЧК' from sale s, kassdata k, kasslist l where L.OurOrgnID = :OrgnID and K.DAT_ is not Null and K.DAT_ = :ADATE and s.id = k.storkey and l.id=k.kassid and K.Summa > 0.0 into :DocTyp, :DocID, :Nbr, :NameID, :Summa, :Nds, :ProcNDS, :KSumma, :kNds, :NNbr, :NDate, :DateCalc, :FormStr do begin if (:DocTyp = 0) then begin -- накладная (товар) Select Sum(sc.summa) from salecros sc, sale s where sc.dgvkey = :DocID and s.id = sc.salekey and s.dat_ is not null and s.dat_ < :DATECALC into :SumS1; if (:SumS1 is Null) then SumS1 = 0.0; if (:Summa <> 0.0) then begin Nds = :Nds - (:Nds / :Summa * :SumS1); end Summa = :Summa - :SumS1; end if (:DocTyp = 1) then begin -- акт (услуги) Select Sum(sc.summa) from saleducr sc, sale s where sc.dgvkey = :DocID and s.id = sc.salekey and s.dat_ is not null and s.dat_ < :DATECALC into :SumS2; if (:SumS2 is Null) then SumS2 = 0.0; if (:Summa <> 0.0) then begin Nds = :Nds - (:Nds / :Summa * :SumS2); end Summa = :Summa - :SumS2; end if (:DocTyp in (2, 4)) then begin -- платежный документ NNBr = Null; NDate = Null; Select Sum(Sc.Summa) from SaleCros SC, DgvDt DD where SC.SaleKey = :DocID and DD.ID = SC.DgvKey and (DD.out_date is not Null) and (dd.out_date <= :DATECALC) into :SumS1; Select Sum(Sc.Summa) from SaleDuCr SC, DgvDtU DD where SC.SaleKey = :DocID and DD.ID = SC.DgvKey and (DD.out_date is not Null) and (dd.out_date <= :DATECALC) into :SumS2; if (:SumS1 is Null) then SumS1 = 0.0; if (:SumS2 is Null) then SumS2 = 0.0; sSumma = :Summa; if (:Summa <> 0.0) then begin Nds = :Nds - (:Nds / :Summa * (:SumS1 + :SumS2)); end Summa = :Summa - (:SumS1 + :SumS2); end if (Abs(:Summa) > 0.005 or Abs(:KSumma) > 0.005) then begin if (:DocTyp in (2, 4) and Abs(:sSumma - Summa) < 0.005) then begin CrCnt = Null; select (Select count(*) from SaleCros where SaleKey = :DocID)+ (select count(*) from SaleDuCr where SaleKey = :DocID) from rdb$database into :CrCnt; if (:CrCnt = 1) then begin if (exists (Select ID from SaleCros where SaleKey = :DocID)) then begin Select DD.NNbr, DD.NDate from SaleCros SC, DgvDt DD where SC.SaleKey = :DocID and DD.ID = SC.DgvKey and Abs(:sSumma - SC.Summa) < 0.005 and Abs(DD.Summa - SC.Summa) < 0.005 into :NNBr, :NDate; end if (exists (Select ID from SaleDuCr where SaleKey = :DocID)) then begin Select DD.NNbr, DD.NDate from SaleDuCr SC, DgvDtU DD where SC.SaleKey = :DocID and DD.ID = SC.DgvKey and Abs(:sSumma - SC.Summa) < 0.005 and Abs(DD.Summa - SC.Summa) < 0.005 into :NNBr, :NDate; end end end NdsProc = :ProcNds; if (:Nds is null) then begin Nds = :Summa * :ProcNDS / (:ProcNDS + 100.00); end if (:kSumma <> 0.0) then begin Nds = :kNds; end suspend; end end end^ ALTER PROCEDURE BOOKSLDT_JOURNAL ( ID INTEGER) RETURNS ( S6 DOUBLE PRECISION, S7 DOUBLE PRECISION, S8 DOUBLE PRECISION, S9 DOUBLE PRECISION, S10 DOUBLE PRECISION, S11 DOUBLE PRECISION, S12 DOUBLE PRECISION, S13 DOUBLE PRECISION, S14 DOUBLE PRECISION, S15 DOUBLE PRECISION, S16 DOUBLE PRECISION, S17 DOUBLE PRECISION, S18 DOUBLE PRECISION, S19 DOUBLE PRECISION, S20 DOUBLE PRECISION, S21 DOUBLE PRECISION, S22 DOUBLE PRECISION, S23 DOUBLE PRECISION) AS declare variable Summa double precision; declare variable Nds double precision; declare variable kSumma double precision; declare variable kNds integer; declare variable SaleNds integer; declare variable KBN integer; declare variable SBN integer; declare variable SNN integer; begin s6 = 0.0; s7 = 0.0; s8 = 0.0; s9 = 0.0; s10 = 0.0; s11 = 0.0; s12 = 0.0; s13 = 0.0; s14 = 0.0; s15 = 0.0; s16 = 0.0; s17 = 0.0; s18 = 0.0; s19 = 0.0; s20 = 0.0; s21 = 0.0; s22 = 0.0; s23 = 0.0; select Summa, Nds, kSumma, kNds, SaleNds, KBN, SBN, SNN from BookSlDt where ID = :ID into :Summa, :Nds, :kSumma, :kNds, :SaleNds, :KBN, :SBN, :SNN; if (:Summa is Null) then Summa = 0.0; if (:Nds is Null) then Nds = 0.0; if (:kSumma is Null) then kSumma = 0.0; if (:kNds is Null) then kNds = 0; if (:SaleNds is Null) then SaleNds = 0; if (:KBN is Null) then KBN = 0; if (:SBN is Null) then SBN = 0; if (:SNN is Null) then SNN = 0; S6 = :Summa + :kSumma; if (:kSumma <> 0.0) then begin /* корректировка */ if (:KNDS = 0) then begin /* корректировка без НДС */ if (:KBN = 0) then S22 = :kSumma; if (:KBN = 1) then s23 = :kSumma; end if (:KNDS = 1) then begin /* корректировка с НДС */ S20 = :kSumma / 1.20; S21 = :kSumma / 6.00; end end if (:Summa <> 0.0) then begin if (:SNN = 0) then begin /* сумма не облагается НДС */ S7 = :Summa; if (:SBN = 3) then begin /* экспорт */ S14 = :Summa; end if (:SaleNDS = 1) then begin /* плательщик НДС */ if (:SBN = 0) then S8 = :Summa; if (:SBN = 1) then S9 = :Summa; if (:SBN = 2) then s10 = :Summa; end if (:SaleNDS = 0) then begin /* неплательщик НДС */ if (:SBN = 0) then S11 = :Summa; if (:SBN = 1) then S12 = :Summa; if (:SBN = 2) then s13 = :Summa; end end if (:SNN = 1) then begin /* сумма облагается НДС */ S15 = :Summa; if (:SaleNds = 1) then begin /* плательщик НДС */ S16 = :Summa / 1.20; S17 = :Summa / 6.00; end if (:SaleNds = 0) then begin /* неплательщик НДС */ S18 = :Summa / 1.20; S19 = :Summa / 6.00; end end end Suspend; end^ ALTER PROCEDURE BOOKSLDT_JOURNAL1 ( ID INTEGER) RETURNS ( RECALC INTEGER, S7 DOUBLE PRECISION, S8 DOUBLE PRECISION, S9 DOUBLE PRECISION, S10 DOUBLE PRECISION, S11 DOUBLE PRECISION, S12 DOUBLE PRECISION, S13 DOUBLE PRECISION) AS declare variable SUMMA double precision; declare variable NDS double precision; declare variable KSUMMA double precision; declare variable KNDS integer; declare variable SALENDS integer; declare variable KBN integer; declare variable SBN integer; declare variable SNN integer; declare variable NDSPROC double precision; begin s7 = 0.0; s8 = 0.0; s9 = 0.0; s10 = 0.0; s11 = 0.0; s12 = 0.0; s13 = 0.0; select Summa, Nds, kSumma, kNds, SaleNds, KBN, SBN, SNN, RECALC, NDSProc from BookSlDt where ID = :ID into :Summa, :Nds, :kSumma, :kNds, :SaleNds, :KBN, :SBN, :SNN, :RECALC, :NDSPROC; -- kNds = :Nds; if (:Summa is Null) then Summa = 0.0; if (:Nds is Null) then Nds = 0.0; if (:kSumma is Null) then kSumma = 0.0; if (:kNds is Null) then kNds = 0; if (:SaleNds is Null) then SaleNds = 0; if (:KBN is Null) then KBN = 0; if (:SBN is Null) then SBN = 0; if (:SNN is Null) then SNN = 0; s7 = :Summa; if (:SNN = 0) then begin -- не облагаемая НДС сумма if (:Sbn = 0) then S10 = :s7; -- со ставкой 0% -- дЛЯ СТАВКИ ндс 7 % if ((:Sbn = 0) and (NDSPROC=7)) then begin S9 = :NDS; S10 = :SUMMA - :NDS; end if (:Sbn = 1) then S11 = :s7; -- освобожд. от налогообложения if (:Sbn = 2) then S11 = :s7; -- не явл. объектом налогообл. if (:Sbn = 3) then S12 = :s7; -- на экспорт if (:Sbn = 4) then S13 = :s7; -- поставка услуг за границу тамож. территории Украины end if (:SNN = 1) then begin S8 = :S7 - :Nds; --:S7/6*5; S9 = :Nds; -- :S7/6; end if (:kSumma <> 0.0) then begin if (:KNDS = 1) then begin -- корректировка облагаемая НДС S7 = :kSumma; S8 = :kSumma - :Nds; S9 = :Nds; end if (:KNDS = 0) then begin -- корректировка не облагаемая НДС S7 = :kSumma; if (:KBN = 0) then S10 = :kSumma; -- дЛЯ СТАВКИ ндс 7 % if ((:KBN = 0) and (:NDSPROC=7)) then begin s8 = 0.0; s9 = :NDS; S10 = :kSumma - :NDS; end if (:KBN = 1) then S11 = :kSumma; end end Suspend; end^ ALTER PROCEDURE BOOKSLDTDAYS_NEWID RETURNS ( ID INTEGER) AS begin id = Gen_ID(booksldtdays_id,1); end^ ALTER PROCEDURE BOOKSLKT_GENACCNREC ( ID INTEGER) AS Declare variable NameID integer; Declare variable Summa double precision; declare variable AccnProvID integer; declare variable Nbr varchar(32); declare variable Comment varchar(255); Declare variable aDate Date; Declare variable OperID integer; Declare variable SumTyp integer; Declare variable OpID integer; Declare variable Oper integer; Declare variable Dt varchar(5); Declare variable Kt varchar(5); Declare variable aSumma double precision; Declare Variable ProcNds double precision; Declare variable Proc double precision; Declare variable Storno integer; Declare variable UserName varchar(20); Declare variable DtPrt integer; Declare variable DtObj integer; Declare variable KtPrt integer; Declare variable KtObj integer; Declare variable Dt1 integer; Declare variable Kt1 integer; declare variable kSumma double precision; declare variable OurOrgnID integer; declare variable BookDaysID integer; declare variable Nds double precision; declare variable NSumma double precision; declare variable kNbr varchar(32); begin ProcNds = 20.0; for select Summa, Nds, kSumma, NameID, Dat_, OperID, Nbr, BookDaysID, NSUMMA, kNbr from BookSlKt where ID = :ID and DAT_ is not Null and OperID is not Null into :Summa, :Nds, :kSumma, :NameID, :aDate, :OperID, :Nbr, :BookDaysID, :NSumma, :kNbr do begin select OurOrgnID from BookSlKtDays where ID = :BookDaysID into OurOrgnID; for Select ID, Oper, Dt, Kt, Comment, SumTyp, Proc, Storno, DtPrt, DtObj, KtPrt, KtObj from StorAccn where OperID = :OperID order by ID into :OpID, :Oper, :Dt, :Kt, :Comment, :SumTyp, :Proc, :Storno, :DtPrt, :DtObj, :KtPrt, :KtObj do begin if (:kSumma <> 0) then Nbr = :kNbr; aSumma = :Summa; -- Сумма с НДС if (:SumTyp = 0) then aSumma = :Summa; -- НДС if (:SumTyp = 1) then aSumma = :Nds; -- Сумма без НДС if (:SumTyp = 2) then aSumma = :Summa - :Nds; -- Сумма корректировки if (:SumTyp = 3) then aSumma = :kSumma; -- Сумма НДС не вкл. в нал. кредит if (:SumTyp = 4) then aSumma = :NSumma; dt1 = Null; kt1 = Null; Select a1 from AccnPlan where Accn = :Dt into :dt1; Select a1 from AccnPlan where Accn = :Kt into :kt1; if (:dt1 = 1) then dt1 = :NameID; else dt1 = Null; if (:kt1 = 1) then kt1 = :NameID; else kt1 = Null; if (:aSumma <> 0.0 and :aDate is not Null) then begin if (:Proc <> 0.0 and :Proc is not Null) then aSumma = :aSumma / 100.0 * :Proc; if (:Storno = 1) then aSumma = -:aSumma; AccnProvID = Gen_ID(AccnProv_ID, 1); insert into AccnProv (ID, OurOrgnID, DAT_, Summa, Document, Dt, Kt, Comment, UserName, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID, dt1, kt1) Values(:AccnProvID, :OurOrgnID, :aDate, :aSumma, :Nbr, :Dt, :Kt, :Comment, :UserName, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :OperID, :ID, :dt1, :kt1); Insert into BookSlKtAcCr(BookSlKtID, AccnProvID) Values(:ID, :AccnProvID); end end end end^ ALTER PROCEDURE BOOKSLKT_IMPORT ( ORGNID INTEGER, ADATE TIMESTAMP) RETURNS ( DOCTYP INTEGER, DOCID INTEGER, NBR VARCHAR(32), NAMEID INTEGER, SUMMA DOUBLE PRECISION, NDS DOUBLE PRECISION, NDSPROC DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, KNDS DOUBLE PRECISION, NNBR VARCHAR(32), NDATE TIMESTAMP, DATECALC TIMESTAMP, FORMSTR VARCHAR(255), CBNDS INTEGER) AS declare variable ProcNDS double precision; declare variable SumS1 double precision; declare variable SumS2 double precision; declare variable sSumma double precision; declare variable CrCnt integer; begin -- накладные (товар) for select Cast(0 as integer), DD.ID, DD.Nbr, DD.NameID, Sum(K.Source*K.Price), Sum(K.Source*K.Nds), DD.ProcNds, Cast(0.0 as Double precision), Cast(0.0 as Double precision), DD.NNBR, DD.NDATE, DD.DAT_, 'ПНЕ', DD.CalcNds from DgvKt DD, storlist S, GddKt K where DD.DAT_ is not Null and DD.DAT_ = :ADATE and DD.Typ in (0, 5) and S.ID = DD.Stor and S.OurOrgnID = :ORGNID and K.DgvKey=DD.ID Group by DD.ID, DD.Nbr, DD.NameID, DD.NNBR, DD.NDATE, DD.DAT_, DD.CalcNds, DD.ProcNds union -- акты (услуги) select Cast(1 as integer), DD.ID, DD.Nbr, DD.NameID, DD.Summa, Null, Cast(20.00 as double precision), Cast(0.0 as Double precision), Cast(0.0 as Double precision), DD.NNBR, DD.NDATE, DD.in_date, 'ПНЕ', DD.CalcNds from DgvKtU DD where DD.in_date is not Null and DD.in_Date = :ADATE and DD.OurOrgnID = :ORGNID union -- платежи select Cast(2 as integer), S.ID, S.Nbr, S.NameID, S.Summa, S.Nds, S.NdsProc, Cast(0.0 as Double precision), Cast(0.0 as Double precision), Cast(Null as varchar(20)), Cast(Null as TimeStamp), S.SaleDate, Cast(Null as Varchar(255)), S.CalcNds from SaleKt S left join AcOprLst A on A.ID = S.OperID where S.SaleDate is not Null and S.SaleDate = :ADATE and S.OurOrgnID = :OrgnID and A.ID is not Null and A.Blns = 1 union -- возвраты поставщику select Cast(3 as integer), DD.ID, Max(DD.NNbr), DD.NameID, Cast(0.0 as double precision), Cast(0.0 as double precision), Max(DD.ProcNDS), -Sum(D.Quant * K.TPrice), -Sum(D.Quant * K.TNds), Max(DD.KNNNBr), Max(DD.NDate), DD.OUT_DATE, 'РКЕ', 1 from DgvDt DD join StorList S on S.ID = dd.Stor and S.OurOrgnID = :OrgnID join GddDt D on D.DgvKey = DD.ID left join GddDt_SrcKtID(D.ID) KT on 0=0 join GddKt K on K.ID = KT.KTID join DgvKt KK on KK.ID = K.DgvKey where DD.Typ = 9 and DD.out_date is not Null and dd.out_date = :ADATE group by DD.ID, DD.Nbr, DD.NameID, DD.Out_Date union -- расходные кассовые ордера select Cast(4 as integer), S.ID, K.Nbr, K.OrgnID, -K.Summa, Null, Cast(20.00 as double precision), Cast(0.0 as Double precision), Cast(0.0 as Double precision), Cast(Null as varchar(20)), Cast(Null as TimeStamp), K.DAT_, 'ЧК', 1 from SaleKt s, kassdata k, kasslist l where L.OurOrgnID = :OrgnID and K.DAT_ is not Null and K.DAT_ = :ADATE and s.id = k.SaleKtKey and l.id=k.kassid and K.Summa < 0.0 into :DocTyp, :DocID, :Nbr, :NameID, :Summa, :Nds, :ProcNDS, :KSumma, :kNds, :NNbr, :NDate, :DateCalc, :FormStr, :CbNds do begin NdsProc = :ProcNDS; if (:kSumma <> 0) then begin Nds = :kNds; end if (:Nds is Null) then begin Nds = :Summa * :ProcNDS / (:ProcNDS + 100.00); end if (:DocTyp = 0) then begin -- накладная (товар) Select Sum(sc.summa) from salektcr sc, salekt s where sc.dgvkey = :DocID and s.id = sc.salekey and s.saledate is not null and s.saledate < :DATECALC into :SumS1; if (:SumS1 is Null) then SumS1 = 0.0; if (:Summa <> 0.0) then begin Nds = :Nds - (:Nds / :Summa * :SumS1); end Summa = :Summa - :SumS1; end if (:DocTyp = 1) then begin -- акт (услуги) Select Sum(sc.summa) from salekucr sc, salekt s where sc.dgvkey = :DocID and s.id = sc.salekey and s.saledate is not null and s.saledate < :DATECALC into :SumS2; if (:SumS2 is Null) then SumS2 = 0.0; if (:Summa <> 0.0) then begin Nds = :Nds - (:Nds / :Summa * :SumS2); end Summa = :Summa - :SumS2; end if (:DocTyp in (2, 4)) then begin -- платежный документ NNBr = Null; NDate = Null; Select Sum(Sc.Summa) from SaleKtCr SC, DgvKt DD where SC.SaleKey = :DocID and DD.ID = SC.DgvKey and (DD.DAT_ is not Null) and (dd.DAT_ <= :DATECALC) into :SumS1; Select Sum(Sc.Summa) from SaleKuCr SC, DgvKtU DD where SC.SaleKey = :DocID and DD.ID = SC.DgvKey and (DD.in_date is not Null) and (dd.in_date <= :DATECALC) into :SumS2; if (:SumS1 is Null) then SumS1 = 0.0; if (:SumS2 is Null) then SumS2 = 0.0; if (:Summa <> 0.0) then begin Nds = :Nds - (:Nds / :Summa * (:SumS1 + :SumS2)); end sSumma = :Summa; Summa = :Summa - (:SumS1 + :SumS2); end if (Abs(:Summa) > 0.005 or Abs(:KSumma) > 0.005) then begin if (:DocTyp in (2, 4) and Abs(:sSumma - Summa) < 0.005) then begin CrCnt = Null; select (Select count(*) from SaleKtCr where SaleKey = :DocID)+ (select count(*) from SaleKuCr where SaleKey = :DocID) from rdb$database into :CrCnt; if (:CrCnt = 1) then begin if (exists (Select ID from SaleKtCr where SaleKey = :DocID)) then begin Select DD.NNbr, DD.NDate from SaleKtCr SC, DgvKt DD where SC.SaleKey = :DocID and DD.ID = SC.DgvKey and Abs(:sSumma - SC.Summa) < 0.005 and Abs(DD.Summa - SC.Summa) < 0.005 into :NNBr, :NDate; end if (exists (Select ID from SaleKuCr where SaleKey = :DocID)) then begin Select DD.NNbr, DD.NDate from SaleKuCr SC, DgvKtU DD where SC.SaleKey = :DocID and DD.ID = SC.DgvKey and Abs(:sSumma - SC.Summa) < 0.005 and Abs(DD.Summa - SC.Summa) < 0.005 into :NNBr, :NDate; end end end -- KNds = :KSumma * :ProcNDS / (:ProcNDS + 100.00); suspend; end end end^ ALTER PROCEDURE BOOKSLKT_JOURNAL ( ID INTEGER) RETURNS ( S6 DOUBLE PRECISION, S7 DOUBLE PRECISION, S8 DOUBLE PRECISION, S9 DOUBLE PRECISION, S10 DOUBLE PRECISION, S11 DOUBLE PRECISION, S12 DOUBLE PRECISION, S13 DOUBLE PRECISION, S14 DOUBLE PRECISION, S15 DOUBLE PRECISION, S16 DOUBLE PRECISION, S17 DOUBLE PRECISION, S18 DOUBLE PRECISION, S19 DOUBLE PRECISION, S20 DOUBLE PRECISION, S21 DOUBLE PRECISION, S22 DOUBLE PRECISION, S23 DOUBLE PRECISION, S24 DOUBLE PRECISION, S25 DOUBLE PRECISION) AS declare variable Summa double precision; declare variable Nds double precision; declare variable NSumma double precision; declare variable KSumma double precision; declare variable KNds double precision; declare variable NNds integer; declare variable FNds integer; declare variable FFNds integer; begin s6 = 0.0; s7 = 0.0; s8 = 0.0; s9 = 0.0; s10 = 0.0; s11 = 0.0; s12 = 0.0; s13 = 0.0; s14 = 0.0; s15 = 0.0; s16 = 0.0; s17 = 0.0; s18 = 0.0; s19 = 0.0; s20 = 0.0; s21 = 0.0; s22 = 0.0; s23 = 0.0; s24 = 0.0; s25 = 0.0; select NNds, FNds, FFNds, Summa, Nds, NSumma, KSumma from BookSlKt where ID = :ID into :NNds, :FNds, :FFNds, :Summa, :Nds, :NSumma, :KSumma; if (:NNds is null) then NNds = 0; if (:FNds is null) then FNds = 0; if (:FFNds is null) then FFNds = 0; if (:Summa is null) then Summa = 0.0; if (:Nds is null) then Nds = 0.0; if (:NSumma is null) then NSumma = 0.0; if (:KSumma is null) then KSumma = 0.0; KNds = KSumma / 6.00; if (:FFNds = 11) then begin -- сумма погашенного налогового векселя S6 = Summa; end if (:FFNds = 12) then begin -- импорт товаров на которые оформлен налоговый вексель S7 = Summa - Nds; S8 = Nds; end if (:FFNds = 13) then begin -- работы полученные от нерезидента S9 = Summa - Nds; S10 = Nds; end if (:FFNds not in (11, 12, 13)) then begin S11 = (Summa - Nds); S12 = Nds; end if (:FNds=1 and :FFNds in (1, 2)) then begin S11 = Summa; S12 = 0.0; end /* корректировка */ S11 = S11 + (KSumma - KNds); S12 = S12 + KNds; if (:FNds = 0) then begin /* с правом включения в налоговый кредит */ if (:FFNds = 8) then S13 = Summa-Nds; -- на территории Украины if (:FFNds = 9) then S14 = Summa-Nds; -- импорт. с оплатой НДС при тамож. оформлении if (:FFNds = 10) then S15 = Summa-Nds; -- вексель погаш. в пред. отч. периоде S16 = :KSumma - :KNds; S17 = :Nds + :Knds; end if (:FNds = 1) then begin /* без права включения в налоговый кредит */ if (:FFNds = 0) then S18 = Summa-Nds; -- с НДС для необлагаемых налогом операций if (:FFNds = 1) then S19 = Summa; -- без НДС для налогооблагаемых операций if (:FFNds = 2) then S20 = Summa; -- без НДС для операций не облагаемых налогом if (:FFNds = 3) then S21 = Summa; -- НДС уплачен при таможенном оформлении if (:FFNds = 4) then S22 = Summa; -- НДС уплачен векселем if (:FFNds = 5) then S23 = Summa; -- освобождены от налогообложения if (:FFNds = 6) then S24 = Summa; -- На таможенной территории Украины if (:FFNds = 7) then S25 = Summa; -- Импортированные end if (:NSumma <> 0.0 and :FNds = 1 and :FFNds = 6) then begin s24 = NSumma; s13 = s11 - s24; s17 = s13 / 5.00; end suspend; end^ ALTER PROCEDURE BOOKSLKT_JOURNAL1 ( ID INTEGER) RETURNS ( RECALC INTEGER, NK1 INTEGER, S8 DOUBLE PRECISION, S9 DOUBLE PRECISION, S10 DOUBLE PRECISION, S11 DOUBLE PRECISION, S12 DOUBLE PRECISION, S13 DOUBLE PRECISION, S14 DOUBLE PRECISION, S15 DOUBLE PRECISION, S16 DOUBLE PRECISION) AS declare variable SUMMA double precision; declare variable NDS double precision; declare variable NSUMMA double precision; declare variable KSUMMA double precision; declare variable KNDS double precision; declare variable NNDS integer; declare variable FNDS integer; declare variable FFNDS integer; declare variable NEW_CHECK integer; declare variable CBNDS integer; begin s8 = 0.0; s9 = 0.0; s10 = 0.0; s11 = 0.0; s12 = 0.0; s13 = 0.0; s14 = 0.0; s15 = 0.0; s16 = 0.0; select NNds, FNds, FFNds, Summa, Nds, NSumma, KSumma, New_Check, cbNds, ReCalc, Nk1 from BookSlKt K where ID = :ID into :NNds, :FNds, :FFNds, :Summa, :Nds, :NSumma, :KSumma, :new_check, :cbNds, :ReCalc, :Nk1; if (:NNds is null) then NNds = 0; if (:FNds is null) then FNds = 0; if (:FFNds is null) then FFNds = 0; if (:Summa is null) then Summa = 0.0; if (:Nds is null) then Nds = 0.0; if (:NSumma is null) then NSumma = 0.0; if (:KSumma is null) then KSumma = 0.0; --KNds = KSumma / 6.00; KNds = :Nds; s8 = :Summa; if (:kSumma <> 0.0) then s8 = :kSumma; if (New_Check = 0) then begin -- у господарськой діяльності 20%, 0% if (:Nds <> 0.0) then begin if (:cbNds = 1) then s9 = :Summa-:Nds; else s9 = :Summa - :Nds; --:Nds * 5; end else begin s9 = :Summa; end s10 = :Nds; end if (:New_Check = 1) then begin -- звільнені, не є об'єктами if (:Nds <> 0.0) then begin if (:cbNds = 1) then s11 = :Summa-:Nds; else s11 = :Summa-:Nds; --:Nds * 5; end else begin s11 = :Summa; end s12 = :Nds; end if (:New_Check = 2) then begin -- не призначаються у госп. діяльності if (:Nds <> 0.0) then begin if (:cbNds = 1) then s13 = :Summa - :Nds; else s13 = :Summa - :Nds; -- :Nds * 5; end else begin s13 = :Summa; end s14 = :Nds; end if (:New_Check = 3) then begin -- для поставки послуг по пункту 6.5 статті 6 if (:Nds <> 0.0) then begin if (:cbNds = 1) then s15 = :Summa-:Nds; else s15 = :Summa-:Nds; --:Nds * 5; end else begin s15 = :Summa; end s16 = :Nds; end if (:ffNds=5 and :nSumma <> 0.0) then begin s11 = s11 + :nSumma * 5; s12 = s12 + :nSumma; s9 = s9 - :nSumma * 5; s10 = s10 - :nSumma; end if (:ffNds=6 and :nSumma <> 0.0) then begin s13 = s13 + :nSumma * 5; s14 = s14 + :nSumma; s9 = s9 - :nSumma * 5; s10 = s10 - :nSumma; end if (:ffNds=7 and :nSumma <> 0.0) then begin s15 = s15 + :nSumma * 5; s16 = s16 + :nSumma; s9 = s9 - :nSumma * 5; s10 = s10 - :nSumma; end if (:kSumma <> 0) then begin s9 = :kSumma - :kNds; -- :kSumma / 6 * 5; s10 = :kNds; -- :kSumma / 6; end suspend; end^ ALTER PROCEDURE BOOKSLKT_NEWID RETURNS ( ID INTEGER) AS begin id=gen_id(BookSlKt_ID, 1); end^ ALTER PROCEDURE BOOKSLKTDAYS_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(BookSlKtDays_ID,1); end^ ALTER PROCEDURE CHECK_DB_VERSION AS declare variable DBVer Integer; begin Select VAL from SysConst where OurOrgnID = (select ID from Orgn where OurOrgn = 1) and Name = 'DataBaseVersion' into :DBVer; if (:DBVer is Null or :DBVer < 630 ) then begin Execute Procedure Check_Db_Version_630; Update SysConst Set Val = '630' where Name = 'DataBaseVersion'; DBVer = 630; end if (:DBVer is Null or :DBVer < 631 ) then begin Execute Procedure Check_Db_Version_631; Update SysConst Set Val = '631' where Name = 'DataBaseVersion'; end if (:DBVer is Null or :DBVer < 632 ) then begin Execute Procedure Check_Db_Version_632; Update SysConst Set Val = '632' where Name = 'DataBaseVersion'; end if (:DBVer is Null or :DBVer < 633 ) then begin Execute Procedure Check_Db_Version_633; Update SysConst Set Val = '633' where Name = 'DataBaseVersion'; end if (:DBVer is Null or :DBVer < 634 ) then begin Execute Procedure Check_Db_Version_634; Update SysConst Set Val = '634' where Name = 'DataBaseVersion'; end if (:DBVer is Null or :DBVer < 635 ) then begin Execute Procedure Check_Db_Version_635; Update SysConst Set Val = '635' where Name = 'DataBaseVersion'; end end^ ALTER PROCEDURE CHECK_DB_VERSION_630 AS Declare variable ID Integer; Declare variable ObjName Varchar(255); declare variable ObjID integer; begin ID = Null; Select ID, ObjName from Obj_Type where ID = 200 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(200, 'Заказы клиентов (склад)'); ID = Null; Select ID, ObjName from Obj_Type where ID = 201 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(201, 'Товар в заказах клиентов'); for Select ID from StorZakazDt where ObjID is Null into :ID do begin ObjID = Gen_ID(Obj_Class_ID, 1); insert into Obj_Class(ID, Obj_Typ) Values(:ObjID, 200); Update StorZakazDt Set ObjID = :ObjID where ID = :ID; end for Select ID from StorZDtGds where ObjID is Null into :ID do begin ObjID = Gen_ID(Obj_Class_ID, 1); insert into Obj_Class(ID, Obj_Typ) Values(:ObjID, 201); Update StorZDtGds Set ObjID = :ObjID where ID = :ID; end end^ ALTER PROCEDURE CHECK_DB_VERSION_631 AS Declare variable ID Integer; Declare variable ObjName Varchar(255); begin ID = Null; Select ID, ObjName from Obj_Type where ID = 192 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(192, 'Акты на услуги (кредиторы)'); ID = Null; Select ID, ObjName from Obj_Type where ID = 193 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(193, 'Акты на услуги (дебиторы)'); ID = Null; Select ID, ObjName from Obj_Type where ID = 194 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(194, 'Приходные кассовые ордера'); ID = Null; Select ID, ObjName from Obj_Type where ID = 195 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(195, 'Расходные кассовые ордера'); ID = Null; Select ID, ObjName from Obj_Type where ID = 196 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(196, 'Оплаты (кредиторы)'); ID = Null; Select ID, ObjName from Obj_Type where ID = 197 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(197, 'Оплаты (дебиторы)'); ID = Null; Select ID, ObjName from Obj_Type where ID = 198 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(198, 'Приходная накладная'); ID = Null; Select ID, ObjName from Obj_Type where ID = 199 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(199, 'Расходная накладная'); end^ ALTER PROCEDURE CHECK_DB_VERSION_632 AS Declare variable ID Integer; Declare variable ObjName Varchar(255); begin ID = Null; Select ID, ObjName from Obj_Type where ID = 100 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(100, 'Issue Tracker Item'); end^ ALTER PROCEDURE CHECK_DB_VERSION_633 AS Declare variable ID Integer; Declare variable ObjName Varchar(255); begin ID = Null; Select ID, ObjName from Obj_Type where ID = 101 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(101, 'Задача (Документооборот)'); end^ ALTER PROCEDURE CHECK_DB_VERSION_634 AS Declare variable ID Integer; Declare variable ObjName Varchar(255); begin ID = Null; Select ID, ObjName from Obj_Type where ID = 102 into :ID, :ObjName; if (:ID is Null) then Insert Into Obj_Type(ID, ObjName) Values(102, 'Организация (контрагент)'); end^ ALTER PROCEDURE CHECK_DB_VERSION_635 AS begin Update OrgnBankAccn Set cTyp = 0 where cTyp is Null; Update Vksl Set SumDt = 0.0 where SumDt is Null; Update Vksl Set SumKt = 0.0 where SumKt is Null; Update Vksl Set SSummaDt = 0.0 where SSummaDt is Null; Update Vksl Set SSummaKt = 0.0 where SSummaKt is Null; Update Vksl Set Curs = 0.0 where Curs is Null; Update Vksl Set CursDt = 0.0 where CursDt is Null; Update Vksl Set CursKt = 0.0 where CursKt is Null; Update Vksl Set cSumma = 0.0 where cSumma is Null; Update Vksl Set cSumDt = 0.0 where cSumDt is Null; Update Vksl Set cSumKt = 0.0 where cSumKt is Null; Update Vksl Set scSummaDt = 0.0 where scSummaDt is Null; Update Vksl Set scSummaKt = 0.0 where scSummaKt is Null; end^ ALTER PROCEDURE CSDTKT_NEWQUARTER ( OURORGNID INTEGER, EDATE TIMESTAMP, USERNAME VARCHAR(20)) AS declare variable CSID integer; declare variable CurrTyp integer; declare variable NameID integer; declare variable CSDTKTHBID integer; declare variable OrgnInfoID integer; declare variable bSumma double precision; declare variable xDate Date; declare variable bDate Date; declare variable cDate Date; begin /* проверяем наличие записей по текущему кварталу */ Select Min(ID) from CSDTKT where OurOrgnID=:OurOrgnID and DAT_=:EDATE into :CSID; if (:CSID is not Null) then exit; /* квартал есть */ select xDate from F_Quarter_Beg(:eDate) into :xDate; select xDate from F_Quarter_End(:xDate-1) into :xDate; /* проверяем есть ли что-то за предыдущий квартал */ select min(ID) from CSDTKT where OurOrgnID=:OurOrgnID and DAT_=:xDate into :CSID; if (:CSID is not Null) then begin /* предудущий квартал есть */ for Select CurrTyp, NameID, CSDTKTHBID, OrgnInfoID, ECSUMMA from CSDTKT where OurOrgnID=:OurOrgnID and DAT_=:xDate and ECSUMMA <> 0.0 into :CurrTyp, :NameID, :CSDTKTHBID, :OrgnInfoID, :bSumma do begin insert into CSDTKT(ID, OurOrgnID, DAT_, CurrTyp, NameID, CSDTKTHBID, OrgnInfoID, BCSUMMA, ECSUMMA, UserName) Values(Gen_ID(CSDTKT_ID,1), :OurOrgnID, :EDATE, :CurrTyp, :NameID, :CSDTKTHBID, :OrgnInfoID, :BSUMMA, :BSUMMA, :UserName); end end else begin /* непосредственно предыдущего квартала нет */ /* есть ли информация по более ранним кварталам - ищем последний из них */ Select Max(DAT_) from CSDTKT where OurOrgnID=:OurOrgnID and DAT_ < :EDATE into :bDate; if (:bDate is not Null) then begin select xDate from F_Quarter_End(:bDate+1) into :cDate; while (:cDate <= :eDate) do begin for Select CurrTyp, NameID, CSDTKTHBID, OrgnInfoID, ECSUMMA from CSDTKT where OurOrgnID=:OurOrgnID and DAT_=:bDate and ECSUMMA <> 0.0 into :CurrTyp, :NameID, :CSDTKTHBID, :OrgnInfoID, :bSumma do begin insert into CSDTKT(ID, OurOrgnID, DAT_, CurrTyp, NameID, CSDTKTHBID, OrgnInfoID, BCSUMMA, ECSUMMA, UserName) Values(Gen_ID(CSDTKT_ID,1), :OurOrgnID, :cDate, :CurrTyp, :NameID, :CSDTKTHBID, :ORGNINFOID, :BSUMMA, :BSUMMA, :UserName); end bDate = :cDate; select xDate from F_Quarter_End(:cDate+1) into :cDate; end end end end^ ALTER PROCEDURE CTLG_ENT_THM_NAME ( ENTITY_ID INTEGER) RETURNS ( THEME_ID INTEGER, THEME_NAME VARCHAR(250)) AS begin for select theme_id from ctlglink where entity_id = :entity_id into :theme_id do begin select name from ctlg_theme_name(:theme_id) into :theme_name; suspend; end end^ ALTER PROCEDURE CTLG_THEME_CNT ( OWNER INTEGER) RETURNS ( THEME_ID INTEGER, THEME_NAME VARCHAR(150), THEME_OWNER INTEGER, CHILD_COUNT INTEGER) AS begin if (:owner is null) then for select theme_id, theme_name, theme_owner from ctlgtheme where theme_owner is null order by theme_name into :theme_id, :theme_name, :theme_owner do begin select count(*) from ctlgtheme where theme_owner = :theme_id into :child_count; suspend; end else for select theme_id, theme_name, theme_owner from ctlgtheme where theme_owner = :owner order by theme_name into :theme_id, :theme_name, :theme_owner do begin select count(*) from ctlgtheme where theme_owner = :theme_id into :child_count; suspend; end end^ ALTER PROCEDURE CTLG_THEME_NAME ( THEME_ID INTEGER) RETURNS ( NAME VARCHAR(250)) AS DECLARE VARIABLE OWNER INTEGER; DECLARE VARIABLE S VARCHAR(250) CHARACTER SET WIN1251; begin name = ''; while (not (theme_id is null)) do begin select theme_owner, theme_name from ctlgtheme where theme_id = :theme_id into :theme_id, :s; if (name = '') then name = s; else name = s || '/' || name; end suspend; end^ ALTER PROCEDURE CURRENCY_GETVALUE ( TYP INTEGER, DAT_ TIMESTAMP) RETURNS ( VAL DOUBLE PRECISION) AS declare variable aDat TimeStamp; begin aDat = null; val = null; select max(dat_) from currdata where typ=:Typ and dat_ <= :dat_ into :adat; select NBANK from currdata where typ=:Typ and dat_=:aDat into :val; if (:val is null or :val = 0) then val = 1; suspend; end^ ALTER PROCEDURE CURRSTORDAYS_GENACCNREC ( ID INTEGER) AS declare variable DayID integer; declare variable OperID integer; declare variable Summ Double precision; declare variable AccnID Integer; declare variable aSumma double precision; declare variable aDate Date; declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable Accn varchar(5); declare variable FinRes integer; declare variable Storno Integer; declare variable AccnKey integer; declare variable UserName Varchar(20); declare variable CurrTyp integer; declare variable Comment varchar(255); declare variable DtPrt integer; declare variable DtObj integer; declare variable KtPrt integer; declare variable KtObj integer; declare variable Oper Integer; declare variable dt6 integer; declare variable kt6 integer; declare variable d6 integer; declare variable k6 integer; declare variable OurOrgnID integer; begin Select ID, OperID, Summ, AccnID, Dat_, UserName from CurrStorDays where ID=:ID into :DayID, :OperID, :Summ, :AccnID, :aDate, :UserName; if (:DayID is Null) then exit; if (:OperID is Null or :OperID=0) then exit; Select Oper from AcOprLst where ID=:OperID into :Oper; if (:Oper is Null) then exit; Select CurrTyp, OrgnID from OrgnBankAccn where ID=:AccnID into :CurrTyp, :OurOrgnID; for Select Dt, Kt, Storno, FinRes, Comment, DtPrt, DtObj, KtPrt, KtObj from StorAccn where OperID = :OperID Order By ID into :Dt, :Kt, :Storno, :FinRes, :Comment,:DtPrt, :DtObj, :KtPrt, :KtObj do begin aSumma = :Summ; select a6 from AccnPlan where Accn = :Dt into :d6; select a6 from AccnPlan where Accn = :Kt into :k6; if (:Storno = 1) then aSumma = -:aSumma; if (:FinRes=0 and aSumma < 0.0) then aSumma = 0.0; if (:FinRes=2 and aSumma < 0.0) then begin aSumma = -aSumma; Accn=Dt; Dt=Kt; Kt=Accn; end if (:d6=1) then Dt6 = :AccnID; if (:k6=1) then Kt6 = :AccnID; if (:aSumma <> 0.0) then begin AccnKey = Gen_ID(AccnProv_ID,1); Insert into AccnProv(ID, OurOrgnID, Dat_, Summa, Dt, Kt, Comment, UserName, Dt6, Kt6, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID, CurrTyp, Curs, cSumma) Values(:AccnKey, :OurOrgnID, :aDate, :aSumma, :Dt, :Kt, :Comment, :UserName, :Dt6, :Kt6, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :OperID, :DayID,:CurrTyp, 0.0, 0.0); insert into CurrStorDaysAcCr(DayID, AccnID) Values(:DayID, :AccnKey); end end end^ ALTER PROCEDURE CURTYP_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(currtyp_id, 1); end^ ALTER PROCEDURE DGV_SUM AS declare variable id integer; declare variable summa double precision; declare variable summ double precision; declare variable dat_ date; declare variable nbr Dmn_Nbr; begin delete from dgvsum; for select id, dat_, nbr, summa from dgvdt into :id, :dat_, :nbr, :summa do begin insert into dgvsum (id, dat_, nbr, summa, summ) values(:id, :dat_,:nbr,:summa, (select sum(quant*price) from gdddt where dgvkey=:id)); end delete from dgvsum where (summa-summ) < 0.01 and (summa-summ) > -0.01; end^ ALTER PROCEDURE DGVDT_CONCAT ( ID1 INTEGER, ID2 INTEGER) AS Declare Variable DAT1 Date; Declare Variable OUTDATE1 Date; Declare Variable TYP1 Integer; Declare Variable Stor1 integer; Declare Variable StorID1 integer; Declare Variable DAT2 Date; Declare Variable OUTDATE2 Date; Declare Variable TYP2 Integer; Declare Variable Stor2 integer; Declare Variable StorID2 integer; Declare Variable IDK1 Integer; Declare Variable IDK2 Integer; begin Dat1 = Null; Dat2 = Null; Select DAT_, OUT_DATE, TYP, Stor, StorID,DgvKey from DgvDt WHERE ID=:ID1 into :DAT1, :OutDate1, :Typ1, :Stor1, :StorID1, :IDK1; Select DAT_, OUT_DATE, TYP, Stor, StorID,DgvKey from DgvDt WHERE ID=:ID2 into :DAT2, :OutDate2, :Typ2, :Stor2, :StorID2, :IDK2; Select ID from DgvKt where ID=:IDK1 into :IDK1; Select ID from DgvKt where ID=:IDK2 into :IDK2; if (:Dat1 is Null or :Dat2 is Null or :Typ1<>1 or :Typ2<>1 or :IDK1 is Null or :IDK2 is Null) then Exit; if (:Dat1<>:Dat2 or :OutDate1<>:OutDate2 or :Typ1<>:Typ2 or :Stor1<>:Stor2 or :StorID1<>:StorID2) then Exit; Update GddKt Set DgvKey=:IDK1 where DgvKey=:IDK2; Delete From DgvKt where ID=:IDK2; Update DgvKt Set Summa=Summa where ID=:IDK1; Update GddDt Set DgvKey=:ID1 where DgvKey=:ID2; Delete From DgvDt where ID=:ID2; Update DgvDt Set Summa=Summa where ID=:ID1; end^ ALTER PROCEDURE DGVDT_CONCAT0 ( ID1 INTEGER, ID2 INTEGER) AS Declare Variable DAT1 Date; Declare Variable OUTDATE1 Date; Declare Variable TYP1 Integer; Declare Variable Stor1 integer; Declare Variable DAT2 Date; Declare Variable OUTDATE2 Date; Declare Variable TYP2 Integer; Declare Variable Stor2 integer; declare variable SCID Integer; begin Dat1 = Null; Dat2 = Null; Select DAT_, OUT_DATE, TYP, Stor from DgvDt WHERE ID=:ID1 into :DAT1, :OutDate1, :Typ1, :Stor1; Select DAT_, OUT_DATE, TYP, Stor from DgvDt WHERE ID=:ID2 into :DAT2, :OutDate2, :Typ2, :Stor2; if (:Dat1 is Null or :Dat2 is Null or :Typ1<>0 or :Typ2<>0) then Exit; if (:Dat1<>:Dat2 or :OutDate1<>:OutDate2 or :Typ1<>:Typ2 or :Stor1<>:Stor2) then Exit; Update SaleCros Set DgvKey=:ID1 where DgvKey=:ID2; Update GddDt Set DgvKey=:ID1 where DgvKey=:ID2; Delete From DgvDt where ID=:ID2; Update DgvDt Set Summa=Summa where ID=:ID1; end^ ALTER PROCEDURE DGVDT_CRECALC ( ID INTEGER) RETURNS ( DGVID INTEGER) AS begin for select DGVID from DgvDt_CRecalc1(:ID) into :DGVID do begin end suspend; end^ ALTER PROCEDURE DGVDT_CRECALC1 ( ID INTEGER) RETURNS ( DGVID INTEGER, GDDDTID INTEGER, SALEID INTEGER, SALECROSID INTEGER, TPRICE DOUBLE PRECISION, PRICE DOUBLE PRECISION, NEWPRICE DOUBLE PRECISION, DCURS DOUBLE PRECISION, SCURS DOUBLE PRECISION, SCSUMMA DOUBLE PRECISION, DCSUMMA2 DOUBLE PRECISION, KS DOUBLE PRECISION, KD DOUBLE PRECISION) AS declare variable dcSumma double precision; -- сумма накладной в валюте -- scSumma - общая сумма ранних предоплат -- dcSumma2 - сумма доли товара позже даты оплаты (пересчитывается по курсу накладной) -- Ks - доля предоплат (в общей сумме наклодной) declare variable dat_ TimeStamp; declare variable Out_Date TimeStamp; declare variable dcDate TimeStamp; declare variable dCurrTyp integer; declare variable sCurrTyp integer; declare variable dTyp integer; declare variable scSumm double precision; declare variable Quant double precision; declare variable dcSumm double precision; declare variable S double precision; declare variable HasSale integer; declare variable scDate TimeStamp; -- сумма услуг declare variable ucSumma double precision; -- общая сумма накладной (товар + услуги) declare variable acSumma double precision; begin DGVID = NULL; SELECT ID, DAT_, OUT_DATE, CurrTyp, Typ FROM DGVDT WHERE ID=:ID INTO :DGVID, :Dat_, :Out_Date, :dCurrTyp, :dTyp; if (:DGVID IS NULL) then suspend; if (:dTyp != 10 or :dCurrTyp is Null) then exit; if (:Out_Date is Null) then dcDate = :Dat_; else dcDate = :Out_Date; dcSumma = 0.0; select val from Currency_GetValue(:dCurrTyp, :dcDate) into :dCurs; -- сумма товара в накладной SELECT CoalEsce(SUM(TPRICE*QUANT),0.0) FROM GDDDT WHERE DGVKEY=:ID INTO :DCSUMMA; -- сумма услуг в накладной select CoalEsce(Sum(TPrice*Quant),0.0) from GddDtDDU where DgvKey=:ID into :ucSumma; acSumma = :dcSumma + :ucSumma; scSumma = 0.0; select CoalEsce(sum(cr.cSumma), 0.0) from SaleCros cr JOIN Sale S ON S.ID = cr.SaleKey where cr.DgvKey = :ID and S.DAT_ < :dcDate into :scSumma; -- сумма ранних предоплат dcSumma2 = :dcSumma-:scSumma; HasSale = Null; select min(s.ID) -- есть ли ранние оплаты from salecros sc left join sale s on s.id=sc.salekey where SC.dgvkey = :ID and s.dat_ < :dcDate into :HasSale; for select ID, TPrice, Price, Quant from GddDt where DgvKey=:ID into :GddDtID, :TPrice, :Price, :Quant do begin if (:HasSale is not Null) then begin -- есть ранние оплаты NewPrice = 0.0; Kd = 1.0; for select cr.cSumma, S.DAT_, CR.ID, S.ID, S.Curs from SaleCros CR join Sale S on S.ID = CR.SaleKey AND s.DAT_ < :dcDate where CR.DgvKey = :ID into :scSumm, :scDate, :SaleCrosID, :SaleID, :sCurs do begin -- select val from Currency_GetValue(:dCurrTyp, :scDate) into :sCurs; Ks = 0.0; if (:dcSumma <> 0.0) then Ks = :scSumm / :dcSumma; -- доля предоплат Kd = :Kd - :Ks; NewPrice = NewPrice + (:TPrice * Ks * :sCurs); end NewPrice = NewPrice + (:TPrice * :Kd * :dCurs); update gdddt set Price = :NewPrice where ID = :GddDtID and Price != :NewPrice; suspend; end else begin -- нет ранних оплат NewPrice = :TPrice * :dCurs; update gdddt set Price=:NewPrice where ID=:GddDtID and Price != :NewPrice; suspend; end end for select ID, TPrice, Price, Quant from GddDtDDU where DgvKey=:ID into :GddDtID, :TPrice, :Price, :Quant do begin if (:HasSale is not Null) then begin -- есть ранние оплаты NewPrice = 0.0; Kd = 1.0; for select cr.cSumma, S.DAT_, CR.ID, S.ID, S.Curs from SaleCros CR join Sale S on S.ID = CR.SaleKey AND s.DAT_ < :dcDate where CR.DgvKey = :ID into :scSumm, :scDate, :SaleCrosID, :SaleID, :sCurs do begin -- select val from Currency_GetValue(:dCurrTyp, :scDate) into :sCurs; Ks = 0.0; if (:ucSumma <> 0.0) then Ks = :scSumm / :ucSumma; -- доля предоплат Kd = :Kd - :Ks; NewPrice = NewPrice + (:TPrice * Ks * :sCurs); end NewPrice = NewPrice + (:TPrice * :Kd * :dCurs); update gdddtDDU set Price = :NewPrice where ID = :GddDtID and Price != :NewPrice; suspend; end else begin -- нет ранних оплат NewPrice = :TPrice * :dCurs; update gdddtDDU set Price=:NewPrice where ID=:GddDtID and Price != :NewPrice; suspend; end end Update DgvDt set Summa=Summa, No_LastEdit=1 WHERE ID=:ID; end^ ALTER PROCEDURE DGVDT_DELACCNREC ( ID INTEGER) AS begin delete from dgdtaccn where dgvkey=:id; end^ ALTER PROCEDURE DGVDT_ECRSUMMA ( ID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS declare variable Price double precision; declare variable Quant double precision; declare variable SkidkaTyp integer; declare variable SkidkaProc integer; declare variable SkidkaSum double precision; begin select SkidkaTyp, SkidkaProc from DgvDt where ID = :ID into :SkidkaTyp, :SkidkaProc; if (:SkidkaTyp <> 0) then SkidkaProc = 0.0; Summa = 0.0; for select Price, Quant from GddDt where DgvKey = :ID into :Price, :Quant do begin Quant = Cast(Quant * 1000.00 as integer) / 1000.00; SkidkaSum = 0.0; Price = Price - (Price * SkidkaProc / (100.00 + SkidkaProc)); Price = Cast(Price * 100.00 as integer) / 100.00; SkidkaSum = Price / 100.00 * SkidkaProc * Quant; SkidkaSum = Cast(SkidkaSum * 100.00 as integer) / 100.00; Summa = Summa + Cast((Price * Quant) * 100.00 as integer) / 100.00 + SkidkaSum; end suspend; end^ ALTER PROCEDURE DGVDT_GENACCN AS declare variable id integer; declare variable OperID integer; begin for select ID, OperID from dgvdt into :ID, :OperID do begin execute procedure dgvdt_delaccnrec :ID; if (:OperID is not Null) then execute procedure dgvdt_genaccnrec :ID; end end^ ALTER PROCEDURE DGVDT_GENACCNREC ( ID INTEGER) AS declare variable Typ integer; declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable OpID integer; /* аналитика по организациям */ declare variable d1 integer; declare variable k1 integer; declare variable SumTyp integer; Declare Variable DateTyp integer; declare variable OperID integer; Declare Variable DtA integer; Declare Variable KtA integer; declare variable AccnProvID Integer; begin for select Typ, OperID from dgvdt where (ID=:ID) and (OperID is not Null) into :Typ, :OperID do begin for select ID, Dt, Kt, SumTyp, AccnDate, DtA, KtA from storaccn where OperID=:OperID into :OpID, :Dt, :Kt, :SumTyp, :DateTyp, :DtA, :KtA do begin if (:Typ=9 and :SumTyp in (11,12,13)) then /* возврат товара - услуги, включаемые в себестоимость */ execute Procedure DgvDt_GenAccnRecKtU(:ID, :OpID); else if (:Typ=10 and :SumTyp=24) then execute procedure DgvDt_GenAccnRecKrb(:ID, :OpID); else if (:DateTyp=0) then begin /* по дате выдачи */ Select A1 from AccnPlan where Accn = :Dt into :D1; Select A1 from AccnPlan where Accn = :Kt into :K1; if ((:DtA=2 and :D1=1) or (:KtA=2 and :K1=1)) then begin /* по поставщикам */ Execute Procedure DgvDt_GenAccnRecInp(:ID, :OpID); end else begin execute procedure DgvDt_GenAccnRecSummary (:ID, :OpID); end end else begin /* по первому/последнему событию, по оплате */ for select AccnProvID from DgvDt_GenAccnRecSale (:ID, :OpID) into :AccnProvID do begin end end end end end^ ALTER PROCEDURE DGVDT_GENACCNRECINP ( ID INTEGER, OPID INTEGER) AS Declare Variable aDate Date; Declare Variable OutDate Date; Declare variable aSumma double precision; Declare Variable Dt Varchar(5); Declare Variable Kt Varchar(5); Declare Variable DtA integer; Declare Variable KtA integer; Declare Variable DateTyp integer; Declare Variable SumTyp integer; Declare Variable Oper Integer; Declare Variable Storno integer; Declare Variable Proc Double Precision; Declare Variable FinRes integer; Declare Variable AccnKey integer; Declare Variable Nbr Dmn_Nbr; Declare Variable Comment varchar(255); Declare Variable DtPrt integer; Declare Variable DtObj integer; Declare Variable KtPrt integer; Declare Variable KtObj integer; Declare Variable Dt1 integer; Declare Variable Dt4 integer; Declare Variable Kt1 integer; Declare Variable Kt4 integer; Declare Variable D1 integer; Declare Variable D4 integer; Declare Variable K1 integer; Declare Variable K4 integer; Declare Variable Dt8 integer; Declare Variable Dt9 integer; Declare Variable Kt8 integer; Declare Variable Kt9 integer; Declare Variable D8 integer; Declare Variable D9 integer; Declare Variable K8 integer; Declare Variable K9 integer; Declare Variable VL1 integer; Declare Variable VL2 integer; Declare Variable SummaK double precision; Declare Variable SummaD double precision; Declare Variable NdsK double precision; Declare Variable NdsD double precision; /* поставщик */ Declare Variable NameID_K integer; /* покупатель */ Declare Variable NameID_D integer; /* исходный склад */ Declare Variable StorID0 integer; /* склад-отправитель */ Declare Variable StorID1 integer; /* склад-получатель */ Declare Variable StorID2 integer; Declare Variable UserName Varchar(20); begin for Select DD.Out_Date, DD.Nbr, DD.Comment, DD.NameID, DD.UserName, DD.Stor, A.oper, A.AccnDate, A.SumTyp, A.Dt, A.Kt, A.Storno, A.Proc, A.FinRes, A.DTA, A.KTA, A.DtPrt, A.DtObj, A.KtPrt, A.KtObj, DD.VL1, DD.VL2 from DgvDt DD, StorAccn A where DD.ID=:ID and A.ID=:OpID into :OutDate, :Nbr, :Comment, :NameID_D, :UserName, :StorID2, :Oper, :DateTyp, :SumTyp, :Dt, :Kt, :Storno, :Proc, :FinRes, :DTA, :KTA, :DtPrt, :DtObj, :KtPrt, :KtObj, :VL1, :VL2 do begin aSumma = 0.0; aDate = Null; dt1 = null; dt4 = null; kt1 = null; kt4 = null; Select A1, A4, a8, a9 from AccnPlan where Accn = :Dt into :D1, :D4, :D8, :D9; Select A1, A4, a8, a9 from AccnPlan where Accn = :Kt into :K1, :K4, :K8, :K9; for Select KK.NameID, KK.Stor, KK1.Stor, Sum(K.Price * D.Quant), Sum(K.Nds*D.Quant), Sum(D.Price*D.Quant), Sum(D.Nds*D.Quant) from GddDt D Left Join GddKt K1 on K1.ID = D.GddKey Left Join DgvKt KK1 on KK1.ID=K1.DgvKey Left Join gdddt_srcktid (D.ID) S on 0=0 Left Join GddKt K on K.ID=S.KtID Left Join DgvKt KK on KK.ID=K.DgvKey where D.DgvKey = :ID Group by KK.NameID, KK.Stor, KK1.Stor into :NameID_K, :StorID0, :StorID1, :SummaK, :NdsK, :SummaD, :NdsD do begin if (:SumTyp=0) then begin /* по входным ценам с НДС */ aSumma = :SummaK; end if (:SumTyp=1) then begin /* входной НДС */ aSumma = :NdsK; end if (:SumTyp=2) then begin /* НДС реализации */ aSumma = :NdsD; end if (:SumTyp=5) then begin /* сумма реализации */ aSumma = :SummaD; end if (:SumTyp=6) then begin /* по входным ценам без НДС */ aSumma = :SummaK-:NdsK; end if (:SumTyp=9) then begin /* сумма реализации без НДС */ aSumma = :SummaD-:NdsD; end if (:SumTyp = 17) then begin /* торговая наценка */ aSumma = :SummaD-(:SummaK-:NdsK); end if (:D1 = 1) then begin if (:DTA = 2) then Dt1 = :NameID_K; else Dt1 = :NameID_D; end if (:K1 = 1) then begin if (:KTA = 2) then Kt1 = :NameID_K; else Kt1 = :NameID_D; end if (:D4 = 1) then Dt4 = :StorID2; if (:K4 = 1) then Kt4 = :StorID2; if (:d8 is null) then dt8 = null; else dt8 = :VL1; if (:d9 is null) then dt9 = null; else dt9 = :VL2; if (:k8 is null) then kt8 = null; else kt8 = :VL1; if (:k9 is null) then kt9 = null; else kt9 = :VL2; if (:DateTyp = 0) then aDate = :OutDate; if (:Storno = 1) then aSumma = -:aSumma; if (:Proc is not Null and :Proc <> 0.0) then aSumma = :aSumma / 100.0 * :Proc; if (:aDate is not Null and :aSumma <> 0.0) then begin AccnKey = Gen_ID(AccnProv_ID, 1); insert Into AccnProv(ID, Document, Dat_, Summa, Comment, Oper, OperID, DocID, Dt, Kt, DtPrt, DtObj, KtPrt, KtObj, UserName, Dt1, Dt4, Kt1, Kt4, dt8, dt9, kt8, kt9) Values(:AccnKey, :Nbr, :aDate, :aSumma, :Comment, :Oper, :OpID, :ID, :Dt, :Kt, :DtPrt, :DtObj, :KtPrt, :KtObj, :UserName, :Dt1, :Dt4, :Kt1, :Kt4, :dt8, :dt9, :kt8, :kt9); insert Into DgDtAccn(DgvKey, AccnKey) Values(:ID, :AccnKey); end end end end^ ALTER PROCEDURE DGVDT_GENACCNRECKRB ( ID INTEGER, OPID INTEGER) AS declare variable Typ integer; declare variable SumTyp integer; declare variable DateTyp integer; declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable Summa double precision; declare variable aDate TimeStamp; declare variable AccnProvID integer; declare variable FinRes integer; declare variable Nbr Dmn_Nbr; declare variable Comment Varchar(255); declare variable UserName varchar(20); declare variable OurOrgnID integer; declare variable Accn varchar(5); declare variable Storno integer; declare variable Stor Integer; declare variable StorID integer; declare variable d1 integer; declare variable d3 integer; declare variable d4 integer; declare variable k1 integer; declare variable k3 integer; declare variable k4 integer; Declare Variable d5 Integer; Declare Variable k5 Integer; declare variable d8 integer; declare variable k8 integer; declare variable d9 integer; declare variable k9 integer; declare variable dt1 integer; declare variable dt3 integer; declare variable dt4 integer; declare variable kt1 integer; declare variable kt3 integer; declare variable kt4 integer; Declare Variable dt5 Integer; Declare Variable kt5 Integer; declare variable dt8 integer; declare variable dt9 integer; Declare Variable kt8 Integer; Declare Variable kt9 Integer; declare variable NameID integer; declare variable PrsnID integer; declare variable VL1 integer; declare variable VL2 integer; declare variable PodrID integer; declare variable DtObj integer; declare variable DtPrt integer; declare variable KtObj integer; declare variable KtPrt integer; declare variable Oper integer; declare variable OperID integer; begin select Typ, Nbr, Comment, UserName, Stor, StorID, NameID, PrsnID, VL1, VL2, PodrID from DgvDt where ID = :ID into :Typ, :Nbr, :Comment, :UserName, :Stor, :StorID, :NameID, :PrsnID, :VL1, :VL2, :PodrID; if (:Typ <> 10) then exit; select OurOrgnID from StorList where ID = :Stor into :OurOrgnID; select Oper, OperID, SumTyp, AccnDate, Dt, Kt, FinRes, Storno, DtPrt, DtObj, KtPrt, KtObj from StorAccn where ID = :OpID into :Oper, :OperID, :SumTyp, :DateTyp, :Dt, :Kt, :FinRes, :Storno, :DtPrt, :DtObj, :KtPrt, :KtObj; for Select kDate, kDelta from DgvDt_KrbSelect(:ID) into :aDate, :Summa do begin if (:Storno = 1) then Summa = -:Summa; if (:finRes = 0) then begin -- при отриц. сумме - обнулить if (:Summa < 0.0) then Summa = 0.0; end if (:FinRes = 2) then begin -- при отриц. сумме - поменять корреспонденцию if (:Summa < 0.0) then begin Summa = -:Summa; Accn = :Dt; Dt = :Kt; Kt = :Accn; end end if (:Summa <> 0.0) then begin select coalesce(a1, 0), coalesce(a3, 0), coalesce(a4, 0), coalesce(a5, 0), a8, a9 from accnplan where accn=:dt into :d1, :d3, :d4, :d5, :d8, :d9; select coalesce(a1, 0), coalesce(a3, 0), coalesce(a4, 0), coalesce(a5, 0), a8, a9 from accnplan where accn=:kt into :k1, :k3, :k4, :k5, :k8, :k9; dt1 = Null; kt1 = Null; dt3 = Null; kt3 = Null; dt4 = Null; kt4 = Null; dt5 = Null; kt5 = Null; dt8 = Null; kt8 = Null; dt9 = Null; kt9 = Null; if (:d1 <> 0) then dt1 = :NameID; if (:k1 <> 0) then kt1 = :NameID; if (:d3 <> 0) then dt3 = :PrsnID; if (:k3 <> 0) then kt3 = :PrsnID; if (:d4 <> 0) then begin if (:Typ=1 or :Typ=4) then dt4 = :StorID; else dt4 = :Stor; end if (:k4 <> 0) then begin kt4 = :Stor; end if (:d5 <> 0) then dt5 = :PodrID; if (:k5 <> 0) then kt5 = :PodrID; if (:d8 is not Null) then dt8 = VL1; if (:d9 is not Null) then dt9 = VL2; if (:k8 is not Null) then kt8 = VL1; if (:k9 is not Null) then kt9 = VL2; AccnProvID = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, OurOrgnID, Dat_, Document, Comment, UserName, Dt, Kt, Summa, dt1, kt1, dt3, kt3, dt4, kt4, dt5, kt5, dt8, kt8, dt9, kt9, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID) values(:AccnProvID, :OurOrgnID, :aDate, :Nbr, :Comment, :UserName, :Dt, :Kt, :Summa, :dt1, :kt1, :dt3, :kt3, :dt4, :kt4, :dt5, :kt5, :dt8, :kt8, :dt9, :kt9, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :OperID, :ID); insert into DgDtAccn(id, dgvkey, accnkey) values(Gen_ID(DgDtAccn_ID, 1), :ID, :AccnProvID); end end end^ ALTER PROCEDURE DGVDT_GENACCNRECKTU ( ID INTEGER, OPID INTEGER) AS Declare Variable DID integer; Declare Variable DT Varchar(5); Declare Variable KT Varchar(5); Declare Variable SumTyp Integer; Declare Variable DateTyp Integer; Declare Variable DtPrt integer; Declare Variable KtPrt integer; Declare Variable DtObj integer; Declare Variable KtObj integer; Declare Variable aSumma Double Precision; Declare Variable aID integer; Declare Variable Storno integer; Declare Variable FinRes integer; Declare Variable Proc double precision; Declare Variable aDate Date; declare Variable Out_Date Date; declare Variable SaleDate Date; Declare Variable Nbr Dmn_Nbr; Declare Variable UserName Varchar(20); declare variable USSum double precision; /* общая сумма услуг */ Declare variable USNds double precision; /* общий НДС по услугам */ declare variable USum double precision; /* сумма услуг контрагента */ Declare variable UNds double precision; /* сумма НДС контрагента */ declare variable URSum double precision; /* сумма услуг в возвр. товаре */ Declare variable URNds double precision; /* сумма НДС по услугам в возвр. товаре */ Declare Variable D1 integer; declare Variable K1 integer; Declare Variable D4 integer; declare Variable K4 integer; declare variable d8 integer; declare variable d9 integer; declare variable k8 integer; declare variable k9 integer; declare variable dt8 integer; declare variable dt9 integer; declare variable kt8 integer; declare variable kt9 integer; Declare Variable Dt1 integer; declare Variable Kt1 integer; Declare Variable Dt4 integer; declare Variable Kt4 integer; Declare Variable VL1 integer; declare Variable VL2 integer; Declare Variable NameID integer; Declare Variable OrgnID integer; Declare Variable Oper Integer; Declare Variable OperID integer; Declare Variable Stor Integer; begin for select DT, KT, DtPrt, DtObj, KtPrt, KtObj, Storno, FinRes, Proc, SumTyp, AccnDate, Oper, OperID from StorAccn where ID=:OpID into :Dt, :Kt, :DtPrt, :DtObj, :KtPrt, :KtObj, :Storno, :FinRes, :Proc, :SumTyp, :DateTyp, :Oper, :OperID do begin select a1,a4, a8, a9 from AccnPlan where Accn=:Dt into :D1, :D4, :d8, :d9; select a1,a4, a8, a9 from AccnPlan where Accn=:Kt into :K1, :K4, :k8, :k9; if (:D1 = 0) then D1 = Null; if (:K1 = 0) then K1 = Null; if (:D4 = 0) then D4 = Null; if (:K4 = 0) then K4 = Null; for Select ID, Out_Date, SaleDate, Nbr, UserName, NameID, VL1, VL2 from DgvDt where ID=:ID into :DID, :Out_Date, :SaleDate, :Nbr, :UserName, :NameID, :VL1, :VL2 do begin select Sum(KU.price), Sum(KU.Nds), KK.Stor from DgvDT DD, DgvKt KK, GddKtDDU KU where DD.ID=:ID and KK.ID=DD.DgvKey and KU.dgvkey=KK.ID Group by KK.Stor into :USSum, :USNds, :Stor; if (:USSum is Null) then USSum = 0.0; if (:USNds is Null) then USNds = 0.0; for Select KU.OrgnID, Sum(KU.Price), Sum(KU.Nds) from DgvDt DD, DgvKt KK, GddKtDDU KU where DD.ID=:ID and KK.ID = DD.DgvKey and KU.DgvKey=KK.ID Group By KU.OrgnID into :OrgnID, :USum, :UNds do begin if (:OrgnID is Null) then OrgnID=:NameID; Select Sum(D.Quant*(K.Price-K.TPrice)), Sum(D.Quant*(K.Nds-K.TNds)) from GddDt D, GddKt K where D.DgvKey=:ID and K.ID=D.GddKey into :URSum, :URNds; if (:URSum is Null) then URSum = 0.0; if (:URNds is Null) then URNds = 0.0; if (:SumTyp=11) then begin /* Сумма с НДС */ if (USSum <> 0.0) then aSumma = :URSum/:USSum*:USum; end if (:SumTyp=12) then begin /* НДС */ if (USNds <> 0.0) then aSumma = :URNds/:USNds*:UNds; end if (:SumTyp=13) then begin /* Сумма без НДС */ if ((USSum-USNds) <> 0.0) then aSumma = (:URSum-:URNds)/(:USSum-:USNds)*(:USum-:UNds); end /* aSumma = USSum;*/ if (:DateTyp=0) then aDate = :Out_Date; if (:DateTyp=1) then aDate = :SaleDate; if (:aSumma is Null) then aSumma = 0.0; if (:Storno=1) then aSumma = -:aSumma; if (:Finres=0) then if (:aSumma < 0.0) then aSumma = 0.0; if (:Proc <> 0.0 and :Proc is not Null) then aSumma = :aSumma / 100.0 * :Proc; if (:aSumma <> 0.0 and :aDate is not Null) then begin if (:D1=1) then Dt1 = :OrgnID; else Dt1 = Null; if (:K1=1) then Kt1 = :OrgnID; else Kt1 = Null; if (:D4=1) then Dt4 = :Stor; else Dt4 = Null; if (:K4=1) then Kt4 = :Stor; else Kt4 = Null; if (:d8 is Null) then dt8 = Null; else dt8 = :VL1; if (:d9 is Null) then dt9 = Null; else dt9 = :VL2; if (:k8 is Null) then kt8 = Null; else kt8 = :VL1; if (:k9 is Null) then kt9 = Null; else kt9 = :VL2; aID = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, DAT_, Document, Summa, UserName, Dt, Kt, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID, Dt1, Kt1, Dt4, Kt4, dt8, dt9, kt8, kt9) Values(:aID, :aDate, :Nbr, :aSumma, :UserName, :Dt, :Kt, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :OperID, :ID, :Dt1, :Kt1, :Dt4, :Kt4, :dt8, :dt9, :kt8, :kt9); insert into DgDtAccn(ID, DgvKey, AccnKey) values(Gen_ID(DgDtAccn_ID,1), :ID, :aID); end end end end end^ ALTER PROCEDURE DGVDT_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) RETURNS ( ACCNPROVID INTEGER, DCURRTYP INTEGER, SCURRTYP INTEGER, SDATE TIMESTAMP, SCURS DOUBLE PRECISION, SCSUMMA DOUBLE PRECISION, DCSUMMA DOUBLE PRECISION, DDATE TIMESTAMP, DCURS DOUBLE PRECISION, SUMMA DOUBLE PRECISION, CURS DOUBLE PRECISION) AS declare variable dat_ timestamp; declare variable saledate timestamp; declare variable out_date timestamp; declare variable realdate timestamp; Declare Variable SaleSumma Double Precision; declare variable dt varchar(5); declare variable kt varchar(5); declare variable Accn varchar(5); declare variable dtp varchar(5); declare variable ktp varchar(5); declare variable datetyp integer; --declare variable accnkey integer; declare variable OrgnID Integer; declare variable dt1 integer; declare variable kt1 integer; declare variable dt3 integer; declare variable kt3 integer; declare variable dt4 integer; declare variable kt4 integer; declare variable comment varchar(255); Declare Variable pComment Varchar(255); declare variable dComment varchar(255); declare variable sComment varchar(255); declare variable salenbr varchar(20); declare variable dgvnbr varchar(20); declare variable nbr Dmn_Nbr; declare variable storno integer; Declare Variable UserName VarChar(20); Declare Variable sUserName VarChar(20); Declare Variable dUserName VarChar(20); Declare Variable ProcNDS Double Precision; Declare Variable SumTyp integer; Declare Variable NdsTyp integer; Declare Variable Summ Double Precision; -- общая сумма накладной Declare Variable DgvSumma Double Precision; -- сумма услуг declare variable uDgvSumma double precision; Declare Variable Oper integer; Declare Variable OperID integer; Declare Variable DtPrt Integer; Declare Variable DtObj Integer; Declare Variable KtPrt Integer; Declare Variable KtObj Integer; Declare Variable Proc Double Precision; declare variable cSumma Double Precision; -- сумма проводки в валюте -- declare variable scSumma Double Precision; -- сумма оплаты (в счет) в валюте declare variable scSumm Double Precision; -- курсовая разница -- declare variable dcSumma double precision; -- сумма накладной в валюте declare variable FinRes integer; declare variable ix Integer; declare variable dTyp Integer; declare variable Stor Integer; declare variable OurOrgnID integer; declare variable dt8 integer; declare variable dt9 integer; declare variable kt8 integer; declare variable kt9 integer; declare variable VL1 integer; declare variable VL2 integer; declare variable PrsnID integer; declare variable SSTyp integer; begin for select s.dat_, sc.summa,s.nbr,s.comment,s.UserName, sc.csumma, sc.summ, s.currtyp from salecros sc, sale s where sc.dgvkey=:ID and s.id=sc.salekey into :saledate, :SaleSumma, :SaleNbr, :sComment,:sUserName, :scSumma, :scSumm, :sCurrTyp do begin sDate = :SaleDate; for select dat_, out_date, realdate, NameID, PrsnID, Nbr, ProcNDS, Comment, NdsTyp, OperID, UserName, CURS, TYP, CurrTyp, Stor, VL1, VL2 from DgvDt where ID=:ID into :dat_, :out_date, :realdate, :OrgnID, :PrsnID, :DgvNbr, :ProcNDS, :dComment, :NdsTyp, :OperID, :dUserName, :dCurs, :dTyp, :dCurrTyp, :Stor, :VL1, :VL2 do begin Select Typ, OurOrgnID from StorList where ID=:Stor into :SSTyp, :OurOrgnID; if (:Out_Date is Null) then dDate = :Dat_; else dDate = :Out_Date; Curs = :dCurs; Select CoalEsce(Sum(Price*Quant), 0.0), CoalEsce(Sum(TPrice*Quant), 0.0) from GddDt where DgvKey=:ID into :DgvSumma, :dcSumma; -- if(:dTyp=10) then SaleSumma=:cSumma*:dCurs; for select dt, kt, accndate, storno, SumTyp, Oper, DtPrt, DtObj, KtPrt, KtObj, Proc, Comment, FinRes from storaccn where id=:opid into :dt, :kt, :datetyp, :Storno, :SumTyp, :Oper, :DtPrt, :DtObj, :KtPrt, :KtObj, :Proc, :pComment, :FinRes do begin dat_ = Null; Nbr = Null; Comment = Null; if (:DateTyp = 0) then begin dat_=:out_date; nbr=:DgvNbr; Comment=:dComment; UserName=:dUserName; end if (:DateTyp = 1) then begin dat_=:saledate; Nbr=:SaleNbr; Comment=:dComment; UserName=:sUserName; end if (:DateTyp = 2) then begin if (:saledate is not null and :out_date is not null) then begin if (:saledate < :out_date) then begin dat_=:saledate; Nbr=:SaleNbr; Comment=:dComment; UserName=:sUserName; end else begin dat_=:out_date; Nbr=:DgvNbr; Comment=:dComment; UserName=:dUserName; end end end if (:DateTyp = 3) then begin if (:saledate is not null and :out_date is not null) then begin if (:saledate > :out_date) then begin dat_=:saledate; Nbr=:SaleNbr; Comment=:dComment; UserName=:sUserName; end else begin dat_=:out_date; Nbr=:DgvNbr; Comment=:dComment; UserName=:dUserName; end end end if(:Comment='' or :Comment is Null) then Comment=:pComment; dtp = null; ktp = null; select a1, a3, a4, a8, a9 from accnplan where accn=:dt into :dt1, :dt3, :dt4, :dt8, :dt9; select a1, a3, a4, a8, a9 from accnplan where accn=:kt into :kt1, :kt3, :kt4, :kt8, :kt9; if (:dt1 = 1) then dt1 = :OrgnID; else dt1 = Null; if (:kt1 = 1) then kt1 = :OrgnID; else kt1 = Null; if (:dt3 = 1) then dt3 = :PrsnID; else dt3 = Null; if (:kt3 = 1) then kt3 = :PrsnID; else kt3 = Null; if (:dt4 = 1) then dt4 = :Stor; else dt4 = Null; if (:kt4 = 1) then kt4 = :Stor; else kt4 = Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; Summa = 0.0; if(:SumTyp=0) then -- Входная цена с НДС for select SUM(k.price*d.quant) from gdddt d, gddkt k where d.dgvkey=:ID and k.id=d.gddkey into :Summa do Summa=:summa; if(:SumTyp=1) then -- Входной НДС for select SUM(k.nds*d.quant) from gdddt d, gddkt k where d.dgvkey=:ID and k.id=d.gddkey into :Summa do Summa=:summa; if(:SumTyp=2) then begin -- НДС реализации if (:NdsTyp=1) then begin for select SUM(price*quant) from gdddt where dgvkey=:ID into :summa do summa=:summa*:ProcNDS/(:ProcNDS+100.00); end end if(:SumTyp=3) then begin if(:NdsTyp=0) then begin Summa=0; for select (d.price-k.price)*d.quant from gdddt d, gddkt k where d.dgvkey=:ID and k.id=d.gddkey into :summ do if (:summ>0) then Summa=:Summa+:Summ*:ProcNDS/(:ProcNDS+100.00); end if(:NdsTyp=1) then begin for select SUM(price*quant) from gdddt where dgvkey=:ID into :summa do summa = :summa*:ProcNDS/(:ProcNDS+100.00); end end if(:SumTyp=4) then begin for Select (d.price-k.price)*d.quant from gdddt d, gddkt k where d.dgvkey=:ID and k.ID=d.GddKey into :summ do if(:summ > 0) then Summa=:Summa+Summ; end -- сумма реализации if(:SumTyp=5) then begin if (:dTyp = 10) then begin if (:sDate < :dDate) then begin select val from Currency_GetValue(:sCurrTyp, :sDate) into :Curs; end else begin select val from Currency_GetValue(:dCurrTyp, :dDate) into :Curs; end Summa = :scSumma * :Curs; end else begin Select CoalEsce(SUM(price*quant),0.0) from gdddt where DgvKey=:ID into :Summa; end end -- suspend; if(:SumTyp=6) then begin if(:SSTyp in (1, 4)) then begin select Sum(d.quant*(k.price-k.nds)) from gdddt d left join GddDt_SrcKtID(D.ID) KT on 0=0 left join gddkt k on k.id = KT.KTID where d.dgvkey=:ID into :Summa; if (:Summa is Null) then Summa = 0.0; end else begin for select SUM((k.price-k.nds)*d.quant) from gdddt d, gddkt k where d.dgvkey=:ID and k.id=d.gddkey into :Summa do Summa=:summa; end end if(:SumTyp = 7) then begin for Select (k.price-d.price)*d.quant from gdddt d, gddkt k where d.dgvkey=:ID and k.ID=d.GddKey into :summ do if(:summ > 0) then Summa=:Summa+:Summ; end if(:SumTyp = 8) then begin Summa = :Summa; end if(:SumTyp = 9) then begin Summa = :Summa; end if (:SumTyp = 10) then begin if(:NdsTyp=1) then begin Summa = 0; for Select price*quant from gdddt where DgvKey=:ID into :Summ do Summa=:Summa+(:Summ-(:Summ*:ProcNDS/(:ProcNDS+100.00))); end end -- услуги select Sum(Price * Quant) from GddDtdDU where DgvKey=:ID into :uDgvSumma; if (:uDgvSumma is Null) then uDgvSumma = 0.0; -- сумма с НДС - услуги if(:SumTyp=11) then select Sum(Price * Quant) from GddDtdDU where DgvKey=:ID into :Summa; -- сумма НДС - услуги if(:SumTyp=12) then select Sum(Nds * Quant) from GddDtdDU where DgvKey=:ID into :Summa; -- сумма без НДС - услуги if(:SumTyp=13) then begin if (:dTyp=9) then begin /* возврат товара поставщику */ /* услуги, включаемые в себестоимость товара */ /* Select Sum(D.Quant*((K.Price-K.Nds)-(K.Tprice-K.TNds))) from GddDt D, GddKt K where D.DgvKey=:ID and K.ID=D.GddKey into :Summa; */ Summa = 0.0; end else begin select Sum((Price-Nds)*Quant) from GddDtdDU where DgvKey=:ID into :Summa; end end if(:SumTyp = 14) then Summa=:scSumm; if(:Storno is not null and :Storno <> 0) then Summa = -:Summa; if(:FinRes = 0 and :Summa < 0.0) then Summa = 0.0; if(:FinRes = 2 and :Summa < 0.0) then begin Summa = -:Summa; Accn=:Dt; Dt=:Kt; Kt=:Accn; ix=:dt1; dt1=:kt1; kt1=:ix; ix=:dtPrt; dtPrt=:ktPrt; ktPrt=:ix; ix=:dtObj; dtObj=:ktObj; ktObj=:ix; end if (:dat_ is not null and :summa <> 0.0) then begin if (SumTyp in (11, 12, 13)) then begin if (:uDgvSumma <> 0.0) then Summa = :Summa * :SaleSumma / :uDgvSumma; end else if(:SumTyp not in(14,5)) then begin if (:DgvSumma <> 0.0) then Summa = :Summa * :SaleSumma / :DgvSumma; end if (:Proc <> 0.0 and :Proc is not Null) then Summa = :Summa / 100.00 * :Proc; if (:Summa <> 0.0) then begin AccnProvID = Gen_ID(AccnProv_ID, 1); cSumma = 0.0; if (:Curs <> 0) then cSumma = :Summa / :Curs; insert into AccnProv (ID, OurOrgnID, Dat_, Dt, Kt, Summa, Dt1, Kt1, dt3, kt3, dt4, kt4, Document, Comment, Oper, OperID, DocID, DtPrt, DtObj, KtPrt, KtObj, UserName, CurrTyp, Curs, cSumma, dt8, dt9, kt8, kt9) values(:AccnProvID, :OurOrgnID, :Dat_, :Dt, :Kt, :Summa, :Dt1, :Kt1, :dt3, :kt3, :dt4, :kt4, :Nbr, :Comment, :Oper, :OperID, :ID, :DtPrt, :DtObj, :KtPrt, :KtObj, :UserName, :dCurrTyp, :Curs, :cSumma, :dt8, :dt9, :kt8, :kt9); insert into DgDtAccn(ID, DgvKey, AccnKey) values(Gen_ID(DgDtAccn_ID, 1), :ID, :AccnProvID); end suspend; end end end end end^ ALTER PROCEDURE DGVDT_GENACCNRECSUMMARY ( ID INTEGER, OPID INTEGER) AS declare variable dat_ TimeStamp; declare variable nbr Dmn_Nbr; declare variable nameid integer; declare variable prsnid integer; declare variable stor integer; Declare Variable StorID integer; declare variable typ integer; declare variable oper integer; declare variable dt varchar(5); declare variable kt varchar(5); declare variable username varchar(20); declare variable out_date date; declare variable realdate date; declare variable saledate date; declare variable procnds Double Precision; declare variable sumtyp integer; declare variable storno integer; declare variable accndate integer; declare variable Comment varchar(255); declare variable dComment varchar(255); declare variable pComment varchar(255); declare variable summa double precision; declare variable summ double precision; declare variable salesumma double precision; declare variable dgvsumma double precision; declare variable rec_id integer; declare variable d1 integer; declare variable d3 integer; declare variable d4 integer; declare variable k1 integer; declare variable k3 integer; declare variable k4 integer; Declare Variable d5 Integer; Declare Variable k5 Integer; declare variable d_1 integer; declare variable d_3 integer; declare variable d_4 integer; declare variable k_1 integer; declare variable k_3 integer; declare variable k_4 integer; Declare Variable d_5 Integer; Declare Variable k_5 Integer; declare variable dtprt integer; declare variable dtobj integer; declare variable ktprt integer; declare variable ktobj integer; Declare Variable OperID integer; Declare Variable Proc Double Precision; Declare Variable PodrID Integer; Declare Variable SSTyp Integer; /* src StorTyp */ declare variable SDTyp Integer; /* dst StorTyp */ declare variable CurrTyp Integer; declare variable CSumma Double Precision; declare variable CSumm double precision; declare variable Curs Double Precision; declare variable OurOrgnID integer; declare variable d8 integer; declare variable d9 integer; declare variable k8 integer; declare variable k9 integer; declare variable dt8 integer; declare variable dt9 integer; declare variable kt8 integer; declare variable kt9 integer; declare variable VL1 integer; declare variable VL2 integer; declare variable RealTyp integer; begin for select dat_,nbr,nameid,stor,storid,typ,username,out_date,realdate, VL1, VL2, procnds,realtyp,prsnid,saledate,salesumma,summa,OperID,PodrID,Comment, CurrTyp, Curs from dgvdt where id=:id into :dat_,:nbr,:nameid,:stor,:StorID,:typ,:username,:out_date,:realdate, :VL1, :VL2, :procnds,:realtyp,:prsnid,:saledate,:salesumma,:dgvsumma,:OperID,:PodrID, :dComment, :CurrTyp, :Curs do begin select typ, OurOrgnID from storlist where ID=:Stor into :SSTyp, :OurOrgnID; select typ from storlist where ID=:StorID into :SDTyp; for select dt,kt,sumtyp,comment,storno, accndate,dtprt,dtobj,ktprt,ktobj,Oper,Proc from storaccn where id = :OpID into :dt,:kt,:sumtyp,:pComment,:storno, :accndate,:dtprt,:dtobj,:ktprt,:ktobj,:Oper,:Proc do begin Comment=:dComment; if(:Comment='' or :Comment is null) then Comment=:pComment; select a1, a3, a4, a5, a8, a9 from accnplan where accn=:dt into :d1, :d3, :d4, :d5, :d8, :d9; select a1, a3, a4, a5, a8, a9 from accnplan where accn=:kt into :k1, :k3, :k4, :k5, :k8, :k9; if (:accndate=0) then dat_=:out_date; if (:accndate=1) then dat_=:realdate; if (:accndate=2) then dat_=:saledate; if (:accndate=3) then begin if(:out_date is null) then dat_=:saledate; if(:saledate is null) then dat_=:out_date; if(:saledate is not null and :out_date is not null) then if(:saledate < :out_date) then dat_=:saledate; else dat_=:out_date; end if (:accndate=4) then begin if (:saledate is not null and :out_date is not null) then if(:saledate > :out_date) then dat_=:saledate; else dat_=:out_date; end if(dat_ is null) then exit; d_1 = Null; k_1 = Null; d_3 = Null; k_3 = Null; d_4 = Null; k_4 = Null; d_5 = Null; k_5 = Null; dt8 = Null; kt8 = Null; dt9 = Null; kt9 = Null; if(:d1<>0)then d_1 = :nameid; if(:d3<>0)then d_3 = :prsnid; if(:k1<>0)then k_1 = :nameid; if(:k3<>0)then k_3 = :prsnid; if(:d4 <> 0 and :d4 is not null) then begin if (:typ=1 or :Typ=4) then d_4=:StorID; else d_4=:stor; end if(:k4 <> 0 and :k4 is not null) then k_4=:stor; if(:d5 <> 0 and :d5 is not Null) then d_5=PodrID; if(:k5 <> 0 and :k5 is not Null) then k_5=PodrID; if (:d8 is not Null) then dt8 = VL1; if (:d9 is not Null) then dt9 = VL2; if (:k8 is not Null) then kt8 = VL1; if (:k9 is not Null) then kt9 = VL2; summa = 0.0; CSumma = 0.0; if (:SumTyp = 0) then -- входная цена с НДС for select sum(d.quant*k.price) from gdddt d,gddkt k where d.dgvkey=:id and k.id=d.gddkey into :summa do summa=:summa; if (:sumtyp=1) then -- входной НДС for select sum(d.quant*k.nds) from gdddt d,gddkt k where d.dgvkey=:id and k.id=d.gddkey into :summa do summa=:summa; if (:sumtyp=2) then begin-- НДС реализации Summa = 0.0; select sum(quant*nds) from gdddt where dgvkey=:id into :summa; end if (:sumtyp=3) then begin -- НДС с торговой надбавки summa = 0.0; for select (d.price-k.price)/(100.0+:procnds)*:procnds*d.quant from gdddt d, gddkt k where d.dgvkey=:id and k.id=d.gddkey into :summ do begin if(:summ>0.0) then summa = :summa+:summ; end end -- Торговая надбавка if (:SumTyp = 4) then begin summa = 0.0; if (:SSTyp=1) then begin /* rozn */ for select d.quant*(d.price-k.price) from gdddt d,gddkt k where d.dgvkey=:id and k.id=d.gddkey into :summ do if (:summ > 0.0) then summa=:summa+:summ; end else begin for select d.quant*(d.price-k.price) from gdddt d,gddkt k where d.dgvkey=:id and k.id=d.gddkey into :summ do if (:summ > 0.0) then summa=:summa+:summ; end end CSumm = 0.0; -- Сумма реализации if (:SumTyp = 5) then begin Summa = 0.0; select coalesce(sum(quant*price), 0.0), coalesce(sum(TPrice*Quant), 0.0) from gdddt where dgvkey=:id into :Summa, :CSumm; end if (:SumTyp = 6) then /* вх. цена без НДС */ if(:SSTyp in (1, 4)) then begin select Sum(d.quant*(k.price-k.nds)) from gdddt d left join GddDt_SrcKtID(D.ID) KT on 0=0 left join gddkt k on k.id = KT.KTID where d.dgvkey=:ID into :Summa; if (:Summa is Null) then Summa = 0.0; end else begin for select sum(d.quant*(k.price-k.nds)) from gdddt d,gddkt k where d.dgvkey=:id and k.id=d.gddkey into :summa do summa=:summa; end if (:sumtyp=7) then begin /* Убытки реализации */ summa = 0.0; for select (k.price-d.price)*d.quant from gdddt d, gddkt k where d.dgvkey=:id and d.gddkey=k.id into :summ do begin if (:summ<0.0) then summ=0.0; summa = :summa+:summ; end end if(:sumtyp=8) then summa=:salesumma; if(:sumtyp=9) then summa=:dgvsumma-:salesumma; if(:sumtyp=10) then summa=:dgvsumma- (:dgvsumma*:procnds/(:procnds+100.00)); -- сумма с НДС - услуги if(:SumTyp=11) then select Sum(Price*Quant) from GddDtdDU where DgvKey=:ID into :Summa; -- сумма НДС - услуги if(:SumTyp=12) then select Sum(Nds*Quant) from GddDtdDU where DgvKey=:ID into :Summa; -- сумма без НДС - услуги if(:SumTyp=13) then begin if (:Typ=9) then begin /* возврат товара поставщику */ /* услуги, включаемые в себестоимость товара */ /* Select Sum(D.Quant*((K.Price-K.Nds)-(K.Tprice-K.TNds))) from GddDt D, GddKt K where D.DgvKey=:ID and K.ID=D.GddKey into :Summa; */ Summa = 0.0; end else begin select Sum((Price-Nds)*Quant) from GddDtdDU where DgvKey=:ID into :Summa; end end if (:SumTyp=17) then begin /* Торговая наценка: RealPrice - (InpPrice-InpNds) */ if ((:Typ=1 and :SSTyp=0 and :SDTyp=1) or (:Typ=0 and :SSTyp=1)) then Select Sum(D.Quant * (D.Price-(K.KPrice-K.KNds))) from GddDt D, GddKt K where D.DgvKey = :ID and K.Id=D.GddKey into :Summa; else if (:Typ=1 and :SSTyp=1 and :SDTyp=0) then Select Sum(D.Quant * (K.Price-(K.KPrice-K.KNds))) from GddDt D, GddKt K where D.DgvKey = :ID and K.Id=D.GddKey into :Summa; else Select Sum(D.Quant * (D.Price-(K.Price-K.Nds))) from GddDt D, GddKt K where D.DgvKey = :ID and K.Id=D.GddKey into :Summa; end if(:Summa is null) then Summa = 0.0; if (:storno <> 0) then Summa = -:Summa; if (:summa <> 0.0) then begin Rec_ID = Gen_ID(AccnProv_ID, 1); cSumma = 0.0; if (:Typ = 10) then begin CSumma = :CSumm; if (:CSumm <> 0.0) then Curs = :Summa / :CSumm; end if(:Proc is not null and :Proc <> 0.0) then begin Summa = :Summa / 100.00 * :Proc; CSumma = :CSumma / 100.00 * :Proc; end insert into accnprov(ID, OurOrgnID,dat_,dt,kt,dt1,kt1,dt3,kt3,dt4,kt4,dt5,kt5, dt8, dt9, kt8, kt9, dtprt,dtobj,ktprt,ktobj,Oper,OperID,DocID, summa,comment,document, username,CurrTyp, Curs, CSumma) values (:Rec_ID, :OurOrgnID,:dat_,:dt,:kt,:d_1,:k_1,:d_3,:k_3,:d_4,:k_4,:d_5,:k_5, :dt8, :dt9, :kt8, :kt9, :dtprt,:dtobj,:ktprt,:ktobj,:Oper,:OperID,:ID, :summa,:comment,:nbr,:username, :CurrTyp, :Curs, :CSumma); insert into dgdtaccn (id, dgvkey, accnkey) values(Gen_ID(dgdtaccn_id, 1), :ID, :Rec_ID); end end end end^ ALTER PROCEDURE DGVDT_GENDGVKT ( ID INTEGER, STOR INTEGER, ADATE TIMESTAMP) RETURNS ( DGVKEY INTEGER) AS DECLARE VARIABLE DTYP INTEGER; DECLARE VARIABLE KTYP INTEGER; DECLARE VARIABLE DID INTEGER; DECLARE VARIABLE STYP1 INTEGER; DECLARE VARIABLE STYP2 INTEGER; DECLARE VARIABLE STORID1 INTEGER; DECLARE VARIABLE STORID2 INTEGER; declare variable PosNo integer; declare variable GddKtID integer; begin if (:aDate is Null) then exit; Select ID, TYP, :Stor, StorID from DgvDt where ID=:ID into :DID, :DTYP, :StorID1, :StorID2; if (:DID is null) then exit; if (:DTYP <> 1 and :DTYP <> 7) then exit; if (:DTYP=1) then KTYP=1; if (:DTYP=7) then KTYP=3; Select Typ from StorList where ID=:StorID1 into :STyp1; Select Typ from StorList where ID=:StorID2 into :STyp2; DgvKey = Gen_ID(DgvKt_ID,1); -- ID приходной накладной insert Into DgvKt(ID, DAT_, NBR, STOR, STORID, TYP, USERNAME, DGVKEY, COMMENT, SALEDATE, PRSNID, NameID, CurrTyp, Curs) Select :DgvKey, :aDate, Nbr, :Stor, Stor, :KTYP, USERNAME, ID, COMMENT, :aDate, PRSNID, NameID, CurrTyp, Curs from DgvDt where ID=:ID; if ((:DTYP=1) and (:STYP2 not in (1, 4, 5))) then begin -- внутренняя передача if (:STYP1 not in (1, 4, 5)) then begin Insert Into GddKt (ID, DgvKey, GdsKey, GddKey, Price, Nds, Akciz, Quant, Source, KPrice, ZNBR, ZID, Src_One, Qnt_One, SizeX, SizeY, SizeZ, BarCode, DateReal, Date_Reg, SertNbr) Select Gen_ID(GddKt_ID,1), :DgvKey, K.GdsKey, D.ID, K.Price, K.Nds, K.Akciz, D.Quant, D.Quant, K.KPrice, K.ZNBR, D.ZID, D.Qnt_One, D.Qnt_One, K.SizeX, K.SizeY, K.SizeZ, K.BarCode, K.DateReal, K.Date_Reg, K.SertNbr From GddDt D, GddKt K where D.DgvKey = :ID and K.ID=D.GddKey; -- обновление PosNo PosNo = 0; for select ID from GddKt where DgvKey=:DgvKey Order by ID into :GddKtID do begin PosNo = :PosNo + 1; update GddKt set PosNo=:PosNo where ID=:GddKtID; end end if (:STYP1 in (1, 4, 5)) then begin Insert Into GddKt (ID, DgvKey, GdsKey, GddKey, Price, Nds, Akciz, Quant, Source, KPrice, ZNBR, ZID, Src_One, Qnt_One, SizeX, SizeY, SizeZ, BarCode, DateReal, Date_Reg, SertNbr) Select Gen_ID(GddKt_ID,1), :DgvKey, K.GdsKey, D.ID, K.KPrice, K.KNds, K.Akciz, D.Quant, D.Quant, K.KPrice, K.ZNBR, D.ZID, D.Qnt_One, D.Qnt_One, K.SizeX, K.SizeY, K.SizeZ, K.BarCode, K.DateReal, K.Date_Reg, K.SertNbr From GddDt D, GddKt k where D.DgvKey = :ID and K.ID=D.GddKey; -- обновление PosNo PosNo = 0; for select ID from GddKt where DgvKey=:DgvKey Order by ID into :GddKtID do begin PosNo = :PosNo + 1; update GddKt set PosNo=:PosNo where ID=:GddKtID; end end end if ((:DTYP=7) or (:DTYP=1 and :STYP2 in(1, 4, 5))) then begin -- переоценка / внутр. передача Insert Into GddKt (ID, DgvKey, GdsKey, GddKey, Price, Nds, Akciz, Quant, Source, KPrice, ZNBR, KNds, TPrice, ZID, Src_One, Qnt_One, SizeX, SizeY, SizeZ, BarCode, DateReal, Date_Reg, SertNbr) Select Gen_ID(GddKt_ID,1), :DgvKey, K.GdsKey, D.ID, D.Price, D.Nds, K.Akciz, D.Quant, D.Quant, K.KPrice, K.ZNBR, K.KNds, case when (:DTYP=1 and :STYP2 in(5)) then D.TPrice else K.TPrice end, D.ZID, D.Qnt_One, D.Qnt_One, K.SizeX, K.SizeY, K.SizeZ, K.BarCode, K.DateReal, K.Date_Reg, K.SertNbr From GddDt D left join GddKt k on K.ID=D.GddKey where D.DgvKey = :ID; -- обновление PosNo PosNo = 0; for select ID from GddKt where DgvKey=:DgvKey Order by ID into :GddKtID do begin PosNo = :PosNo + 1; update GddKt set PosNo=:PosNo where ID=:GddKtID; end end Suspend; end^ ALTER PROCEDURE DGVDT_GENMAINMEAN ( ID INTEGER) AS declare variable Typ integer; declare variable GddKey integer; declare variable GdsKey integer; declare variable Price double precision; Declare Variable Nds double precision; declare variable MQNT integer; declare variable MExists Integer; Declare Variable PodrID integer; declare Variable aDate Date; declare variable INbr Dmn_Nbr; Declare Variable OurOrgnID integer; Declare Variable OutDate Date; Declare variable UserName varchar(20); begin Select DD.Typ, DD.PodrID, DD.Dat_, DD.Nbr, S.OurOrgnID, DD.Out_Date, DD.username from DgvDt DD, StorList S where DD.ID=:ID and S.ID=DD.Stor into :Typ, :PodrID, :aDate, :iNbr, :OurOrgnID, :OutDate, :UserName; if (:Typ <> 2) then exit; /* списание ОС со склада */ if (:OutDate is Null) then begin for Select ID from GddDt where DgvKey=:ID into :GddKey do delete from MainMean where GddKey = :GddKey; exit; end /* OutDate is not Null */ for Select D.ID, K.GdsKey, K.Price, K.NDS, D.Quant from GddDt D, GddKt K where D.DgvKey=:ID and K.ID=D.GddKey into :GddKey, :GdsKey, :Price, :Nds, :MQNT do begin MExists = 0; Select 1 from DgvDt where ID=:ID and Exists (Select M.ID from MainMean M where M.GddKey=:GddKey) into :MExists; if (:MExists = 0) then begin while (:MQNT > 0) do begin insert into MainMean(ID, OurOrgnID, GddKey, GodsID, Price, DAT_, INbr, PodrID, UserName) Values(Gen_ID(MainMean_ID, 1), :OurOrgnID, :GddKey, :GdsKey, :Price-:Nds, :OutDate, :iNbr, :PodrID, :UserName); MQNT = :MQNT-1; end end if (:MExists=1) then begin Update MainMean set Price=:Price-:Nds, Dat_=:OutDate, INbr=:INbr, PodrID=:PodrID, UserName=:UserName where GddKey=:GddKey and (Price <> :Price-:Nds or DAT_ <> :OutDate or iNbr <> :INBR or PodrID<>:PodrID); end end suspend; end^ ALTER PROCEDURE DGVDT_GENMBPMEANLIST ( ID INTEGER) AS Declare Variable Typ integer; Declare Variable Out_Date TimeStamp; Declare Variable Nbr Dmn_Nbr; Declare Variable GodsID integer; Declare Variable GdsKey integer; Declare Variable MbpMeanID integer; Declare Variable MbpGddID integer; Declare Variable Price Double Precision; Declare Variable GddDtID integer; Declare Variable Quant Double Precision; Declare Variable PodrID integer; Declare Variable MbpDgvID integer; Declare Variable UserName Varchar(20); declare variable OurOrgnID integer; declare variable Stor Integer; -- срок службы (мес.) declare variable Period integer; declare variable MbpOutDate TimeStamp; begin Select Typ, Out_Date, Nbr, PodrID, UserName, Stor From DgvDt where ID=:ID into :Typ, :Out_Date, :Nbr, :PodrID, :UserName, :Stor; select OurOrgnID from StorList where ID = :Stor into :OurOrgnID; if (:Typ <> 3 or :Out_Date is null) then Exit; MbpDgvID = Null; Select ID from MbpDgv where DgvDtID=:ID into :MbpDgvID; if(:MbpDgvID is Null) then begin MbpDgvID = Gen_ID(MbpDgv_ID, 1); insert into MbpDgv (ID, OurOrgnID, Dat_, Nbr, Podr, PodrID, Typ, DgvDtID, UserName) Values(:MbpDgvID, :OurOrgnID, :Out_Date, :Nbr, :PodrID, :PodrID, 0, :ID, :UserName); end else begin Update MbpDgv Set Dat_=:Out_Date, Nbr=:Nbr, Podr=:PodrID, PodrID=:PodrID, UserName=:UserName where ID=:MbpDgvID; end For Select k.GdsKey From GddDt d, GddKt k where d.DgvKey=:ID and k.ID=d.GddKey into :GdsKey do begin GodsID=Null; MbpMeanID = Null; Select ID, GodsID from MbpMean where GodsID = :GdsKey and OurOrgnID = :OurOrgnID into :MbpMeanID, :GodsID; if (:GodsID is Null) then begin MbpMeanID = Gen_ID(MbpMean_ID, 1); Insert into MbpMean (ID, OurOrgnID, GodsID) Values(:MbpMeanID, :OurOrgnID, :GdsKey); end end for Select M.ID, (d.Price-d.Nds), d.ID, d.Quant, M.Period from GddDt d, GddKt k, MbpMean M where d.DgvKey=:ID and k.ID=d.GddKey and M.GodsID=k.GdsKey and M.OurOrgnID = :OurOrgnID into :MbpMeanID, :Price, :GddDtID, :Quant, :Period do begin if (:Period is Null) then Period = 0; MbpGddID = Null; select ID from MbpGdd where GddDtID=:GddDtID into :MbpGddID; Select xDate from f_AddMonth(:Out_Date, :Period) into :MbpOutDate; if (:MbpGddID is Null) then begin /* position not exist - insert */ MbpGddID = Gen_ID(MbpGdd_ID, 1); Insert into MbpGdd(ID,MbpID,Price,GddID,DgvID, Source,Quant,GddDtID,Inp_Date, Out_Date) values(:MbpGddID,:MbpMeanID,:Price,:MbpGddID,:MbpDgvID, :Quant,:Quant,:GddDtID,:Out_Date, :MbpOutDate); end else begin /* position exist - update */ update MbpGdd set Price = :Price, Source = :Quant, Quant = :Quant-(Source-Quant),Inp_Date = :Out_Date, Out_Date = :MbpOutDate where ID = :MbpGddID; end end end^ ALTER PROCEDURE DGVDT_KRBSELECT ( ID INTEGER) RETURNS ( KDATE TIMESTAMP, KSUMMA DOUBLE PRECISION, KDELTA DOUBLE PRECISION, KCURS DOUBLE PRECISION, CURS DOUBLE PRECISION) AS declare variable OutDate TimeStamp; declare variable cSumma double precision; declare variable dCurs double precision; declare variable sSumm double precision; declare variable sCurs double precision; declare variable CurrTyp integer; declare variable SaleID integer; declare variable KrbTyp integer; declare variable cSumm double precision; begin select Out_Date, cSumma, Curs, CurrTyp from DgvDt where ID = :ID into :OutDate, :cSumma, :dCurs, :CurrTyp; if (:OutDate is Null) then exit; kCurs = :dCurs; Curs = :dCurs; for select Q.eDate, cast(0 as integer) as Typ, cast(Null as integer) as ID, cast(Null as double precision) cSumm, (select Val from Currency_GetValue(:CurrTyp, Q.eDate)) from f_Quarter_DataSet( (select DD.Out_Date from DgvDt DD where DD.ID = :ID), cast(Current_Date as TimeStamp)) Q union select S.Dat_, cast(1 as integer) as Typ, S.ID, CR.cSumma, s.Curs from SaleCros CR, Sale S where Cr.DgvKey = :ID and S.ID = CR.SaleKey and S.Dat_ is not Null order by 1, 2, 3 into :kDate, :KrbTyp, :SaleID, :cSumm, :sCurs do begin select CoalEsce(Sum(Cr.cSumma), 0.0) from SaleCros Cr, Sale S where Cr.DgvKey = :ID and S.ID = Cr.SaleKey and S.Dat_ is not Null and S.Dat_ <= :kDate into :sSumm; -- сумма оплаты -- select Val from Currency_GetValue(:CurrTyp, :kDate) into :sCurs; if (:SaleID is not Null) then begin -- КР по оплате kSumma = cSumm; if (:kDate < :OutDate) then kSumma = 0.0; kDelta = cSumm * (:sCurs - :kCurs); if (Abs(:kSumma) > 1.0e-5) then begin Curs = :sCurs; suspend; end end else begin -- КР по границе квартала if (:kDate < :OutDate) then kSumma = -:sSumm; else kSumma = :cSumma - :sSumm; if (:kSumma < 0.0) then kSumma = 0.0; if (:kDate > Current_Date) then kSumma = 0.0; kDelta = :kSumma * (:sCurs-:kCurs); if (Abs(:kSumma) > 1.0e-5) then begin Curs = :sCurs; suspend; kCurs = sCurs; end end end end^ ALTER PROCEDURE DGVDT_MOVETOSTOR ( ID INTEGER, STORID INTEGER, MOVEDATE TIMESTAMP, USERNAME VARCHAR(20)) AS DECLARE VARIABLE DID INTEGER; DECLARE VARIABLE DTYP INTEGER; DECLARE VARIABLE STOR INTEGER; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE PRICE DOUBLE PRECISION; DECLARE VARIABLE NDS DOUBLE PRECISION; DECLARE VARIABLE AKCIZ DOUBLE PRECISION; DECLARE VARIABLE KPRICE DOUBLE PRECISION; DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE GDDKEY INTEGER; DECLARE VARIABLE GDSKEY INTEGER; DECLARE VARIABLE GDDDTID INTEGER; DECLARE VARIABLE GDDDTNEWID INTEGER; DECLARE VARIABLE GDDKTNEWID INTEGER; DECLARE VARIABLE OPERIDINTR INTEGER; declare variable OurOrgnID integer; begin Select ID, TYP, STOR from DgvDt where ID=:ID into :DID,:DTYP,:STOR; if (:DID is null) then exit; if (:DTYP <> 0) then exit; if (:STOR=:STORID) then exit; if (:MoveDate is null) then exit; DgvDtID = Gen_ID(DgvDt_ID, 1); -- расх. накл. на внутр. передачу DgvKtID = Gen_ID(DgvKt_ID, 1); -- прих. накл. на внутр. передачу Select OurOrgnID, OperIDIntr from StorList where ID=:Stor into :OurOrgnID, :OperIDIntr; if (:OperIDIntr is Null) then Select Cast(S.VAL as Integer) from SysConst S, AcOprLst A where S.OurOrgnID=:OurOrgnID and S.Name='DefOperCode_IntrGood' and S.Val=A.ID into :OperIDIntr; -- Расходная накладная на внутр. передачу insert into DgvDt (ID, DAT_, NBR, TYP, OUT_DATE, STOR, STORID,COMMENT,USERNAME,ProcNDS,DgvKey,OperID) Select :DgvDtID, :MoveDate, NBR, 1, :MoveDate, STOR, :StorID, COMMENT, :USERNAME, ProcNDS,:DgvKtID,:OperIDIntr from DgvDt where ID=:ID; -- Приходная накладная на внутреннюю передачу insert Into DgvKt(ID, DAT_, NBR, TYP, Stor, StorID, Comment,DgvKey, UserName) Select :DgvKtID, :MoveDate, NBR, 1, :StorID, Stor, Comment, :DgvDtID,:UserName From DgvDt Where ID=:ID; for select D.ID, D.Quant, K.Price, K.Nds, K.Akciz, D.GddKey, K.KPrice, K.GdsKey from GddDt D, GddKt K where D.DgvKey=:ID and K.ID=D.GddKey into :GddDtID, :Quant, :Price, :Nds, :Akciz, :GddKey, :KPrice,:GdsKey do begin GddDtNewID = Gen_ID(GddDt_ID,1); /* Товар - внутр. передача - расход */ GddKtNewID = Gen_ID(GddKt_ID,1); /* Товар - внутр. передача - приход */ -- Расход для внутр. передачи Insert Into GddDt(ID, DgvKey, GddKey, Price, Nds, Quant) select :GddDtNewID, :DgvDtID, Null, D.Price, D.Nds, D.Quant from GddDt D where D.ID=:GddDtID; -- Приход для новой внутр. передачи Insert Into GddKt(ID, DgvKey, GddKey, GdsKey, Price, Nds, Akciz, Quant, Source, KPrice, KNds) select :GddKtNewID, :DgvKtID, :GddDtNewID, K.GdsKey, K.Price, K.Nds, K.Akciz, D.Quant, D.Quant, CoalEsce(K.KPrice, 0.0), CoalEsce(K.KNds, 0.0) from GddDt D left join GddKt K on K.ID=D.GddKey where D.ID=:GddDtID; /* Реализацию перецепляем на новую внутр. передачу */ Update GddDt Set GddKey=:GddKtNewID where ID=:GddDtID; /* Расход по внутр. передаче - к исходному приходу */ Update GddDt Set GddKey=:GddKey where ID=:GddDtNewID; /* Update GddDt Set Quant=Quant where ID=:GddDtID; */ end -- отметки кладовщика: перенос из реализации во внутр. передачу (расход) merge into DgvDt dd2 using DgvDt dd1 on dd1.id=:ID and dd2.ID=:DgvDtID when matched then update set dd2.stormod=dd1.stormod, dd2.storout=dd1.storout, dd2.storsub=dd1.storsub, dd2.kuserid=dd1.kuserid, dd2.klastedit=dd1.klastedit; -- Расх. накл. по реализации -> на новый склад Update DgvDt Set Dat_=:MoveDate, Stor=:StorID, UserName=:UserName where ID=:ID; Update DgvDt Set Summa=Summa where ID=:DgvDtID; end^ ALTER PROCEDURE DGVDT_NEWID RETURNS ( ID INTEGER) AS begin id=gen_id(dgvdt_id,1); end^ ALTER PROCEDURE DGVDT_RESERVLOG ( ID INTEGER, MANAGER INTEGER, BDT TIMESTAMP, EDT TIMESTAMP) AS declare variable ReservLog integer; declare variable UserName varchar(20); declare variable GddKey integer; declare variable GdsKey integer; declare variable Quant double precision; declare variable Price double precision; begin if (:Manager is Null) then exit; Select C.Val, DD.UserName from DgvDt DD, StorList S, SysConst C where DD.ID = :ID and S.ID = DD.Stor and C.OurOrgnID = S.OurOrgnID and C.Name = 'ReservLog' into :ReservLog, :UserName; if (:ReservLog = 1) then begin if (:bDT is not Null and :eDT is Null) then begin for select D.GddKey, K.GdsKey, D.Quant, D.Price from GddDt D, GddKt K where D.DgvKey = :ID and K.ID=D.GddKey into :GddKey, :GdsKey, :Quant, :Price do begin insert into ReservLog(Manager, GddKey, GdsKey, DgvKey, Quant, Price, UserName, bDateTime, eDateTime) values(:Manager, :GddKey, :GdsKey, :ID, :Quant, :Price, :UserName, :bDT, Null); end end end end^ ALTER PROCEDURE DGVDT_RETURN ( ID INTEGER) AS declare variable SaleKey integer; declare variable QUANT double precision; declare variable SUMM double precision; declare variable DTID integer; declare variable scid integer; begin EXECUTE PROCEDURE DGVDT_DELACCNREC :ID; delete from GDDDT where DgvKey = :ID; for select id, salekey, summa from salecros where dgvkey=:id into :ScID, :SaleKey, :summ do begin delete from salecros where id=:id; update sale set summ = summ+:summ where ID =:SaleKey; end delete from dgvdt where id = :id; end^ ALTER PROCEDURE DGVDT_SALE ( ID INTEGER, SALEID INTEGER, SZDTCRID INTEGER, SM DOUBLE PRECISION, USERNAME VARCHAR(20)) RETURNS ( CRID INTEGER) AS declare variable SummaDG Double Precision; declare variable SummaDC Double Precision; declare variable SSummaDG Double Precision; declare variable SSummaDC Double Precision; declare variable SmG Double Precision; -- сумма оплаты (в счет) - нац. валюта declare variable SmC double precision; -- сумма оплаты (в счет) - валюта declare variable SummSG Double Precision; -- полн. сумма платежа в нац. валюте declare variable SummSC double precision; -- полн. сумма платежа в валюте declare variable cTyp Integer; /* признак валютного платежа */ declare variable sDate TimeStamp; -- Дата платежа (для курса оплаты) declare variable dDate TimeStamp; -- Дата накладной (для курса выдачи товара) declare variable SDDate TimeStamp; -- Дата полной оплаты накладной declare variable CursDiff double precision; /* курсовая разница */ declare variable OutDate TimeStamp; /* дата выдачи товара */ declare variable Dat_ TimeStamp; declare variable sCurrTyp Integer; /* валюта платежа */ declare variable dCurrTyp integer; /* валюта накладной */ declare variable Typ Integer; -- тип накладной declare variable dCurs Double precision; -- курс в накладной declare variable bCurs Double Precision; declare variable eCurs Double Precision; declare variable sCurs Double Precision; -- курс оплаты begin CursDiff = 0.0; for select S.Dat_, S.summ, S.CSumm, S.cTyp, S.CurrTyp, S.Curs from Sale S where S.ID = :SaleID into :sDate, :SummSG, :SummSC, :cTyp, :sCurrTyp, :sCurs do begin if(:sCurrTyp is Null) then begin -- платеж в грн. SmG = :Sm; if(:sm > :SummSG) then SmG=:SummSG; SmC = 0.0; end if(:sCurrTyp is not Null) then begin -- платеж в валюте SmC=:Sm; -- брать на оплату сумму не более остатка оплаты if(:sm > :SummSC) then SmC=:SummSC; SmG = 0.0; end for select Dat_, salesumma, summa, scsumma, csumma, Out_Date, CurrTyp, Curs, Typ from dgvdt where ID=:ID into :Dat_, :SSummaDG, :SummaDG, :SSummaDC, :SummaDC, :OutDate, :dCurrTyp, :dCurs, :Typ do begin if (:OutDate is Null) then dDate = :Dat_; else dDate = :OutDate; if (:dCurrTyp is Null and :cTyp=1) then begin SSummaDC = :SSummaDG; SummaDC = :SummaDG; if (:sCurs <> 0) then begin SSummaDC = :SSummaDG/:sCurs; SummaDC = :SummaDG/:sCurs; end end -- оплачивать не более чем сумма доплаты накладной if(:cTyp=0 and :SSummaDG >= :SummaDG) then exit; if(:cTyp=1 and :SSummaDC >= :SummaDC) then exit; if(:cTyp=0 and :SummaDG-:SSummaDG < :SmG) then SmG=:SummaDG-:SSummaDG; if(:cTyp=1 and :SummaDC-:SSummaDC < :SmC) then SmC=:SummaDC-:SSummaDC; if(:cTyp=1 and :Typ = 10) then begin -- Реализация на экспорт if(:sDate > :dDate) then begin -- поздняя оплата, есть курс разница Select Val from Currency_GetValue(:sCurrTyp, :dDate) into :bCurs; Select Val from Currency_GetValue(:sCurrTyp, :sDate) into :eCurs; CursDiff = :SmC * (:eCurs - :bCurs); SmG = :SmC * :dCurs; end else begin -- предоплата, пересчет накладной по курсу предоплаты, нет курс. разницы CursDiff = 0.0; SmG = :SmC * :sCurs; end end if (:Typ=0 and (:dCurrTyp is not Null or :sCurrTyp is not Null)) then begin -- Реализация товара if (:dCurrTyp is Null) then begin Select Val from Currency_GetValue(:sCurrTyp, :sDate) into :dCurs; end if (:sCurrTyp is Null) then begin Select Val from Currency_GetValue(:dCurrTyp,:sDate) into :sCurs; end CursDiff = :SmC*(:dCurs-:sCurs); SmG = :SmC * :dCurs; end CrID = gen_id(SaleCros_ID, 1); insert into SaleCros(id,dgvkey,salekey,summa,csumma,Summ, UserName, SZDTCRID) values(:CrID, :id, :saleid, :SmG, :SmC, :CursDiff, :UserName, :SZDTCRID); select Max(S.DAT_) from SaleCros SC, Sale S where SC.DgvKey = :ID and S.ID = SC.SaleKey into :SDDate; if(:cTyp = 0) then begin -- оплата не в валюте sm=:SummaDG - SSummaDG - :SmG; if(:Sm*:Sm > 0.000025) then SDDate = Null; end if(:cTyp = 1) then begin -- оплата в валюте sm = :SummaDC - :SSummaDC - :SmC; if(:Sm*:Sm > 0.000025) then SDDate = Null; update sale set CSumm = CSumm - :SmC where ID=:SaleID; if (:dCurrTyp is not Null) then begin -- валютный платеж / накладная на экспорт update DgvDt set SCSumma = SCSumma + :SmC, SaleDate = :SDDate, No_LastEdit=1 where ID = :ID; select DgvID from DgvDt_CRecalc(:ID) into :ID; end else begin -- оплата обычной накладной валютным платежом update DgvDt Set SaleSumma = SaleSumma + :SmC * :sCurs, SaleDate = :SDDate, No_LastEdit=1 where ID = :ID; end end suspend; end -- select... from dgvdt... end -- select... from sale... end^ ALTER PROCEDURE DGVDT_SALESUMMA AS declare variable dgvkey integer; declare variable summa double precision; declare variable summ double precision; declare variable dat_ date; declare variable nbr Dmn_Nbr; declare variable nameid integer; declare variable name varchar(40); declare variable eps double precision; begin delete from dgvsum; for select id,salesumma,dat_,nbr,nameid from dgvdt where typ=0 into :dgvkey,:summa,:dat_,:nbr,:nameid do for select sum(summa) from salecros where dgvkey=:dgvkey into :summ do begin eps = :summa-:summ; eps = :eps*:eps; if((:eps>0.001)or(:summ is null and :summa <> 0.0)) then for select name from orgn where id=:nameid into :name do insert into dgvsum (id,dat_,nbr,summa,summ,name) values(:dgvkey,:dat_,:nbr,:summa,:summ,:name); end end^ ALTER PROCEDURE DGVDT_STORID AS declare variable name varchar(40); declare variable storid integer; declare variable nameid integer; declare variable dgvid integer; begin for select id,nameid from dgvdt where typ=1 into :dgvid,:nameid do for select name from orgn where id=:nameid into :name do for select id from storlist where name=:name into :storid do update dgvdt set storid=:storid where id=:dgvid; end^ ALTER PROCEDURE DGVDT_TASK_HAS ( ID INTEGER, REQUEST INTEGER) RETURNS ( TASKID INTEGER, BFDATE TIMESTAMP, EFDATE TIMESTAMP) AS begin if (Request = 0) then begin -- последняя активная доставка for select FIRST 1 T.ID, T.BFDATE, T.EFDATE from DgvDt_Task DT JOIN DocmTask T ON T.ID=DT.TaskID where DT.DgvDtID = :ID ORDER BY T.ID DESC INTO :TASKID, :BFDATE, :EFDATE do begin suspend; end end end^ ALTER PROCEDURE DGVDT_ZSALE ( ID INTEGER) AS -- ID заказа declare variable SZID integer; -- остаток доплаты накладной (всего) declare variable dSumm double precision; -- текущая распределяемая сумма в накладную declare variable ddSumm double precision; -- остаток нераспределенной оплаты в заказе declare variable zSumm double precision; -- уже распределенная в накладные сумма из этой оплаты declare variable zdSumm double precision; -- ID распределенной в заказ оплаты declare variable SZDTCRID integer; -- ID оплаты declare variable SaleID integer; declare variable UserName varchar(20); begin Select SZID, Summa-SaleSumma, UserName from DgvDt where ID=:ID into :SZID, :dSumm, :UserName; if (:SZID is Null) then exit; -- накладная не из заказа или не существует if (:dSumm <= 0.0) then exit; -- накладная уже полностью оплачена -- распределенные в заказ оплаты for Select ID, Summa, SaleID from SZDTCR where SZDTID = :SZID into :SZDTCRID, :zSumm, :SaleID do begin -- распределено в накладные Select Sum(Summa) from SaleCros where SZDTCRID = :SZDTCRID into :zdSumm; if (:zdSumm is Null) then zdSumm = 0.0; zSumm = :zSumm - :zdSumm; -- эту сумму можно использовать на оплату накладной if (:zSumm > 0.0 and :dSumm > 0.0) then begin ddSumm = :dSumm; if (:ddSumm > :zSumm) then ddSumm = :zSumm; insert into SaleCros(ID, SaleKey, DgvKey, SZDTCRID, Summa, UserName) Values(Gen_ID(SaleCros_ID, 1), :SaleID, :ID, :SZDTCRID, :ddSumm, :UserName); dSumm = :dSumm - :ddSumm; -- обновление проводок по платежному документу update Sale set Summa=Summa where ID=:SaleID; end end end^ ALTER PROCEDURE DGVDTBLNS_ORGN ( CURORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, BS DOUBLE PRECISION, OD DOUBLE PRECISION, OK DOUBLE PRECISION, ES DOUBLE PRECISION, MANAGERID INTEGER) AS declare variable S double precision; begin -- начальное сальдо -- реализация товара for select DD.NameID, Sum(DD.Summa), O.Manager from StorList S, DgvDt DD, Orgn O where S.OurOrgnID = :CurOrgnID and DD.Stor = S.ID and DD.OUT_DATE < :bDate and DD.Typ in (0, 10) and O.ID = DD.NameID group by DD.NameID, O.Manager into :ID, :S, :ManagerID do begin BS = :S; OD = 0.0; OK = 0.0; ES = :BS; suspend; end -- оплата (дебиторы) for Select S.NameID, Sum(Summa), O.Manager from Sale S, Orgn O where S.OurOrgnID = :CurOrgnID and S.DAT_ < :bDate and (S.System_Flag is Null or S.System_Flag = 0) and O.ID = S.NameID group by S.NameID, O.Manager into :ID, :S, ManagerID do begin BS = -:S; OD = 0.0; OK = 0.0; ES = :BS; suspend; end -- возврат товара заказчиком for Select KK.NameID, Sum(K.Source * D.Price), O.Manager from StorList S, DgvKt KK, GddKt K, GddDt D, DgvDt DD, Orgn O where S.OurOrgnID = :CurOrgnID and KK.Stor = s.ID and K.DgvKey = KK.ID and KK.Typ = 2 and KK.DAT_ < :bDate and D.ID = K.GddKey and DD.ID = KK.DgvKey and O.ID = DD.NameID group by KK.NameID, O.Manager into :ID, :S, :ManagerID do begin BS = -:S; OD = 0.0; OK = 0.0; ES = :BS; suspend; end -- услуги (дебиторы) for Select DD.NameID, Sum(DD.Summa), O.Manager from DgvDtUD DU, DgvDtU DD, Orgn O where DU.OurOrgnID = :CurOrgnID and DD.DgvID = DU.ID and DD.Out_Date < :bDate and O.ID = DD.NameID group by DD.NameID, O.Manager into :ID, :S, :ManagerID do begin BS = :S; OD = 0.0; OK = 0.0; ES = :BS; suspend; end -- обороты по дебету -- реализация товара for select DD.NameID, Sum(DD.Summa), O.Manager from StorList S, DgvDt DD, Orgn O where S.OurOrgnID = :CurOrgnID and DD.Stor = S.ID and DD.OUT_DATE >= :bDate and DD.Out_Date <= :eDate and DD.Typ in (0, 10) and O.ID = DD.NameID group by DD.NameID, O.Manager into :ID, :S, :ManagerID do begin BS = 0.0; OD = :S; OK = 0.0; ES = :S; suspend; end -- услуги (дебиторы) for Select DD.NameID, Sum(DD.Summa), O.Manager from DgvDtUD DU, DgvDtU DD, Orgn O where DU.OurOrgnID = :CurOrgnID and DD.DgvID = DU.ID and DD.Out_Date >= :bDate and DD.Out_Date <= :eDate and O.ID = DD.NameID group by DD.NameID, O.Manager into :ID, :S, :ManagerID do begin BS = 0.0; OD = :S; OK = 0.0; ES = :S; suspend; end -- обороты по кредиту -- оплата (дебиторы) for Select S.NameID, Sum(Summa), O.Manager from Sale S, Orgn O where S.OurOrgnID = :CurOrgnID and S.DAT_ >= :bDate and S.DAT_ <= :eDate and (S.System_Flag is Null or S.System_Flag = 0) and O.ID = S.NameID group by S.NameID, O.Manager into :ID, :S, :ManagerID do begin BS = 0.0; OD = 0.0; OK = :S; ES = -:S; suspend; end -- возврат товара заказчиком for Select KK.NameID, Sum(K.Source * D.Price), O.Manager from StorList S, DgvKt KK, DgvDt DD, GddKt K, GddDt D, Orgn O where S.OurOrgnID = :CurOrgnID and KK.Stor = S.ID and K.DgvKey = KK.ID and KK.Typ = 2 and KK.DAT_ >= :bDate and KK.DAT_ <= :eDate and D.ID = K.GddKey and DD.ID = KK.DgvKey and O.ID = DD.NameID group by KK.NameID, O.Manager into :ID, :S, :ManagerID do begin BS = 0.0; OD = 0.0; OK = :S; ES = -:S; suspend; end end^ ALTER PROCEDURE DGVDTBLNS_ORGNDGV ( ORGNID INTEGER, BDATE TIMESTAMP) RETURNS ( NAMEID INTEGER, SALDO DOUBLE PRECISION, MANAGERID INTEGER, ORGNINFOID INTEGER, DTKTID INTEGER, MAXTIME INTEGER, OUT_DATE TIMESTAMP, DAYS INTEGER, INTERVAL INTEGER, S0 DOUBLE PRECISION, S1 DOUBLE PRECISION, S2 DOUBLE PRECISION, S3 DOUBLE PRECISION) AS declare variable DocID integer; -- выдача товара / оказание услуг declare variable dSumma double precision; -- оплата declare variable sSumma double precision; -- возврат товара declare variable rSumma double precision; begin -- реализация товара for select DD.ID, DD.Summa, DD.NameID, DD.OrgnInfoID, DD.CSDtKtHbID, CoalEsce(OI.MaxTime, 0.0), DD.Manager, DD.Out_Date from DgvDt DD join StorList S on DD.Stor = S.ID and S.OurOrgnID = :OrgnID left join orgninfo OI on OI.ID = DD.OrgnInfoID where DD.Out_Date is not Null and DD.Out_Date < :BDATE and DD.Typ = 0 and DD.Summa <> 0.0 into :DocID, :dSumma, :NameID, :OrgnInfoID, :DtKtID, :MaxTime, :ManagerID, :Out_Date do begin -- оплата select CoalEsce(Sum(SC.Summa), 0.0) from SaleCros SC, Sale S where SC.DgvKey = :DocID and S.ID = SC.SaleKey and S.DAT_ < :BDATE into :sSumma; -- возврат товара select CoalEsce(Sum(K.Source * D.Price), 0.0) from GddDt D, GddKt K, DgvKt KK where D.DgvKey = :DocID and K.GddKey = D.ID and KK.ID = K.DgvKey and KK.TYp = 2 and KK.DAT_ < :BDATE into :rSumma; Saldo = :dSumma - :sSumma; -- - :rSumma; убрали возвраты Days = :BDATE - :Out_Date - MaxTime; Interval = 0; if (:Days > 0 and :Days <= 30) then Interval = 1; else if (:Days > 30 and :Days <= 60) then Interval = 2; else if (:Days > 60) then Interval = 3; s0 = 0.0; s1 = 0.0; s2 = 0.0; s3 = 0.0; if (:Interval = 0) then s0 = :s0 + :Saldo; if (:Interval = 1) then s1 = :s1 + :Saldo; if (:Interval = 2) then s2 = :s2 + :Saldo; if (:Interval = 3) then s3 = :s3 + :Saldo; if (Abs(:Saldo) > 0.005) then Suspend; end -- акты на оказание услуг for select DD.ID, DD.Summa, DD.NameID, DD.OrgnInfoID, DD.CSDtKtHbID, CoalEsce(OI.MaxTime, 0.0), DD.Manager, DD.Out_Date from DgvDtU DD join DgvDtUD S on DD.dgvid = S.ID and S.OurOrgnID = :OrgnID left join orgninfo OI on OI.ID = DD.OrgnInfoID where DD.Out_Date is not Null and DD.Out_Date < :BDATE and DD.Summa <> 0.0 into :DocID, :dSumma, :NameID, :OrgnInfoID, :DtKtID, :MaxTime, :ManagerID, :Out_Date do begin select CoalEsce(Sum(SC.Summa), 0.0) from SaleDuCr SC, Sale S where SC.DgvKey = :DocID and S.ID = SC.SaleKey and S.DAT_ < :BDATE into :sSumma; Saldo = :dSumma - :sSumma; Days = :BDATE - :Out_Date - MaxTime; Interval = 0; if (:Days > 0 and :Days <= 30) then Interval = 1; else if (:Days > 30 and :Days <= 60) then Interval = 2; else if (:Days > 60) then Interval = 3; s0 = 0.0; s1 = 0.0; s2 = 0.0; s3 = 0.0; if (:Interval = 0) then s0 = :s0 + :Saldo; if (:Interval = 1) then s1 = :s1 + :Saldo; if (:Interval = 2) then s2 = :s2 + :Saldo; if (:Interval = 3) then s3 = :s3 + :Saldo; if (Abs(:Saldo) > 0.005) then Suspend; end end^ ALTER PROCEDURE DGVDTBLNS_ORGNDGV1 ( ORGNID INTEGER, BDATE TIMESTAMP, DTKTID INTEGER, MANAGERID INTEGER) RETURNS ( NAMEID INTEGER, ORGNINFOID INTEGER, MAXTIME INTEGER, SALDO DOUBLE PRECISION, S0 DOUBLE PRECISION, S1 DOUBLE PRECISION, S2 DOUBLE PRECISION, S3 DOUBLE PRECISION) AS declare variable DocID integer; -- выдача товара / оказание услуг declare variable dSumma double precision; -- оплата declare variable sSumma double precision; -- возврат товара declare variable rSumma double precision; declare variable Interval integer; declare variable Out_Date TimeStamp; declare variable ID integer; declare variable Days integer; begin -- реализация товара for select DD.ID, DD.Summa, DD.NameID, OI.ID, CoalEsce(OI.MaxTime, 0.0), DD.Out_Date from DgvDt DD join StorList S on DD.Stor = S.ID and S.OurOrgnID = :OrgnID left join orgninfo OI on OI.ID = DD.OrgnInfoID where DD.Out_Date is not Null and DD.Out_Date < :BDATE and DD.Typ = 0 and DD.Summa <> 0.0 and DD.Manager = :ManagerID and DD.CsDtKtHbID = :DTKTID order by DD.NameID, OI.ID into :DocID, :dSumma, :NameID, :OrgnInfoID, :MaxTime, :Out_Date do begin -- оплата select CoalEsce(Sum(SC.Summa), 0.0) from SaleCros SC, Sale S where SC.DgvKey = :DocID and S.ID = SC.SaleKey and S.DAT_ < :BDATE into :sSumma; -- возврат товара select CoalEsce(Sum(K.Source * D.Price), 0.0) from GddDt D, GddKt K, DgvKt KK where D.DgvKey = :DocID and K.GddKey = D.ID and KK.ID = K.DgvKey and KK.Typ = 2 and KK.DAT_ < :BDATE into :rSumma; Saldo = :dSumma - :sSumma; -- - :rSumma; убрали возвраты ID = :NameID; Days = :BDATE - :Out_Date - MaxTime; Interval = 0; if (:Days > 0 and :Days <= 30) then Interval = 1; else if (:Days > 30 and :Days <= 60) then Interval = 2; else if (:Days > 60) then Interval = 3; s0 = 0.0; s1 = 0.0; s2 = 0.0; s3 = 0.0; if (:Interval = 0) then s0 = :s0 + :Saldo; if (:Interval = 1) then s1 = :s1 + :Saldo; if (:Interval = 2) then s2 = :s2 + :Saldo; if (:Interval = 3) then s3 = :s3 + :Saldo; suspend; end -- услуги for select DD.ID, DD.Summa, DD.NameID, OI.ID, CoalEsce(OI.MaxTime, 0.0), DD.Out_Date from DgvDtU DD join DgvDtUD S on DD.DgvID = S.ID and S.OurOrgnID = :OrgnID left join orgninfo OI on OI.ID = DD.OrgnInfoID where DD.Out_Date is not Null and DD.Out_Date < :BDATE and DD.Summa <> 0.0 and DD.Manager = :ManagerID and DD.CsDtKtHbID = :DTKTID order by DD.NameID, OI.ID into :DocID, :dSumma, :NameID, :OrgnInfoID, :MaxTime, :Out_Date do begin -- оплата select CoalEsce(Sum(SC.Summa), 0.0) from SaleDuCr SC, Sale S where SC.DgvKey = :DocID and S.ID = SC.SaleKey and S.DAT_ < :BDATE into :sSumma; Saldo = :dSumma - :sSumma; ID = :NameID; Days = :BDATE - :Out_Date - MaxTime; Interval = 0; if (:Days > 0 and :Days <= 30) then Interval = 1; else if (:Days > 30 and :Days <= 60) then Interval = 2; else if (:Days > 60) then Interval = 3; s0 = 0.0; s1 = 0.0; s2 = 0.0; s3 = 0.0; if (:Interval = 0) then s0 = :s0 + :Saldo; if (:Interval = 1) then s1 = :s1 + :Saldo; if (:Interval = 2) then s2 = :s2 + :Saldo; if (:Interval = 3) then s3 = :s3 + :Saldo; suspend; end end^ ALTER PROCEDURE DGVDTBLNS_ORGNDGV2 ( ORGNID INTEGER, BDATE TIMESTAMP, DTKTID INTEGER, MANAGERID INTEGER) RETURNS ( DOCID INTEGER, NAMEID INTEGER, ORGNINFOID INTEGER, MAXTIME INTEGER, SALDO DOUBLE PRECISION, S0 DOUBLE PRECISION, S1 DOUBLE PRECISION, S2 DOUBLE PRECISION, S3 DOUBLE PRECISION) AS -- выдача товара / оказание услуг declare variable dSumma double precision; -- оплата declare variable sSumma double precision; -- возврат товара declare variable rSumma double precision; declare variable Interval integer; declare variable Out_Date TimeStamp; declare variable Days integer; declare variable OIID integer; declare variable OID integer; declare variable Flag integer; begin s0 = 0.0; s1 = 0.0; s2 = 0.0; s3 = 0.0; OrgnInfoID = Null; NameID = Null; -- реализация товара for select DD.ID, DD.Summa, DD.NameID, OI.ID, CoalEsce(OI.MaxTime, 0.0), DD.Out_Date from DgvDt DD join StorList S on DD.Stor = S.ID and S.OurOrgnID = :OrgnID left join orgninfo OI on OI.ID = DD.OrgnInfoID where DD.Out_Date is not Null and DD.Out_Date < :BDATE and DD.Typ = 0 and DD.Summa <> 0.0 and DD.Manager = :ManagerID and DD.CsDtKtHbID = :DTKTID order by DD.NameID, OI.ID into :DocID, :dSumma, :OID, :OIID, :MaxTime, :Out_Date do begin -- оплата select CoalEsce(Sum(SC.Summa), 0.0) from SaleCros SC, Sale S where SC.DgvKey = :DocID and S.ID = SC.SaleKey and S.DAT_ < :BDATE into :sSumma; -- возврат товара select CoalEsce(Sum(K.Source * D.Price), 0.0) from GddDt D, GddKt K, DgvKt KK where D.DgvKey = :DocID and K.GddKey = D.ID and KK.ID = K.DgvKey and KK.Typ = 2 and KK.DAT_ < :BDATE into :rSumma; Saldo = :dSumma - :sSumma; -- - :rSumma; убрали возвраты s0 = 0.0; s1 = 0.0; s2 = 0.0; s3 = 0.0; NameID = :OID; OrgnInfoID = :OIID; Days = :BDATE - :Out_Date - MaxTime; Interval = 0; if (:Days > 0 and :Days <= 30) then Interval = 1; else if (:Days > 30 and :Days <= 60) then Interval = 2; else if (:Days > 60) then Interval = 3; if (:Interval = 0) then s0 = :s0 + :Saldo; if (:Interval = 1) then s1 = :s1 + :Saldo; if (:Interval = 2) then s2 = :s2 + :Saldo; if (:Interval = 3) then s3 = :s3 + :Saldo; if (Abs(:Saldo) > 0.005) then suspend; end /* -- акты на оказание услуг for select DD.ID, DD.Summa, DD.NameID, DD.OrgnInfoID, DD.CSDtKtHbID, CoalEsce(OI.MaxTime, 0.0), DD.Manager, DD.Out_Date from DgvDtU DD join DgvDtUD S on DD.dgvid = S.ID and S.OurOrgnID = :OrgnID left join orgninfo OI on OI.ID = DD.OrgnInfoID where DD.Out_Date is not Null and DD.Out_Date < :BDATE and DD.Summa <> 0.0 into :DocID, :dSumma, :NameID, :OrgnInfoID, :DtKtID, :MaxTime, :ManagerID, :Out_Date do begin select CoalEsce(Sum(SC.Summa), 0.0) from SaleDuCr SC, Sale S where SC.DgvKey = :DocID and S.ID = SC.SaleKey and S.DAT_ < :BDATE into :sSumma; Saldo = :dSumma - :sSumma; ID = :NameID; Days = :BDATE - :Out_Date - MaxTime; Interval = 0; if (:Days > 0 and :Days <= 30) then Interval = 1; else if (:Days > 30 and :Days <= 60) then Interval = 2; else if (:Days > 60) then Interval = 3; if (Abs(:Saldo) > 0.005) then Suspend; end */ end^ ALTER PROCEDURE DGVDTU_CRECALC ( ID INTEGER) AS declare variable dgvid integer; declare variable CurrTyp integer; -- курс валюты в акте declare variable dCurs double precision; -- курс валюты в предоплате declare variable sCurs double precision; -- сумма акта declare variable cSumma double precision; -- сумма оплаты предоплатами declare variable scSumma double precision; declare variable Out_Date timestamp; declare variable S double precision; declare variable cS double precision; declare variable UID integer; declare variable cPrice double precision; declare variable Summa double precision; begin select DD.ID, DD.CurrTyp, DD.Curs, DD.cSumma, CoalEsce(DD.Out_Date, DD.Dat_) from DgvDtU DD where DD.ID = :ID and DD.CurrTyp is not Null and CoalEsce(DD.Curs, 0.0) <> 0.0 and DD.cSumma <> 0.0 into :DgvID, :CurrTyp, :dCurs, :cSumma, :Out_Date; if (:DgvID is Null) then exit; select CoalEsce(Sum(Cr.cSumma), 0.0) from SaleDuCr Cr, Sale S where Cr.DgvKey = :ID and S.ID = Cr.SaleKey and S.Dat_ < :Out_Date into :scSumma; -- позиции услуг - корректировка цен for select ID, cPrice from GddDtU where DgvKey = :ID and CoalEsce(cPrice, 0.0) <> 0.0 into :UID, :cPrice do begin S = :cPrice * :dCurs * (:cSumma-:scSumma) / :cSumma; for select cr.cSumma, s.Curs from SaleDuCr cr, Sale S where Cr.DgvKey = :ID and S.ID = Cr.SaleKey and S.Dat_ < :Out_Date into :cS, :sCurs do begin S = S + :cPrice * :sCurs * :cS / :cSumma; end Update GddDtU set Price = :S where ID = :UID; end Select CoalEsce(Sum(Price * Quant), 0.0) from GddDtU where DgvKey = :ID into :Summa; Update DgvDtU set Summa = :Summa, No_LastEdit=1 where ID = :ID; end^ ALTER PROCEDURE DGVDTU_CSALE ( ID INTEGER, SALEID INTEGER, SM DOUBLE PRECISION, USERNAME VARCHAR(20)) RETURNS ( CRID INTEGER) AS declare variable D_Summa double precision; declare variable D_SSumma double precision; declare variable D_CSumma double precision; declare variable D_SCSumma double precision; /* остаток оплаты в грн. */ declare variable summ double precision; /* остаток оплаты в валюте */ declare variable Csumm double precision; declare variable saledate TimeStamp; declare variable S_CurrTyp Integer; declare variable D_CurrTyp Integer; declare variable CTyp integer; declare variable S_Curs Double Precision; declare variable D_Curs Double Precision; declare variable S_CSumma Double Precision; /* разнесенная сумма - грн */ declare variable CR_Summa Double Precision; /* разнесенная сумма - валюта */ declare variable CR_CSumma Double Precision; /* разнесенная сумма - курсовая разница (бухг.) */ declare variable CR_Summ double precision; declare variable S_Date TimeStamp; declare variable D_Date TimeStamp; declare variable bDate TimeStamp; declare variable eDate TimeStamp; declare variable bCurs Double Precision; declare variable eCurs Double Precision; begin for select dat_, summ, CurrTyp, Curs, CTyp, CSumm, CSumma from sale where id = :SaleID into :saledate, :summ, :S_CurrTyp, :S_Curs, :CTyp, :CSumm, :S_CSumma do begin if(:sm > :CSumm)then sm = :CSumm; /* остаток оплаты */ for select SaleSumma, Summa, SCSumma, CSumma, CurrTyp, Curs, Out_Date from dgvdtU where ID=:ID into :D_SSumma, :D_Summa, :D_SCSumma, :D_CSumma, D_CurrTyp, D_Curs, :D_Date do begin if(:D_SCSumma >= :D_CSumma) then exit; if(:D_CSumma-:D_SCSumma < :sm) then sm=:D_CSumma-:D_SCSumma; CR_CSumma = :sm; CR_Summa = :sm * :S_Curs; /* курсовая разница (бухг.) */ CR_Summ = 0.0; S_Date = :SaleDate; if(:S_Date is not null and :D_Date is not null) then begin if(:S_Date > :D_Date) then begin bDate=:D_Date; eDate = :S_Date; end else begin bDate=:S_Date; eDate=:D_Date; end Select Val from Currency_GetValue(:S_CurrTyp,:bDate) into :bCurs; Select Val from Currency_GetValue(:s_CurrTyp,:eDate) into :eCurs; CR_Summ = :Sm*(:eCurs-:bCurs); end CrID = gen_id(SaleDuCr_id,1); insert into SaleDuCr(id,dgvkey,salekey,summa, CSumma, Summ, UserName) values(:CrID,:id,:saleid,:CR_Summa,:CR_CSumma,:CR_Summ, :UserName); end end execute procedure DgvDtU_CReCalc(:ID); suspend; end^ ALTER PROCEDURE DGVDTU_DELACCNREC ( ID INTEGER) AS Declare Variable OpID integer; Declare Variable AccnKey integer; begin for select ID, AccnKey from DgDUAccn where DgvKey=:ID into :OpID, :AccnKey do begin Delete From DgDUAccn where ID=:OpID; Delete From AccnProv where ID=:AccnKey; end end^ ALTER PROCEDURE DGVDTU_GENACCNREC ( ID INTEGER) AS Declare Variable Dat_ date; Declare Variable Nbr Dmn_Nbr; Declare Variable Out_Date Date; Declare Variable NameID integer; Declare Variable Summa Double Precision; Declare Variable SaleSumma Double Precision; Declare Variable aSumma Double Precision; Declare Variable OperID integer; Declare Variable Comment VarChar(255); Declare Variable Dt Varchar(5); Declare Variable Kt Varchar(5); Declare Variable DateTyp integer; Declare Variable SumTyp integer; Declare Variable Storno Integer; Declare Variable OpID integer; Declare Variable AccnKey integer; Declare Variable ProcNDS Double Precision; Declare Variable Proc Double Precision; Declare Variable Dt1 integer; Declare Variable Kt1 integer; Declare Variable DtPrt integer; Declare Variable DtObj integer; Declare Variable KtPrt integer; Declare Variable KtObj integer; Declare Variable UserName varchar(20); Declare Variable Oper Integer; Declare Variable RealTyp integer; Declare Variable bSumma Double Precision; Declare Variable nProc Double Precision; Declare Variable DgvCurs Double Precision; Declare Variable DgvCSumma Double Precision; Declare Variable DgvCurrTyp integer; Declare Variable aCurs Double Precision; Declare Variable aCSumma Double Precision; Declare Variable aCurrTyp integer; Declare Variable DtCurrTyp integer; Declare Variable KtCurrTyp integer; Declare Variable DgvID integer; declare variable OurOrgnID Integer; declare variable dt8 integer; declare variable kt8 integer; declare variable dt9 integer; declare variable kt9 integer; declare variable VL1 integer; declare variable VL2 integer; begin for select dat_, nbr, summa, bSumma, Out_Date, NameID, OperID, Comment, SaleSumma,Username, DgvID, CurrTyp, Curs, cSumma, VL1, VL2 from dgvdtu where ID=:ID into :Dat_,:Nbr,:Summa,:bSumma,:Out_Date,:NameID,:OperID,:Comment, :SaleSumma,:UserName,:DgvID, :DgvCurrTyp, :DgvCurs, :DgvCSumma, :VL1, :VL2 do begin if(:OperID is null or :OperID=0) then exit; Select OurOrgnID from DgvDtUD where ID=:DgvID into :OurOrgnID; ProcNDS = 20.0; select cast(VAL as Double Precision) from SysConst where OurOrgnID=:OurOrgnID and name='ProcNDS' into :ProcNDS; for select ID,dt,kt,accndate,sumtyp,storno, DtPrt,DtObj,KtPrt,KtObj,Oper,Proc,RealTyp from storaccn where OperID=:OperID into :OpID,:Dt,:Kt,:DateTyp,:SumTyp,:Storno, :DtPrt,:DtObj,:KtPrt,:KtObj,:Oper,:Proc,:RealTyp do begin if (:SumTyp = 5) then execute procedure DgvDtU_GenAccnRecKrb(:ID, :OpID); else if (:DateTyp=0) then begin Dt1 = Null; Kt1 = Null; Select A1, a8, a9, CurrTyp from AccnPlan where Accn=:Dt into :Dt1, :dt8, :dt9, :DtCurrTyp; if (:Dt1 <> 0 and :Dt1 is not Null) then Dt1 = :NameID; else Dt1 = Null; Select A1, a8, a9, CurrTyp from AccnPlan where Accn=:Kt into :Kt1, :kt8, :kt9, :KtCurrTyp; if (:Kt1 <> 0 and :Kt1 is not Null) then Kt1 = :NameID; else Kt1 = Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; aSumma = 0.0; if (:SumTyp = 0) then aSumma=:Summa; if (:SumTyp = 1) then aSumma=:Summa * :ProcNDS / (100.0 + :ProcNDS); if (:SumTyp = 2) then aSumma=bSumma; if (:SumTyp = 3) then aSumma=:SaleSumma; if (:SumTyp = 4) then aSumma=:Summa-:SaleSumma; if (:RealTyp is not Null and :RealTyp <> 0) then begin Select Proc from GddDtUNL where DgvID = :DGVID and DTNLID = :REALTYP into :nProc; aSumma = :bSumma / 100.0 * :nProc; end if (:Proc is not Null and :Proc <> 0.0) then aSumma = :aSumma / 100.0 * :Proc; if (:Storno <> 0) then aSumma = -:aSumma; if (:aSumma <> 0.0 and :Out_Date is not Null) then begin aCurs = DgvCurs; aCurrTyp = DgvCurrTyp; aCSumma = DgvCSumma; if (:DtCurrTyp is Null and :KtCurrTyp is Null) then begin aCurs = 0.0; aCurrTyp = Null; aCSumma = 0.0; end AccnKey=Gen_ID(AccnProv_ID,1); insert into AccnProv (ID, OurOrgnID, Dat_, Dt, Kt, Summa, Document, Comment, Dt1, Kt1, DtPrt, DtObj, KtPrt, KtObj, UserName, dt8, dt9, kt8, Oper, OperID, DocID, Curs, CurrTyp, CSumma) values(:AccnKey, :OurOrgnID,:Out_Date,:Dt,:Kt,:aSumma,:Nbr, :Comment,:Dt1,:Kt1,:DtPrt,:DtObj,:KtPrt,:KtObj,:UserName, :dt8, :dt9, :kt8, :Oper,:OperID,:ID, :aCurs, :aCurrTyp, :aCSumma); Insert Into DgDUAccn(ID, DgvKey, AccnKey) Values(Gen_ID(DgDUAccn_ID,1), :ID, :AccnKey); end end else execute procedure DgvDtU_GenAccnRecSale :ID,:OpID; end end end^ ALTER PROCEDURE DGVDTU_GENACCNRECKRB ( ID INTEGER, OPID INTEGER) AS declare variable SumTyp integer; declare variable DateTyp integer; declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable Summa double precision; declare variable aDate TimeStamp; declare variable AccnProvID integer; declare variable FinRes integer; declare variable Nbr Dmn_Nbr; declare variable Comment Varchar(255); declare variable UserName varchar(20); declare variable OurOrgnID integer; declare variable Accn varchar(5); declare variable Storno integer; declare variable DgvID integer; declare variable d1 integer; declare variable d3 integer; declare variable k1 integer; declare variable k3 integer; declare variable d8 integer; declare variable k8 integer; declare variable d9 integer; declare variable k9 integer; declare variable dt1 integer; declare variable dt3 integer; declare variable kt1 integer; declare variable kt3 integer; declare variable dt8 integer; declare variable dt9 integer; Declare Variable kt8 Integer; Declare Variable kt9 Integer; declare variable Oper integer; declare variable OperID integer; declare variable NameID integer; declare variable PrsnID integer; Declare Variable VL1 Integer; Declare Variable VL2 Integer; DECLARE VARIABLE DTPRT INTEGER; DECLARE VARIABLE DTOBJ INTEGER; DECLARE VARIABLE KTPRT INTEGER; DECLARE VARIABLE KTOBJ INTEGER; begin select Nbr, Comment, UserName, DgvID, NameID, PrsnID, VL1, VL2 from DgvDtU where ID = :ID into :Nbr, :Comment, :UserName, :DgvID, :NameID, :PrsnID, :VL1, :VL2; select OurOrgnID from DgvDtUD where ID = :DgvID into :OurOrgnID; select Oper, OperID, SumTyp, AccnDate, Dt, Kt, FinRes, Storno, DtPrt, DtObj, KtPrt, KtObj from StorAccn where ID = :OpID into :Oper, :OperID, :SumTyp, :DateTyp, :Dt, :Kt, :FinRes, :Storno, :DtPrt, :DtObj, :KtPrt, :KtObj; for Select kDate, kDelta from DgvDtU_KrbSelect(:ID) into :aDate, :Summa do begin if (:Storno = 1) then Summa = -:Summa; if (:finRes = 0) then begin -- при отриц. сумме - обнулить if (:Summa < 0.0) then Summa = 0.0; end if (:FinRes = 2) then begin -- при отриц. сумме - поменять корреспонденцию if (:Summa < 0.0) then begin Summa = -:Summa; Accn = :Dt; Dt = :Kt; Kt = :Accn; end end if (:Summa <> 0.0) then begin select CoalEsce(a1, 0), CoalEsce(a3, 0), a8, a9 from accnplan where accn = :dt into :d1, :d3, :d8, :d9; select CoalEsce(a1, 0), CoalEsce(a3, 0), a8, a9 from accnplan where accn = :kt into :k1, :k3, :k8, :k9; dt1 = null; kt1 = null; dt3 = null; kt3 = null; dt8 = null; kt8 = null; dt9 = null; kt9 = null; if (:d1 <> 0) then dt1 = :NameID; if (:k1 <> 0) then kt1 = :NameID; if (:d3 <> 0) then dt3 = :PrsnID; if (:k3 <> 0) then kt3 = :PrsnID; if (:d8 is not Null) then dt8 = :VL1; if (:d9 is not Null) then dt9 = :VL2; if (:k8 is not Null) then kt8 = :VL1; if (:k9 is not Null) then kt9 = :VL2; AccnProvID = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, OurOrgnID, Dat_, Document, Comment, UserName, Dt, Kt, Summa, Oper, OperID, DocID, dt1, kt1, dt3, kt3, dt8, dt9, kt8, kt9, DtPrt, DtObj, KtPrt, KtObj) values(:AccnProvID, :OurOrgnID, :aDate, :Nbr, :Comment, :UserName, :Dt, :Kt, :Summa, :Oper, :OperID, :ID, :dt1, :kt1, :dt3, :kt3, :dt8, :dt9, :kt8, :kt9, :DtPrt, :DtObj, :KtPrt, :KtObj); insert into DgDuAccn(id, dgvkey, accnkey) values(Gen_ID(DgDuAccn_ID, 1), :ID, :AccnProvID); end end end^ ALTER PROCEDURE DGVDTU_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS Declare Variable Dt Varchar(5); Declare Variable Kt Varchar(5); Declare Variable DateTyp integer; Declare Variable SumTyp integer; Declare Variable Storno integer; Declare Variable sID integer; Declare Variable sDate Date; Declare Variable dDate Date; Declare Variable sNbr Dmn_Nbr; Declare Variable dNbr Dmn_Nbr; Declare Variable sComment Varchar(255); Declare Variable dComment Varchar(255); Declare Variable sNameID integer; Declare Variable dNameID integer; Declare Variable Dat Date; Declare Variable sSumma Double Precision; Declare Variable dSumma Double Precision; Declare Variable sCSumma Double Precision; Declare Variable dCSumma Double Precision; Declare Variable sCurs Double Precision; Declare Variable Nbr Dmn_Nbr; Declare Variable Comment Varchar(255); Declare Variable Summa Double Precision; Declare Variable ProcNDS Double Precision; Declare Variable AccnKey integer; Declare Variable UserName Varchar(20); Declare Variable Oper Integer; Declare Variable OperID integer; Declare Variable DtPrt Integer; Declare Variable DtObj Integer; Declare Variable KtPrt Integer; Declare Variable KtObj Integer; Declare Variable Dt1 Integer; Declare Variable Kt1 Integer; Declare Variable Proc Double Precision; declare variable DgvID integer; declare variable OurOrgnID integer; declare variable dt8 integer; declare variable kt8 integer; declare variable dt9 integer; declare variable kt9 integer; declare variable VL1 integer; declare variable VL2 integer; begin ProcNDS = 20.0; for select cast(val as Double Precision) from SysConst where name='ProcNDS' into :ProcNDS do ID=:ID; for select dt,kt,AccnDate,SumTyp,Storno,Oper, DtPrt,DtObj,KtPrt,KtObj,Proc from StorAccn where ID=:OpID into :Dt,:Kt,:DateTyp,:SumTyp,:Storno,:Oper, :DtPrt,:DtObj,:KtPrt,:KtObj,:Proc do begin Dat = Null; for select d.Nbr, d.Out_Date, d.Summa, d.NameID, s.ID, s.Dat_,s.Nbr, sc.Summa,s.NameID,d.username,d.OperID, s.CSumma, d.CSumma, s.Curs, DgvID, D.VL1, D.VL2 from DgvDtU d, SaleDUCr sc, Sale s where d.id=:ID and sc.DgvKey=:ID and s.ID=sc.SaleKey into :dNbr,:dDate,:dSumma,:dNameID, :sID,:sDate,:sNbr,:sSumma,:sNameID,:username,:OperID, :sCSumma, :dCSumma, :sCurs, :DgvID, :VL1, :VL2 do begin Select OurOrgnID from DgvDtUD where ID=:DgvID into :OurOrgnID; ProcNDS = 20.00; for select cast(val as Double Precision) from SysConst where OurOrgnID = :OurOrgnID and Name = 'ProcNDS' into :ProcNDS do ID=:ID; if (:DateTyp=1) then begin /* SaleDate */ Dat=:sDate; Nbr=:sNbr; Comment=:sComment; end if (:DateTyp=2) then begin /* SaleDate or Out_Date */ if (:dDate is Null or :dDate > :sDate) then begin Dat=:sDate; Nbr=:sNbr; Comment=:sComment; end else begin Dat=:dDate; Nbr=:dNbr; Comment=:dComment; end end if (:DateTyp=3 and :dDate is not null) then begin if(:dDate < :sDate) then begin Dat=:sDate; Nbr=:sNbr; Comment=:sComment; end else begin Dat=:dDate; Nbr=:dNbr; Comment=:dComment; end end Summa=0; if (:SumTyp=0) then Summa=:dSumma; if (:SumTyp=1) then Summa=:dSumma*:ProcNDS/(100+:ProcNDS); if (:SumTyp=2) then Summa=:dSumma-(:dSumma*:ProcNDS/(100+:ProcNDS)); if (:SumTyp=3) then Summa=:sSumma; if (:SumTyp=4) then Summa=:dSumma-:sSumma; if (:Dat is not null and :Summa <> 0.0) then begin Summa=:Summa*:sSumma / :dSumma; if (:Proc is not Null and :Proc <> 0.0) then Summa = :Summa / 100.0 * Proc; if (:Storno=1) then Summa = -:Summa; Dt1=Null; Kt1=Null; Select A1, a8, a9 from AccnPlan where Accn=:Dt into :Dt1, :dt8, :dt9; Select A1, a8, a9 from AccnPlan where Accn=:Kt into :Kt1, :kt8, :kt9; if(:Dt1 is not Null and :Dt1<>0) then Dt1=:dNameID; if(:Kt1 is not Null and :Kt1<>0) then Kt1=:dNameID; if(:dt8 is not Null) then dt8 = :VL1; if(:dt9 is not Null) then dt9 = :VL2; if(:kt8 is not Null) then kt8 = :VL1; if(:kt9 is not Null) then kt9 = :VL2; AccnKey=Gen_ID(AccnProv_ID,1); Insert into AccnProv(ID,OurOrgnID,Dat_,Dt,Kt,Summa,Document,Comment,UserName, Oper,OperID,DocID,DtPrt,DtObj,KtPrt,KtObj,Dt1,Kt1, dt8, dt9, kt8, kt9) Values(:AccnKey,:OurOrgnID,:Dat,:Dt,:Kt,:Summa,:Nbr,:Comment,:UserName, :Oper,:OperID,:ID,:DtPrt,:DtObj,:KtPrt,:KtObj,:Dt1,:Kt1, :dt8, :dt9, :kt8, :kt9); Insert into DgDUAccn (ID, DgvKey, AccnKey) Values(Gen_ID(DgDUAccn_ID,1),:ID,:AccnKey); end end end end^ ALTER PROCEDURE DGVDTU_KRBSELECT ( ID INTEGER) RETURNS ( KDATE TIMESTAMP, KSUMMA DOUBLE PRECISION, KDELTA DOUBLE PRECISION, KCURS DOUBLE PRECISION, CURS DOUBLE PRECISION) AS declare variable OutDate TimeStamp; declare variable cSumma double precision; declare variable dCurs double precision; declare variable sSumm double precision; declare variable sCurs double precision; declare variable CurrTyp integer; declare variable SaleID integer; declare variable KrbTyp integer; declare variable cSumm double precision; begin select Out_Date, cSumma, Curs, CurrTyp from DgvDtU where ID = :ID into :OutDate, :cSumma, :dCurs, :CurrTyp; if (:OutDate is Null) then exit; kCurs = :dCurs; Curs = :dCurs; for select eDate, cast(0 as integer) as Typ, cast(Null as integer) as ID, cast(Null as double precision) cSumm from f_Quarter_DataSet( (select DD.Out_Date from DgvDtU DD where DD.ID = :ID), cast(Current_Date as TimeStamp)) union select S.Dat_, cast(1 as integer) as Typ, S.ID, CR.cSumma from SaleDuCr CR, Sale S where Cr.DgvKey = :ID and S.ID = CR.SaleKey and S.Dat_ is not Null order by 1, 2, 3 into :kDate, :KrbTyp, :SaleID, :cSumm do begin select CoalEsce(Sum(Cr.cSumma), 0.0) from SaleDuCr Cr, Sale S where Cr.DgvKey = :ID and S.ID = Cr.SaleKey and S.Dat_ is not Null and S.Dat_ <= :kDate into :sSumm; -- сумма оплаты select Val from Currency_GetValue(:CurrTyp, :kDate) into :sCurs; if (:SaleID is not Null) then begin -- КР по оплате kSumma = cSumm; if (:kDate < :OutDate) then kSumma = 0.0; kDelta = cSumm * (:sCurs - :kCurs); if (Abs(:kSumma) > 1.0e-5) then begin Curs = :sCurs; suspend; end end else begin -- КР по границе квартала if (:kDate < :OutDate) then kSumma = -:sSumm; else kSumma = :cSumma - :sSumm; if (:kSumma < 0.0) then kSumma = 0.0; if (:kDate > Current_Date) then kSumma = 0.0; kDelta = :kSumma * (:sCurs-:kCurs); if (Abs(:kSumma) > 1.0e-5) then begin Curs = :sCurs; suspend; kCurs = sCurs; end end end end^ ALTER PROCEDURE DGVDTU_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(dgvdtu_id,1); end^ ALTER PROCEDURE DGVDTU_SALE ( ID INTEGER, SALEID INTEGER, SM DOUBLE PRECISION, USERNAME VARCHAR(20)) RETURNS ( CRID INTEGER) AS declare variable summa double precision; declare variable salesumma double precision; /* остаток оплаты */ declare variable summ double precision; declare variable saledate TimeStamp; declare variable CTyp integer; begin for select dat_, summ, CTyp from sale where id = :saleid into :saledate, :summ, :CTyp do begin if (:CTyp=1) then begin select CRID FROM DgvDtU_CSALE(:ID, :SaleID, :SM, :UserName) into :CRID; suspend; exit; end if(:sm>:summ)then sm=:summ; summ=:sm; for select salesumma, summa from dgvdtU where id=:id into :salesumma, :summa do begin if(:salesumma >= :summa) then exit; if(:summa-:salesumma < :summ) then summ=:summa-:salesumma; CrID = gen_id(SaleDuCr_id, 1); insert into SaleDuCr(id,dgvkey,salekey,summa, UserName) values(:CrID,:id,:saleid,:summ, :UserName); salesumma=:salesumma+:summ; if((:salesumma=:summa)) then update dgvdtU set saledate=:saledate, No_LastEdit=1 where ID=:ID; suspend; end end end^ ALTER PROCEDURE DGVDTUD_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(DgvDtUD_ID, 1); end^ ALTER PROCEDURE DGVEMPTTOREAL ( ID INTEGER, PART INTEGER = 1, OUTDATE TIMESTAMP = null) RETURNS ( DGVID INTEGER) AS declare variable DgvEID integer; declare variable EPrice Double Precision; declare variable ENds Double Precision; declare variable RQuant double precision; declare variable EGddKey integer; /* empt */ declare variable KGddKey integer; /* gddkt */ declare variable Stor integer; declare variable KQuant double precision; declare variable EQuant double precision; declare variable EPriceID integer; declare variable GdsKey integer; declare variable Q Double precision; declare variable CurOrgnID integer; declare variable DefOperID integer; Declare variable StorOperID integer; DECLARE VARIABLE DSC_REMO SMALLINT; declare variable SumQuant double precision; declare variable NeedQuant double precision; declare variable PartReserv integer; -- признак - частичный резерв declare variable RemZapID integer; declare variable SZID integer; declare variable SzGdsID integer; begin DgvID=Null; select ID, Stor, OperID, SC_Remo from DgvDt where ID=:ID and TYP=11 into :DgvEID, :Stor, :DefOperID, :DSC_Remo; if (:DgvEID is Null) then begin suspend; exit; end Select OurOrgnID, OperIDReal from StorList where ID=:Stor into :CurOrgnID, :StorOperID; if (:DefOperID is Null) then DefOperID = :StorOperID; if (:DefOperID is Null) then Select VAL from SysConst where OurOrgnID=:CurOrgnID and Name='DefOperCode_RealGood' into :DefOperID; if (:DefOperID=0) then DefOperID = Null; if (not exists (select ID from ACOPRLST where ID = :DefOperID)) then DefOperID = Null; DgvID=Gen_ID(DgvDt_ID, 1); -- ID новой накладной insert into DgvDt(ID, DAT_, NBR, TYP, STOR, NameID, Comment, RealTyp, ProcNds, NdsTyp, PrsnID, Manager, PodrID, OperID, UserName, SaleForm, SaleCond, NNbr, RNbr, DNbr, DPrsn, NDate, DDate, DDoc, OurAccnID, AccnOrgID, DCrdNbr, OrgnInfoID, TRDPID, CSDTKTHBID, TRANSFER, VL1, VL2, State, Code, EgRnn, --RoundNds, TransOrgnID, TransDocNbr, Driver_Name, KnnNbr, KnnDate, KEgRnn, BonusProc, StorMod, StorOut, StorSub, KUserID, KLastEdit, SZID) Select :DgvID, DAT_, Nbr, 0, STOR, NameID, Comment, RealTyp, ProcNds, NdsTyp, PrsnID, Manager, PodrID, :DefOperID, UserName, SaleForm, SaleCond, NNbr, RNbr, DNbr, DPrsn, NDate, DDate, DDoc, OurAccnID, AccnOrgID, DCrdNbr, OrgnInfoID, TRDPID, CSDTKTHBID, TRANSFER, VL1, VL2, State, Code, EgRnn, --RoundNds, TransOrgnID, TransDocNbr, Driver_Name, KnnNbr, KnnDate, KEgRnn, BonusProc, StorMod, StorOut, StorSub, KUserID, KLastEdit, SZID from DgvDt where ID=:ID; -- Перепривязка задачи на доставку update DgvDt_Task set DgvDtID=:DgvID where DgvDtID=:ID; if (not Exists(Select D1.ID from GddDt D, GddDt D1 where D.DgvKey = :DgvEID and D1.GddID = D.ID)) then begin -- копирование услуг insert into GddDtDDU (DGVKEY, NAMEID, QUANT, PRICE, NDS, TPRICE) select :DgvID, NameID, Quant, Price, Nds, TPrice from GddDtDDU where DgvKey = :DgvEID; update sc_remo set Dgvkey=:DgvID where Dgvkey=:DgvEID; end PartReserv = 0; for select ID, GdsKey, Quant, Price, Nds, PriceID, RemZapID, SzGdsID from GddDt where DgvKey=:ID and Quant > 0 order By ID into :EGddKey, :GdsKey, :EQuant, :EPrice, :ENds, :EPriceID, :RemZapID, :SzGdsID do begin/* empt */ SumQuant = 0; -- сколько будет отпускаться NeedQuant = :EQuant; for select K.ID, K.Quant from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor=:STOR and K.ID=Q.ID and KK.ID=K.DgvKey and K.GdsKey=:GdsKey Order by KK.DAT_, KK.ID, K.ID into :KGddKey, :KQuant do begin /* EQuant - резервируемое количество (сколько нужно) */ /* KQuant - количество в наличие (партия) */ /* RQuant - резерв (реально отпускаемое) */ if (:EQuant > 0) then begin/* зарезервировано не все */ RQuant=0; if (:EQuant > :KQuant) then begin RQuant = :KQuant; EQuant = :EQuant-:KQuant; end else if (:EQuant<=:KQuant) then begin RQuant = :EQuant; EQuant = 0; end if (:RQuant > 0) then begin insert into GddDt(ID, DgvKey, GddKey, GddID, Quant, Price, Nds, PriceN, PriceID, RemZapID, SzGdsID) values(Gen_ID(GddDt_ID, 1), :DgvID, :KGddKey, :EGddKey, :RQuant, :EPrice, :ENds, (:EPrice-:ENds), :EPriceID, :RemZapID, :SzGdsID); SumQuant = :SumQuant + :RQuant; end end end if (Abs(:NeedQuant-:SumQuant) > 1.0e-5) then PartReserv = 1; end Select Sum(Quant) from GddDt where DgvKey = :ID into :Q; if (:Q*:Q < 1.0e-10) then -- Delete from DgvDt where ID=:ID; else Update DgvDt Set SC_Remo = Null where ID=:ID; if (:PART=0 and :PartReserv=1) then begin delete from DgvDt where ID=:DgvID; DgvID = Null; end else begin Update DgvDt Set Summa=Summa where ID=:DgvID; if (:OutDate is not Null) then Update DgvDt Set OUT_DATE=CAST(:OUTDATE AS DATE) where ID=:DgvID; end Suspend; end^ ALTER PROCEDURE DGVKT_CRECALC ( ID INTEGER) AS declare variable i integer; begin for Select KID from DgvKt_CReCalc1(:ID, Null) into :i do i = 0; end^ ALTER PROCEDURE DGVKT_CRECALC1 ( ID INTEGER, TRNTYP INTEGER = null) RETURNS ( KID INTEGER, QUANT DOUBLE PRECISION, TRNGTYP INTEGER, FKTPRICE DOUBLE PRECISION, TRNPRICE DOUBLE PRECISION, INPPRICE DOUBLE PRECISION, TAMPRICE DOUBLE PRECISION, POSPRICE DOUBLE PRECISION, TSBPRICE DOUBLE PRECISION, PROPRICE DOUBLE PRECISION, BAKPRICE DOUBLE PRECISION, AKCPRICE DOUBLE PRECISION, BNDPRICE DOUBLE PRECISION, NDSPRICE DOUBLE PRECISION, UPGPRICE DOUBLE PRECISION, UNGPRICE DOUBLE PRECISION, VHNPRICE DOUBLE PRECISION, VHDPRICE DOUBLE PRECISION, VHPPRICE DOUBLE PRECISION, TRNSSUMM DOUBLE PRECISION, TRNG DOUBLE PRECISION, NDSG DOUBLE PRECISION) AS declare variable DID integer; declare variable TYP integer; declare variable DCURRTYP integer; declare variable DCURS double precision; declare variable SCURS double precision; declare variable CCURS double precision; declare variable DDATE date; declare variable SDATE date; declare variable SUMQNT double precision; declare variable SUMKPR double precision; declare variable SUMWGT double precision; declare variable ATRNS double precision; declare variable cTRNS double precision; declare variable ATRNG double precision; declare variable ANDSG double precision; declare variable NDSPROC double precision; declare variable POSPROC double precision; declare variable PROSUMM double precision; declare variable TSBPROC double precision; declare variable GW double precision; declare variable CRID integer; declare variable CRSUMMA double precision; declare variable NAMEID integer; declare variable uOrgnID integer; declare variable TPRICETYP integer; declare variable SPRICE double precision; declare variable AKCPROC double precision; declare variable TSBSUMM double precision; declare variable SUMTPR double precision; declare variable TPRICE double precision; begin Select ID, Dat_, Typ, CurrTyp, Curs, Trns * Curs, Trng, TNds, TrngTyp, Tamp * Curs, Tams, TamsG, NameID, TPriceTyp from DgvKt where ID=:ID into :DID, :dDate, :Typ, :dCurrTyp, :dCurs, :TrnsSumm, :Trng, :Ndsg, :TrngTyp, :ProSumm, :TsbProc, :TsbSumm, :NameID, :TPriceTyp; if ((:DID is null) or (:Typ <> 5) or (:dCurrTyp is null)) then exit; if (not exists (select ID from GddKt where DgvKey = :ID)) then exit; if (:TrnTyp is not Null) then TrngTyp = :TrnTyp; update GddKt Set Source = 1.0 where DgvKey = :ID and (Source = 0.0 or Source is Null); update GddKt Set Gw = 1.0 where DgvKey = :ID and (Gw = 0.0 or Gw is Null); -- чистая себестоимость товара, общее количество, вес брутто Select Sum(K.Source*K.TPrice), Sum(K.Source), Sum(K.Source*K.Gw) from GddKt K where DgvKey=:ID into :SumTpr, -- обшая фактурная стоимость ($) :SumQnt, -- общее количество :SumWgt; -- общий вес брутто -- Trns - сумма всех услуг до границы - $ / грн. Select CoalEsce(Sum(U.Quant*U.TPrice), 0.0), CoalEsce(Sum(U.Quant*U.Price), 0.0) from GddKtDDU U where U.DgvKey = :DID and CoalEsce(U.Typ, 0) = 0 into :cTrns, :aTrns; cTrns = CoalEsce(:cTrns, 0.0); if (:aTrns is Null) then aTrns = 0.0; ----------------------------------------------------------- aTrns = 0.0; for select u.ID, u.TPrice, U.Quant, U.Price, u.OrgnID from GddKtDDU U where U.DgvKey = :ID and CoalEsce(U.Typ, 0) = 0 into :KID, :TPrice, :Quant, :sPrice, :uOrgnID do begin cCurs = :dCurs; if (:TPrice <> 0.0) then begin sPrice = 0.0; -- оплаты for Select C.ID, C.CSumma, S.SaleDate, S.Curs from SaleKtCr C left join SaleKt S on S.ID=C.SaleKey where C.DgvKey = :DID and S.SaleDate is not null into :CrID, :CrSumma, :sDate, :sCurs do begin cCurs = :dCurs; if (:uOrgnID=:NameID or :uOrgnID is null) then begin if (:sDate < :dDate) then cCurs = :sCurs; else cCurs=:dCurs; end if (:SumTpr + :cTrns <> 0.0) then sPrice = :sPrice + :TPrice * :cCurs / (:SumTpr + :cTrns) * :CrSumma; end -- остаток недоплаты (по курсу накладной) for Select Cast(Null as Integer), KK.CSumma-KK.SCSUMMA, KK.DAT_, KK.Curs from DgvKt KK where KK.ID=:DID and ((KK.CSumma-KK.SCSumma) > 0.0) into :CrID, :CrSumma, :sDate, :sCurs do begin cCurs = :dCurs; if (:SumTpr + :cTrns <> 0.0) then sPrice = :sPrice + (:TPrice * :cCurs) / (:SumTpr + :cTrns) * (:CrSumma); end end -- :TPrice <> 0.0 aTrns = :aTrns + :sPrice * :Quant; end ----------------------------------------------------------- if (:aTrns <> 0.0) then TrnsSumm = :aTrns; -- Trng, Ndsg - сумма всех услуг после границы - грн. Select Sum(U.Quant*U.Price), Sum(U.Quant*U.Nds) from GddKtDDU U where U.DgvKey = :DID and CoalEsce(U.Typ, 0) = 1 into :aTrng, :aNdsg; if (:aTrng is Null) then aTrng = 0.0; if (:aNdsg is Null) then aNdsg = 0.0; if (:aTrng <> 0.0) then begin Trng = :aTrng; Ndsg = :aNdsg; end if (:TPriceTyp = 0) then begin -- таможенная стоимость = фактурная стоимость + услуги до границы for select ID, TPrice, Source, Gw from GddKt where DgvKey = :ID into :KID, :TPrice, :Quant, :Gw do begin TamPrice = :TPrice; if (:TrngTyp = 0) then begin -- пропорционально весу брутто if (:SumWgt <> 0.0) then TamPrice = :TPrice + :TrnsSumm /:dCurs / :SumWgt * :Gw; end if (:TrngTyp = 1) then begin -- пропорционально фактурной стоимости if (:SumTpr <> 0.0) then TamPrice = :TPrice + :TrnsSumm /:dCurs/ :SumTpr * :Tprice; end if (:TrngTyp = 2) then begin -- пропорционально количеству if (:SumQnt <> 0.0) then TamPrice = :TPrice + :TrnsSumm /:dCurs/ :SumQnt; end update GddKt set sPrice = :TamPrice where ID = :KID and sPrice <> :TamPrice; end end -- общая сумма - таможенная стоимость Select Sum(K.SPrice * K.Source) from GddKt K where K.DgvKey = :ID into :SumKpr; if (:SumKpr is Null) then SumKpr = 0.0; -- общая сумма - таможенный сбор if (:TsbProc <> 0.0) then TsbSumm = :SumKpr * :dCurs / 100.00 * :TsbProc; for Select ID, Source, TPrice, sPrice, Gw, NdsProc, Tamp, AkcizProc from GddKt where DgvKey=:DID into :KID, :Quant, :TPrice, :sPrice, :Gw, :NdsProc, :PosProc, :AkcProc do begin InpPrice = 0.0; -- фактурная стоимость с учетом предоплат (грн.) for Select C.ID, C.CSumma, S.SaleDate, S.Curs from SaleKtCr C left join SaleKt S on S.ID=C.SaleKey where C.DgvKey = :DID and S.SaleDate is not null into :CrID, :CrSumma, :sDate, :sCurs do begin if (:sDate < :dDate) then cCurs = :sCurs; else cCurs=:dCurs; InpPrice = :InpPrice + (:TPrice * :cCurs) / (:SumTpr + :cTrns) * :CrSumma; end for Select Cast(Null as Integer), KK.CSumma-KK.SCSUMMA, KK.DAT_, KK.Curs from DgvKt KK where KK.ID=:DID and ((KK.CSumma-KK.SCSumma) > 0.0) into :CrID, :CrSumma, :sDate, :sCurs do begin if (:sDate < :dDate) then cCurs = :sCurs; else cCurs=:dCurs; if (:SumTpr <> 0.0) then InpPrice = :InpPrice + (:TPrice * :cCurs) / (:SumTpr + :cTrns) * (:CrSumma); end FktPrice = :TPrice * :dCurs; -- Услуги до границы if (:TrngTyp = 0) then TrnPrice = :TrnsSumm / :SumWgt * :Gw; if (:TrngTyp = 1) then TrnPrice = :TrnsSumm / :SumTpr * :TPrice; if (:TrngTyp = 2) then TrnPrice = :TrnsSumm / :SumQnt; -- Таможенная стоимость if (:TPriceTyp = 0) then TamPrice = :FktPrice + :TrnPrice; else TamPrice = :sPrice * :dCurs; -- Таможенные процедуры / сбор if (:TrngTyp = 0) then begin -- по весу брутто ProPrice = :ProSumm / :SumWgt * :Gw; TsbPrice = :TsbSumm / :SumWgt * :Gw; end if (:TrngTyp = 1) then begin -- по цене ProPrice = :ProSumm / :SumTpr * :TPrice; TsbPrice = :TsbSumm / :SumTpr * :TPrice; end if (:TrngTyp = 2) then begin -- по количеству ProPrice = :ProSumm / :SumQnt; TsbPrice = :TsbSumm / :SumQnt; end -- Таможенная пошлина PosPrice = (:TamPrice) / 100.00 * :PosProc; BakPrice = :TamPrice + :PosPrice; AkcPrice = :BakPrice / 100.00 * :AkcProc; -- База НДС по товару BndPrice = :BakPrice + :AkcPrice; -- НДС по товару NdsPrice = :BndPrice / 100.00 * :NdsProc; -- НДС по услугам внутри страны if (:TrngTyp=0) then begin -- проционально весу брутто UpgPrice = (:Trng-:Ndsg) / :SumWgt * :Gw; UngPrice = :Ndsg / :SumWgt * :Gw; end if (:TrngTyp=1) then begin -- пропорционально стоимости UpgPrice = (:Trng-:Ndsg) / :SumTpr * :TPrice; UngPrice = :Ndsg / :SumTpr * :TPrice; end if (:TrngTyp=2) then begin -- пропорционально количеству UpgPrice = (:Trng-:Ndsg) / :SumQnt; UngPrice = :Ndsg / :SumQnt; end -- Входная цена без НДС VhnPrice = :InpPrice + :PosPrice -- таможенные пошлины + :TsbPrice -- таможенный сбор + :ProPrice -- таможенные процедуры + :UpgPrice -- услуги после границы + :TrnPrice; -- услуги до границы -- VhnPrice = :BndPrice + :UpgPrice; -- Входной НДС VhdPrice = :NdsPrice + :UngPrice; -- Цена с НДС VhpPrice = :VhnPrice + VhdPrice + :AkcPrice; Update GddKt Set PriceNs = :VhnPrice, Nds = :VhdPrice, Price = :VhpPrice, Akciz = :AkcPrice, KPrice = :VhpPrice, KNds = :VhdPrice where ID=:KID and ((PriceNs <> :VhnPrice) or (Nds <> :VhdPrice) or (Price <> :VhpPrice) or (Akciz = :AkcPrice) or (KPrice <> :VhpPrice) or (KNds <> :VhdPrice) ); suspend; end Update DgvKt set Summa = Summa, No_LastEdit=1 where ID = :ID; end^ ALTER PROCEDURE DGVKT_CRECALC2 ( ID INTEGER) AS declare variable DID integer; declare variable Typ integer; declare variable dCurrTyp integer; /* Курс валюты - в накладной */ declare variable dCurs Double Precision; /* Курс валюты - в оплате */ declare variable sCurs Double Precision; /* Курс валюты - расчетный */ declare variable cCurs Double Precision; /* Дата поставки */ declare variable dDate Date; /* Дата оплаты */ declare variable sDate Date; /* Количество итого */ declare variable SumQnt Double Precision; /* Сумма итого $ (в ценах поставщика) */ declare variable SumTpr Double Precision; /* Вес итого (брутто) */ declare variable SumWgt Double Precision; /* Услуги до границы - $ */ declare variable Trns Double Precision; declare variable aTrns Double Precision; /* Услуги (Сумма) - в нац. валюте */ declare variable Trng Double Precision; declare variable aTrng Double Precision; /* Услуги (НДС) - в нац. валюте */ declare variable Ndsg Double Precision; declare variable aNdsg Double Precision; /* ставка НДС (%) по позиции товара */ declare variable NdsProc Double Precision; /* Таможенная пошлина (%) по позиции товара */ declare variable Tamp Double Precision; /* Таможенные процедуры - $ */ declare variable dTamp Double Precision; /* Таможенные сбор - % */ declare variable dTams Double Precision; declare variable Quant Double Precision; declare variable TPrice Double Precision; declare variable Gw double Precision; declare variable KID integer; declare variable TrngTyp integer; declare variable CrID integer; declare variable CrSumma Double Precision; declare variable Price Double Precision; /* цена поставщика пересчитанная по курсу оплаты */ declare variable InpPrice Double Precision; /* цена поставщика пересчитанная по курсу в накладной */ declare variable FktPrice Double Precision; /* Услуги $ на ед. */ declare variable TrnPrice Double Precision; /* таможенная стоимость */ declare variable TamPrice Double Precision; /* таможенная пошлина */ declare variable TpsPrice Double Precision; /* таможенные процедуры */ declare variable TprPrice Double Precision; /* таможенный сбор */ declare variable TsbPrice Double Precision; /* база НДС */ declare variable BndPrice Double Precision; /* НДС товара */ declare variable NdsPrice Double Precision; /* вх. стоимость */ declare variable NonPrice Double Precision; /* услуги - грн */ declare variable UpgPrice Double Precision; /* НДС по услугам - грн */ declare variable UngPrice Double Precision; /* База акциза */ declare variable BakPrice Double Precision; /* Акциз */ declare variable AkcPrice Double Precision; declare variable UCSumma double precision; declare variable NameID integer; begin Select ID, Dat_, Typ, CurrTyp, Curs, Trns, Trng, TNds, TrngTyp, Tamp, Tams, NameID from DgvKt where ID=:ID into :DID, :dDate, :Typ, :dCurrTyp, :dCurs, :Trns, :Trng, :Ndsg, :TrngTyp, :dTamp, :dTams, :NameID; if ((:DID is null) or (:Typ <> 5) or (:dCurrTyp is null)) then exit; /* чистая себестоимость товара, общее количество, вес брутто */ Select Sum(K.Source*K.TPrice), Sum(K.Source), Sum(K.Source*K.Gw) from GddKt K where DgvKey=:DID into :SumTpr, :SumQnt, :SumWgt; /* сумма услуг поставщика */ Select Sum(U.Quant*U.TPrice) from GddKtDDU U where U.DgvKey = :DID and (U.OrgnID is Null or U.OrgnID=:NameID) into :UCSumma; if (:UCSumma is Null) then UCSumma = 0.0; SumTpr = :SumTpr + :UCSumma; /* сумма всех услуг - $ */ Select Sum(U.Quant*U.TPrice) from GddKtDDU U where U.DgvKey = :DID and (U.TPrice <> 0.0) into :aTrns; if (:aTrns is Null) then aTrns = 0.0; if (:aTrns <> 0.0) then Trns = :aTrns; /* сумма всех услуг - нац. валюта */ Select Sum(U.Quant*U.Price), Sum(U.Quant*U.Nds) from GddKtDDU U where U.DgvKey = :DID and (U.TPrice = 0.0) and (U.Price <> 0.0) into :aTrng, :aNdsg; if (:aTrng is Null) then aTrng = 0.0; if (:aNdsg is Null) then aNdsg = 0.0; if (:aTrng <> 0.0) then begin Trng = :aTrng; Ndsg = :aNdsg; end for Select ID, Source, TPrice, Gw, NdsProc, Tamp from GddKt where DgvKey=:DID into :KID, :Quant, :TPrice, :Gw, :NdsProc, :Tamp do begin InpPrice = 0.0; for Select C.ID, C.CSumma, S.SaleDate, S.Curs /* цикл по оплатам */ from SaleKtCr C, SaleKt S where C.DgvKey = :DID and S.ID=C.SaleKey and S.SaleDate is not null Union All/* + */ Select Cast(Null as Integer), KK.CSumma-KK.SCSUMMA, KK.DAT_, KK.Curs /* остаток неоплаченной суммы */ from DgvKt KK where KK.ID=:DID and ((KK.CSumma-KK.SCSumma) > 0.0) into :CrID, :CrSumma, :sDate, :sCurs do begin if (:sDate < :dDate) then cCurs = :sCurs; else cCurs=:dCurs; /* цена поставщика - фактурная стоимость */ InpPrice = :InpPrice + (:TPrice * :cCurs)/:SumTpr*:CrSumma; end FktPrice = :TPrice * :dCurs; /* Услуги - $ */ TrnPrice = :Trns * :dCurs/ :SumWgt * :Gw; /* Таможенная стоимость */ TamPrice = :InpPrice + :TrnPrice; /* Таможенные процедуры */ TprPrice = (:dTamp * :dCurs) / :SumWgt * :Gw; /* Таможенный сбор */ TsbPrice = (:FktPrice+:TrnPrice) / 100 * :dTams; /* Таможенная пошлина */ TpsPrice = (:FktPrice+:TrnPrice) / 100 * :Tamp; BakPrice = 0.0; AkcPrice = 0.0; /* База НДС */ BndPrice = (:FktPrice+:TrnPrice) + :TpsPrice; /* НДС */ NdsPrice = :BndPrice / 100 * :NdsProc; /* входная стоимость без услуг внутри страны */ NonPrice = :TamPrice + :TPrPrice + :TsbPrice + :TPsPrice; /* услуги внутренние */ /* НДС по услугам внутри страны */ if (:TrngTyp=1) then begin /* пропорционально стоимости */ UpgPrice = (:Trng-:Ndsg) / :SumTpr * :TPrice; UngPrice = :Ndsg / :SumTpr * :TPrice; end else if (:TrngTyp=2) then begin /* пропорционально количеству */ UpgPrice = (:Trng-:Ndsg) / :SumQnt/* * :Quant*/; UngPrice = :Ndsg / :SumQnt/* * :Quant*/; end else /* проционально весу брутто */ /* if (:TrngTyp=0) then */ begin UpgPrice = (:Trng-:Ndsg) / :SumWgt * :Gw; UngPrice = :Ndsg / :SumWgt * :Gw; end Update GddKt Set PriceNs = :NonPrice + :UpgPrice, Nds = :NdsPrice+:UngPrice, Price = :NonPrice + :UpgPrice + :NdsPrice+:UngPrice, Akciz = :AkcPrice, KPrice = :NonPrice + :UpgPrice + :NdsPrice+:UngPrice, KNds = :NdsPrice+:UngPrice where ID=:KID and ( (PriceNs <> :NonPrice + :UpgPrice) or (Nds <> :NdsPrice+:UngPrice) or (Price <> :NonPrice + :UpgPrice + :NdsPrice+:UngPrice)or (Akciz = :AkcPrice)); end Update DgvKt set Summa=Summa, No_LastEdit=1 where ID=:DID; end^ ALTER PROCEDURE DGVKT_DELACCNREC ( ID INTEGER) AS begin delete from dgktaccn where dgvkey=:id; end^ ALTER PROCEDURE DGVKT_GENACCN AS declare variable id integer; declare variable OperID integer; begin for select id, OperID from dgvkt into :id, :OperID do begin execute procedure dgvkt_delaccnrec :id; if (:OperID is not Null) then execute procedure dgvkt_genaccnrec :ID; end end^ ALTER PROCEDURE DGVKT_GENACCNREC ( ID INTEGER) AS DECLARE VARIABLE STOR INTEGER; DECLARE VARIABLE STORID INTEGER; DECLARE VARIABLE TYP INTEGER; DECLARE VARIABLE DT VARCHAR(5); DECLARE VARIABLE KT VARCHAR(5); DECLARE VARIABLE REC_ID INTEGER; DECLARE VARIABLE SUMTYP INTEGER; DECLARE VARIABLE COMMENT VARCHAR(255); DECLARE VARIABLE DCOMMENT VARCHAR(255); DECLARE VARIABLE PCOMMENT VARCHAR(255); DECLARE VARIABLE DAT_ TimeStamp; DECLARE VARIABLE NBR Dmn_Nbr; DECLARE VARIABLE SUMMA DOUBLE PRECISION; DECLARE VARIABLE STORNO INTEGER; DECLARE VARIABLE NAMEID INTEGER; DECLARE VARIABLE PRSNID INTEGER; DECLARE VARIABLE USERNAME VARCHAR(20); DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE D1 INTEGER; DECLARE VARIABLE D3 INTEGER; DECLARE VARIABLE D4 INTEGER; DECLARE VARIABLE K1 INTEGER; DECLARE VARIABLE K3 INTEGER; DECLARE VARIABLE K4 INTEGER; DECLARE VARIABLE D_1 INTEGER; DECLARE VARIABLE D_3 INTEGER; DECLARE VARIABLE D_4 INTEGER; DECLARE VARIABLE K_1 INTEGER; DECLARE VARIABLE K_3 INTEGER; DECLARE VARIABLE K_4 INTEGER; DECLARE VARIABLE d8 INTEGER; DECLARE VARIABLE d9 INTEGER; DECLARE VARIABLE k8 INTEGER; DECLARE VARIABLE k9 INTEGER; DECLARE VARIABLE dt8 INTEGER; DECLARE VARIABLE dt9 INTEGER; DECLARE VARIABLE kt8 INTEGER; DECLARE VARIABLE kt9 INTEGER; DECLARE VARIABLE VL1 INTEGER; DECLARE VARIABLE VL2 INTEGER; DECLARE VARIABLE DATETYP INTEGER; DECLARE VARIABLE DGVKEY INTEGER; DECLARE VARIABLE DTPRT INTEGER; DECLARE VARIABLE DTOBJ INTEGER; DECLARE VARIABLE KTPRT INTEGER; DECLARE VARIABLE KTOBJ INTEGER; DECLARE VARIABLE SALEDATE TimeStamp; DECLARE VARIABLE OPID INTEGER; DECLARE VARIABLE OPERID INTEGER; DECLARE VARIABLE OPER INTEGER; DECLARE VARIABLE TSUMMA DOUBLE PRECISION; DECLARE VARIABLE TPRICE DOUBLE PRECISION; DECLARE VARIABLE SUMGW DOUBLE PRECISION; DECLARE VARIABLE TAMP1 DOUBLE PRECISION; DECLARE VARIABLE TAMPPROC DOUBLE PRECISION; DECLARE VARIABLE GW DOUBLE PRECISION; DECLARE VARIABLE TRNS DOUBLE PRECISION; DECLARE VARIABLE TNDS DOUBLE PRECISION; DECLARE VARIABLE TORGNID INTEGER; DECLARE VARIABLE SUMNDS DOUBLE PRECISION; DECLARE VARIABLE SUMAKCIZ DOUBLE PRECISION; DECLARE VARIABLE ACURRTYP INTEGER; DECLARE VARIABLE DTCURRTYP INTEGER; DECLARE VARIABLE KTCURRTYP INTEGER; DECLARE VARIABLE ACURS DOUBLE PRECISION; DECLARE VARIABLE ACSUMMA DOUBLE PRECISION; DECLARE VARIABLE OURORGNID INTEGER; declare variable dDate TimeStamp; declare variable sDate TimeStamp; declare variable dCurs Double Precision; declare variable sCurs Double Precision; declare variable dCurrTyp integer; declare variable CrID integer; declare variable crSumma Double Precision; declare variable Proc Double Precision; declare variable FinRes Integer; /* тип - склад-получатель (текущий склад) */ Declare variable Stor1Typ integer; /* тип - склад-источник */ Declare variable Stor2Typ integer; Declare variable DtA integer; Declare variable KtA integer; -- таможенная пошлина DECLARE VARIABLE TAMP DOUBLE PRECISION; -- таможенные процедуры declare variable TamPr double precision; -- таможенный сбор declare variable TamSb double precision; declare variable TamSbProc double precision; -- таможенная стоимость declare variable sSumma double precision; declare variable sPrice double precision; -- 0 - таможенная стоимость = фактурная + услуги -- 1 - таможенная стоимость задается вручную declare variable TPriceTyp integer; begin acSumma = 0.0; aCurrTyp = Null; aCurs = 0.0; for select dat_, saledate, nbr, nameid, stor, StorID, Typ, username,dgvkey,OperID,PrsnID,Comment, Trns, TNds, TOrgnID, CurrTyp, Curs, VL1, VL2, TPriceTyp from DgvKt where ID = :ID and OperID is not Null into :Dat_, :SaleDate, :Nbr, :NameID, :Stor, :StorID, :Typ, :UserName, :DgvKey, :OperID, :PrsnID, :dComment, :Trns, :TNds, :TOrgnID, :dCurrTyp, :dCurs, :VL1, :VL2, :TPriceTyp do begin if (:SumTyp in (28, 29)) then begin -- проводки по услугам с аналитикой по контрагентам exit; end Select OurOrgnID, Typ from StorList where ID=:Stor into :OurOrgnID, :Stor1Typ; Select Typ from StorList where ID = :StorID into :Stor2Typ; if (:Typ=0 or :Typ=2 or :Typ=4 or :Typ=5) then begin for select id,dt,kt,sumtyp,comment,storno,Oper, dtprt,dtobj,ktprt,ktobj,accndate, Proc, FinRes, DtA, KtA from storaccn where OperID=:OperID into :opid,:dt,:kt,:sumtyp,:pComment,:storno,:Oper, :dtprt,:dtobj,:ktprt,:ktobj,:datetyp, :Proc, :FinRes, :DtA, :KtA do begin aCurs = :dCurs; aCurrTyp = :dCurrTyp; Comment=:dComment; if(:Comment is null or :Comment='') then Comment=:pComment; summa=0.0; /* Входная цена с НДС */ if(:sumtyp=0) then begin if (:Stor1Typ = 1 and :Typ = 2) then begin /* товар в рознице */ /* возврат заказчиком на розничный склад */ select sum(Source* kPrice) from gddkt where dgvkey = :ID into :Summa; end else begin select sum(Source*Price) from gddkt where dgvkey = :ID into :Summa; end end /* Входной НДС */ if(:sumtyp=1) then begin if (:Stor1Typ = 1 and :Typ = 2) then begin /* товар в рознице */ /* возврат заказчиком на розничный склад */ select sum(source * kNds) from gddkt where dgvkey=:ID into :summa; end else begin select sum(source * Nds) from gddkt where dgvkey=:ID into :summa; end end /* НДС реализации */ if(:sumtyp=2) then for select sum(k.source*d.nds) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id into :summa do id=:id; /* НДС с торговой надбавки */ if(:sumtyp=3)then for select sum(k.source*(d.price-k.price)* dd.procnds/(100.0+dd.procnds)) from gddkt k,gdddt d,dgvdt dd where k.dgvkey=:id and k.gddkey=d.id and dd.id=d.dgvkey into :summa do id=:id; /* Торговая надбавка */ if(:sumtyp=4)then begin if (:Stor1Typ = 1 and :Typ = 2) then begin /* товар в рознице */ /* возврат заказчиком на розничный склад */ select sum(k.source*(d.price-k.Price)) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id and (D.Price > K.Price) into :Summa; if (:Summa is Null) then Summa = 0.0; end else begin select sum(k.source*(d.price-k.price)) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id and (d.Price > K.Price) into :Summa; if (:Summa is Null) then Summa = 0.0; end end /* Сумма реализации */ if(:sumtyp=5)then begin select sum(d.price*k.source) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id into :summa; end /* Входная цена без НДС */ if(:sumtyp=6)then begin if (:Stor1Typ = 1 and :Typ = 2) then begin /* товар в рознице */ /* возврат заказчиком на розничный склад */ select sum(source*(kPrice-kNds)) from gddkt where dgvkey=:ID into :summa; end else begin select sum(source*(price-nds)) from gddkt where dgvkey=:ID into :summa; end end /* Убыток при реализации */ if(:sumtyp=7) then begin if (:Stor1Typ = 1 and :Typ = 2) then begin /* товар в рознице */ /* возврат заказчиком на розничный склад */ select sum(k.source*(k.Price-d.price)) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id and (K.Price > D.Price) into :Summa; if (:Summa is Null) then Summa = 0.0; end else begin select sum(K.Source*(K.Price-D.Price)) from gddkt K, gdddt D where k.dgvkey=:id and k.gddkey=D.ID and (K.Price > D.Price) into :Summa; if (:Summa is Null) then Summa = 0.0; end end /* Сумма оплаты */ if(:sumtyp=8) then begin execute procedure dgvkt_genaccnrecsale :id, :opid; Summa=0; end /* Сумма реализации без НДС (возврат товара) */ if(:SumTyp=10) then begin select sum((d.price-d.nds)*k.source) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id into :summa; end if (:SumTyp in (11,12,13,28,29)) then begin Execute procedure DgvKt_GenAccnRecU :ID, :OpID; end if (:SumTyp=15) then begin -- Там. ст-ть (товар) / Фактурная Summa = 0.0; acSumma = 0.0; for Select C.ID, c.CSumma, S.SaleDate, s.Curs, KK.Dat_, KK.Curs from DgvKt KK, SaleKtCr C, SaleKt S where KK.ID=:ID and C.DgvKey=KK.ID and S.ID=C.SaleKey union Select Cast(Null as Integer), KK.cSumma-KK.scSumma, Cast(Null as TimeStamp), Cast(Null as Double Precision), KK.Dat_, KK.Curs from DgvKt KK where ID=:ID into :CrID, :CrSumma, :sDate, :sCurs, :dDate, :dCurs do begin acSumma = acSumma + crSumma; if (:CrID is Null) then begin Summa = :Summa + :CrSumma * :dCurs; end else begin if (:sDate < :dDate) then Summa = :Summa + :CrSumma * :sCurs; else Summa = :Summa + :CrSumma * :dCurs; end end end -- Таможенные платежи if (:SumTyp=16) then begin Tamp=0.0; Select Sum(K.TPrice*K.Source), Sum(K.sPrice * K.Source), Sum(K.GW*K.Source), Sum(K.Akciz*K.Source), Sum(K.Nds*K.Source)-:TNds from GddKt K where DgvKey=:ID into :TSumma, :sSumma, :SumGw,:SumAkciz,:SumNds; for Select TPrice, sPrice, Source, Gw, Tamp from GddKt where DgvKey=:ID into :TPrice, :sPrice, :Quant, :Gw, :TampProc do begin Tamp1 = :sPrice * :Quant * :TampProc; Tamp = :Tamp + :Tamp1; -- таможенная пошлина end Tamp = :Tamp * :dCurs / 100.00000; select DK.Tams, -- таможенный сбор (%) DK.TamsG, -- таможенный сбор (сумма, грн.) DK.Tamp * DK.Curs -- таможенные процедуры from DgvKt DK where DK.ID = :ID into :TamSbProc, :TamSb, :TamPr; if (:TamSbProc <> 0.0) then TamSb = (:sSumma * :dCurs) * :TamSbProc / 100.00000; Summa = :Tamp + :TamSb + :TamPr + :SumAkciz + :SumNds; end -- Торговая наценка if (:SumTyp=17) then begin if (:Stor1Typ = 1 and :Typ = 2) then begin -- товар в рознице -- возврат заказчиком на розничный склад select sum((d.Price-(k.kPrice-k.kNds)) * k.Source) from gddkt k, gdddt d where k.dgvkey = :ID and k.gddkey=d.id into :Summa; end else begin select sum((d.Price-(k.Price-k.Nds)) * k.Source) from gddkt k, gdddt d where k.dgvkey = :ID and k.gddkey=d.id into :Summa; end end if (:SumTyp=20 and :DateTyp=0 and :Typ=5) then begin -- налоговая себестоимость по отгрузке Select Sum(K.TPrice*K.Source)*:aCurs from GddKt K where K.DgvKey=:ID into :Summa; if (:Summa is Null) then Summa=0.0; end -- цена исходного товара без НДС if (:SumTyp = 21) then begin Select (Sum((K.TPrice-K.TNds) * K.Source)) from GddKt K where K.DgvKey = :ID into :Summa; end -- НДС исходного товара if (:SumTyp = 22) then begin Select (Sum((K.TNds) * K.Source)) from GddKt K where K.DgvKey = :ID into :Summa; end -- цена исходного товара с НДС if (:SumTyp = 23) then begin Select (Sum((K.TPrice) * K.Source)) from GddKt K where K.DgvKey = :ID into :Summa; end -- курсовая разница (бухгалтерская) if (:SumTyp = 24) then begin execute procedure DgvKt_GenAccnRecKrb(:ID, :OpID); Summa = 0.0; end if (:sumTyp in (25,26,27)) then begin Tamp=0.0; Select Sum(K.TPrice*K.Source), Sum(K.sPrice * K.Source), Sum(K.GW*K.Source), Sum(K.Akciz*K.Source), Sum(K.Nds*K.Source)-:TNds from GddKt K where DgvKey=:ID into :TSumma, :sSumma, :SumGw,:SumAkciz,:SumNds; for Select TPrice, sPrice, Source, Gw, Tamp from GddKt where DgvKey=:ID into :TPrice, :sPrice, :Quant, :Gw, :TampProc do begin Tamp1 = :sPrice * :Quant * :TampProc; Tamp = :Tamp + :Tamp1; -- таможенная пошлина end Tamp = :Tamp * :dCurs / 100.00000; select DK.Tams, -- таможенный сбор (%) DK.TamsG, -- таможенный сбор (сумма, грн.) DK.Tamp * DK.Curs -- таможенные процедуры from DgvKt DK where DK.ID = :ID into :TamSbProc, :TamSb, :TamPr; if (:TamSbProc <> 0.0) then begin TamSb = (:sSumma * :dCurs) * :TamSbProc / 100.00000; end if (:SumTyp = 25) then begin -- таможенная пошлина Summa = :Tamp; end if (:SumTyp = 26) then begin -- таможенный сбор Summa = :TamSb; end if (:SumTyp = 27) then begin -- таможенные процедуры Summa = :TamPr; end end if( (:DateTyp in (1, 2, 3) and :SumTyp not in(11, 12, 13, 24)) or (:SumTyp in (14, 18, 19)) ) then begin execute procedure DgvKt_GenAccnRecSale (:ID, :OpID); Summa=0.0; end select a1, a3, a4, a8, a9, CurrTyp from accnplan where accn=:dt into :d1, :d3, :d4, :d8, :d9, :DtCurrTyp; select a1, a3, a4, a8, a9, CurrTyp from accnplan where accn=:kt into :k1, :k3, :k4, :k8, :k9, :KtCurrTyp; if ((:DtA = 2 or :KtA = 2) and (:d1=1 or :k1=1) and :Typ = 2) then begin /* аналитика по поставщикам */ Execute procedure DgvKt_GenAccnRecInp(:ID, :OpID); Summa = 0.0; end if(:d1<>0 and :d1 is not null) then begin d_1 = :NameID; if (:SumTyp=16) then d_1 = :TOrgnID; end else d_1 = Null; if(:k1<>0 and :k1 is not null) then begin k_1 = :NameID; if (:SumTyp=16) then k_1 = :TOrgnID; end else k_1 = Null; if(:d3<>0 and :d3 is not null) then d_3 = :PrsnID; else d_3 = Null; if(:k3<>0 and :k3 is not null) then k_3 = :PrsnID; else k_3 = Null; if(:d4<>0 and :d4 is not null) then d_4 = :stor; else d_4 = Null; if(:k4<>0 and :k4 is not null) then begin k_4 = :stor; if(:Typ = 4) then k_4 = :StorID; end else k_4 = Null; if (:d8 is Null) then dt8 = Null; else dt8 = :VL1; if (:d9 is Null) then dt9 = Null; else dt9 = :VL2; if (:k8 is Null) then kt8 = Null; else kt8 = :VL1; if (:k9 is Null) then kt9 = Null; else kt9 = :VL2; if (:DtCurrTyp is Null and :KtCurrTyp is Null) then begin -- в проводке не валютные счета aCurrTyp = Null; aCurs = 0.0; acSumma = 0.0; end if (:Summa is Null) then Summa = 0.0; if(:summa <> 0.0) then begin if (:storno <> 0.0)then summa=-:summa; if (:Proc is Not Null and :Proc <> 0.0) then begin Summa = :Summa / 100.0 * :Proc; end Rec_ID = Gen_ID(AccnProv_ID,1); insert into accnprov (id, OurOrgnID,dat_,dt,kt, dt1,kt1,dt3,kt3,dt4,kt4, dt8, dt9, kt8, kt9, dtprt,dtobj,ktprt,ktobj,summa,document,comment,username, Oper,OperID,DocID, CurrTyp, Curs, cSumma) values(:rec_id,:OurOrgnID,:dat_,:dt,:kt, :d_1,:k_1,:d_3,:k_3,:d_4,:k_4,:dt8, :dt9, :kt8, :kt9, :dtprt,:dtobj,:ktprt,:ktobj,:summa,:nbr,:comment,:username, :Oper,:OperID,:ID,:aCurrTyp, :aCurs, :acSumma); insert into dgktaccn(id,dgvkey,accnkey) values(gen_id(dgktaccn_id,1),:id,:rec_id); end end end end end^ ALTER PROCEDURE DGVKT_GENACCNRECINP ( ID INTEGER, OPID INTEGER) AS Declare variable aDate Date; Declare variable aSumma double precision; Declare variable Dt varchar(5); Declare variable Kt varchar(5); Declare variable d1 integer; Declare variable k1 integer; Declare variable d4 integer; Declare variable k4 integer; Declare variable dt1 integer; Declare variable kt1 integer; Declare variable dt4 integer; Declare variable kt4 integer; Declare variable DtA integer; Declare variable KtA integer; Declare variable SumTyp integer; Declare variable DateTyp integer; Declare variable FinRes integer; Declare variable Storno integer; Declare variable DtPrt integer; Declare variable DtObj integer; Declare variable KtPrt integer; Declare variable KtObj integer; /* поставщик */ Declare variable NameID1 integer; /* покупатель (возврат товара) */ Declare variable NameID2 integer; /* исходный склад */ Declare variable Stor1 integer; /* склад возврата */ Declare variable Stor2 integer; Declare Variable Sum1 double precision; Declare Variable Sum2 double precision; Declare Variable Sum3 double precision; Declare Variable Nds1 double precision; Declare Variable Nds2 double precision; Declare Variable Nds3 double precision; Declare Variable AccnKey integer; Declare Variable UserName varchar(20); Declare Variable Nbr Dmn_Nbr; Declare Variable Proc double precision; Declare Variable Oper integer; Declare Variable Comment varchar(255); begin select Dat_, Nbr, UserName, Comment from DgvKt where ID=:ID into :aDate, :Nbr, :UserName, :Comment; Select Dt, Kt, SumTyp, AccnDate, FinRes, Storno, DtPrt, DtObj, KtPrt, KtObj, Proc, DtA, KtA, Oper from StorAccn where ID = :OpID into :Dt, :Kt, :SumTyp, :DateTyp, :FinRes, :Storno, :DtPrt, :DtObj, :KtPrt, :KtObj, :Proc, :DtA, :KtA, :Oper; Select a1, a4 from AccnPlan where Accn = :Dt into :d1, :d4; Select a1, a4 from AccnPlan where Accn = :Kt into :k1, :k4; /* выборка сумм по накладной */ for select KK1.NameID, KK1.Stor, DD.NameID, DD.Stor, Sum(K.Source*K1.Price),Sum(K.Source*K1.Nds), /* вх. цены */ Sum(K.Source*K2.Price),Sum(K.Source*K2.Nds), /* розн. цены */ Sum(K.Source*D.Price), Sum(K.Source*D.Nds) /* реализация */ from GddKt K Left Join GddKt_SrcKtID (K.ID) SK on 0=0 Left Join GddKt K1 on K1.ID=SK.KTID Left Join DgvKt KK1 on KK1.ID=K1.DgvKey Left Join GddDt D on D.ID=K.GddKey Left Join DgvDt DD on DD.ID=D.DgvKey Left Join GddKt K2 on K2.ID=D.GddKey where K.DgvKey = :ID Group by KK1.NameID, KK1.Stor, DD.NameID, DD.Stor into :NameID1, :Stor1, :NameID2, :Stor2, :Sum1, :Nds1, :Sum2, :Nds2, :Sum3, :Nds3 do begin if (:d1=1) then begin if (:DtA = 2) then Dt1 = :NameID1; else Dt1 = :NameID2; end if (:k1=1) then begin if (:KtA = 2) then Kt1 = :NameID1; else Kt1 = :NameID2; end if (:d4=1) then Dt4 = :Stor2; if (:k4=1) then Kt4 = :Stor2; aSumma = 0.0; if (:SumTyp=0) then begin /* по входным ценам с НДС */ aSumma = :Sum1; end if (:SumTyp=1) then begin /* входной НДС */ aSumma = :Nds1; end if (:SumTyp=2) then begin /* НДС реализации */ aSumma = :Nds3; end if (:SumTyp=5) then begin /* сумма реализации */ aSumma = :Sum3; end if (:SumTyp=6) then begin /* по входным ценам без НДС */ aSumma = :Sum1-:Nds1; end if (:SumTyp=10) then begin /* сумма реализации без НДС */ aSumma = :Sum3-:Nds3; end if (:SumTyp = 17) then begin /* торговая наценка */ aSumma = :Sum3-(:Sum1-:Nds1); end if (:Proc is not Null and :Proc <> 0.0) then aSumma = :aSumma / 100.0 * :Proc; if (:Storno = 1) then aSumma = -:aSumma; /* формирование проводки */ if (:aSumma <> 0.0 and :aDate is not Null) then begin AccnKey = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, Dat_, Document, Dt, Kt, Summa, UserName, Comment, Dt1, Kt1, Dt4, Kt4, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID) Values (:AccnKey, :aDate, :Nbr, :Dt, :Kt, :aSumma, :UserName, :Comment, :Dt1, :Kt1, :Dt4, :Kt4, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :OpID, :ID); Insert into DgKtAccn(ID, DgvKey, AccnKey) Values(Gen_ID(dgktaccn_id, 1), :ID, :AccnKey); end end end^ ALTER PROCEDURE DGVKT_GENACCNRECKRB ( ID INTEGER, OPID INTEGER) AS declare variable Typ integer; declare variable SumTyp integer; declare variable DateTyp integer; declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable Summa double precision; declare variable aDate TimeStamp; declare variable AccnProvID integer; declare variable FinRes integer; declare variable Nbr Dmn_Nbr; declare variable Comment Varchar(255); declare variable UserName varchar(20); declare variable Stor integer; declare variable OurOrgnID integer; declare variable Accn varchar(5); declare variable Storno integer; declare variable d1 integer; declare variable d3 integer; declare variable d4 integer; declare variable k1 integer; declare variable k3 integer; declare variable k4 integer; declare variable d8 integer; declare variable k8 integer; declare variable d9 integer; declare variable k9 integer; declare variable dt1 integer; declare variable dt3 integer; declare variable dt4 integer; declare variable kt1 integer; declare variable kt3 integer; declare variable kt4 integer; declare variable dt8 integer; declare variable dt9 integer; Declare Variable kt8 Integer; Declare Variable kt9 Integer; declare variable Oper integer; declare variable OperID integer; declare variable NameID integer; declare variable PrsnID integer; declare variable StorID integer; Declare Variable VL1 Integer; Declare Variable VL2 Integer; DECLARE VARIABLE DTPRT INTEGER; DECLARE VARIABLE DTOBJ INTEGER; DECLARE VARIABLE KTPRT INTEGER; DECLARE VARIABLE KTOBJ INTEGER; begin select typ, Nbr, Comment, UserName, Stor, StorID, NameID, PrsnID, VL1, VL2 from dgvkt where ID = :ID into :Typ, :Nbr, :Comment, :UserName, :Stor, :StorID, :NameID, :PrsnID, :VL1, :VL2; if (:Typ <> 5) then exit; select OurOrgnID from StorList where ID = :Stor into :OurOrgnID; select Oper, OperID, SumTyp, AccnDate, Dt, Kt, FinRes, Storno, DtPrt, DtObj, KtPrt, KtObj from StorAccn where ID = :OpID into :Oper, :OperID, :SumTyp, :DateTyp, :Dt, :Kt, :FinRes, :Storno, :DtPrt, :DtObj, :KtPrt, :KtObj; for Select kDate, kDelta from DgvKt_KrbSelect(:ID) into :aDate, :Summa do begin if (:Storno = 1) then Summa = -:Summa; if (:finRes = 0) then begin -- при отриц. сумме - обнулить if (:Summa < 0.0) then Summa = 0.0; end if (:FinRes = 2) then begin -- при отриц. сумме - поменять корреспонденцию if (:Summa < 0.0) then begin Summa = -:Summa; Accn = :Dt; Dt = :Kt; Kt = :Accn; end end if (:Summa <> 0.0) then begin select CoalEsce(a1, 0), CoalEsce(a3, 0), CoalEsce(a4, 0), a8, a9 from accnplan where accn = :dt into :d1, :d3, :d4, :d8, :d9; select CoalEsce(a1, 0), CoalEsce(a3, 0), CoalEsce(a4, 0), a8, a9 from accnplan where accn = :kt into :k1, :k3, :k4, :k8, :k9; dt1 = null; kt1 = null; dt3 = null; kt3 = null; dt4 = null; kt4 = null; dt8 = null; kt8 = null; dt9 = null; kt9 = null; if (:d1 <> 0) then dt1 = :NameID; if (:k1 <> 0) then kt1 = :NameID; if (:d3 <> 0) then dt3 = :PrsnID; if (:k3 <> 0) then kt3 = :PrsnID; if (:d4 <> 0) then dt4 = :Stor; if (:k4 <> 0) then kt4 = :Stor; if (:d8 is not Null) then dt8 = :VL1; if (:d9 is not Null) then dt9 = :VL2; if (:k8 is not Null) then kt8 = :VL1; if (:k9 is not Null) then kt9 = :VL2; AccnProvID = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, OurOrgnID, Dat_, Document, Comment, UserName, Dt, Kt, Summa, Oper, OperID, DocID, dt1, kt1, dt3, kt3, dt4, kt4, dt8, dt9, kt8, kt9, DtPrt, DtObj, KtPrt, KtObj) values(:AccnProvID, :OurOrgnID, :aDate, :Nbr, :Comment, :UserName, :Dt, :Kt, :Summa, :Oper, :OperID, :ID, :dt1, :kt1, :dt3, :kt3, :dt4, :kt4, :dt8, :dt9, :kt8, :kt9, :DtPrt, :DtObj, :KtPrt, :KtObj); insert into dgktaccn(id, dgvkey, accnkey) values(Gen_ID(DgKtAccn_ID, 1), :ID, :AccnProvID); end end end^ ALTER PROCEDURE DGVKT_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS declare variable dt varchar(5); declare variable kt varchar(5); declare variable Accn Varchar(5); declare variable dattyp integer; declare variable sumtyp integer; declare variable comment varchar(255); declare variable s_comment varchar(255); declare variable d_comment varchar(255); declare variable pComment varchar(255); declare variable storno integer; declare variable s_date TimeStamp; /* дата оплаты */ declare variable i_date TimeStamp; /* дата оприходования */ declare variable bDate TimeStamp; /* дата первого события */ declare variable eDate TimeStamp; /* дата второго события */ declare variable summa Double Precision; declare variable dat_ TimeStamp; declare variable d_nbr Dmn_Nbr; declare variable s_nbr Dmn_Nbr; declare variable nbr Dmn_Nbr; declare variable accnkey integer; declare variable saleid integer; declare variable orgnid integer; declare variable prsnid integer; declare variable storid integer; declare variable dt1 integer; declare variable kt1 integer; declare variable dt3 integer; declare variable kt3 integer; declare variable dt4 integer; declare variable kt4 integer; declare variable dtprt integer; declare variable dtobj integer; declare variable ktprt integer; declare variable ktobj integer; Declare Variable Oper Integer; Declare Variable OperID Integer; Declare Variable UserName Varchar(20); Declare Variable kUserName Varchar(20); Declare Variable sUserName Varchar(20); Declare Variable Proc Double Precision; Declare Variable dSumma Double Precision; Declare Variable sSumma Double Precision; Declare Variable sSumm Double Precision; declare variable FinRes Integer; declare variable ix Integer; declare variable dCurs double precision; declare variable sCurs double precision; declare variable bCurs double precision; declare variable eCurs double precision; declare variable scSumma double precision; declare variable dcSumma double precision; declare variable dCurrTyp integer; declare variable dTyp integer; declare variable OurOrgnID integer; declare variable bDa integer; declare variable bMo integer; declare variable bYe integer; declare variable eDa integer; declare variable eMo integer; declare variable eYe integer; declare variable sDa integer; declare variable sMo integer; declare variable sYe integer; declare variable sDate TimeStamp; /* дата начала квартала/месяца */ DECLARE VARIABLE d8 INTEGER; DECLARE VARIABLE d9 INTEGER; DECLARE VARIABLE k8 INTEGER; DECLARE VARIABLE k9 INTEGER; DECLARE VARIABLE dt8 INTEGER; DECLARE VARIABLE dt9 INTEGER; DECLARE VARIABLE kt8 INTEGER; DECLARE VARIABLE kt9 INTEGER; DECLARE VARIABLE VL1 INTEGER; DECLARE VARIABLE VL2 INTEGER; declare variable TSumma double precision; begin for select dt, kt, sumtyp, accndate, storno, comment, dtprt, dtobj, ktprt, ktobj, Oper, Proc, FinRes from storaccn A where A.ID=:OpID into :dt, :kt, :sumtyp, :dattyp, :storno, :pComment, :dtprt, :dtobj, :ktprt, :ktobj, :Oper, :Proc, :FinRes do begin select kk.nbr, kk.dat_, kk.comment, kk.nameid, kk.prsnid, kk.Typ, kk.VL1, kk.VL2, kk.stor, kk.OperID, kk.UserName, kk.Summa, kk.Curs, kk.CurrTyp from dgvkt kk where kk.ID = :ID into :d_nbr, :i_date, :d_comment, :orgnid, :prsnid, :dTyp, :VL1, :VL2, :storid, :OperID, :kUserName, :dSumma, :dCurs, :dCurrTyp; select sum(k.source * k.TPrice) from gddkt k where k.dgvkey=:ID into :TSumma; if (:TSumma is null) then TSumma=0.0; Select OurOrgnID from StorList where ID=:StorID into :OurOrgnID; for select summa, Summ, salekey, cSumma from salektcr where dgvkey=:id into :sSumma, :sSumm, :saleid, :scSumma do for select nbr, saledate,comment,UserName, Curs from salekt where id=:saleid into :s_nbr, :s_date, :s_comment, :sUserName, :sCurs do begin Summa = :sSumma; -- Входная цена с НДС if(:sumtyp = 0) then select sum(source*price) from gddkt where dgvkey=:id into :summa; -- Входной НДС if(:sumtyp=1) then select sum(source*nds) from gddkt where dgvkey=:id into :summa; -- НДС реализации if(:sumtyp=2) then select sum(k.source*d.nds) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id into :summa; -- НДС с торговой надбавки if(:sumtyp=3)then for select sum(k.source*(d.price-k.price)* dd.procnds/(dd.procnds + 100.0)) from gddkt k, gdddt d, dgvdt dd where k.dgvkey=:id and k.gddkey=d.id and dd.id=d.dgvkey into :summa do id=:id; -- Торговая надбавка if(:sumtyp=4)then for select sum(k.source*(d.price-k.price)) from gddkt k,gdddt d where k.dgvkey=:id and k.gddkey=d.id into :summa do id=:id; -- Сумма реализации if(:sumtyp=5)then for select sum(d.price*k.source) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id into :summa do id=:id; /* Входная цена без НДС */ if(:sumtyp=6)then select sum(source*(price-nds)) from gddkt where dgvkey=:id into :summa; if(:sumtyp=7) then begin /* Убытки реализации */ summa=0; end if(:sumtyp=8) then begin /* Сумма оплаты */ Summa=:sSumma; end if (:SumTyp=9) then begin /* Сумма доплаты */ Summa = 0.0; end if(:SumTyp=10) then begin /* Сумма реализации без НДС */ select sum((d.price-d.nds)*k.source) from gddkt k, gdddt d where k.dgvkey=:id and k.gddkey=d.id into :summa; end if(:SumTyp=14) then begin/* Курсовая разница (налог.) */ Summa=0.0; /* :sSumm; */ if (:DatTyp=0) then begin /* по отгрузке */ Summa = 0.0; Dat_ = :s_Date; if (:i_Date < :s_Date) then begin Summa = :scSumma * (:sCurs-:dCurs); end end if (:DatTyp=1) then begin /* по оплате */ Summa = 0.0; Dat_ = :i_Date; if (:s_Date < :i_Date) then begin Summa = :scSumma * (:dCurs-:sCurs); end end end /* исходная цена поставщика без НДС (без услуг) */ if (:SumTyp = 21) then begin Select Sum((K.TPrice-K.TNds)*K.Source) from GddKt K where K.DgvKey = :ID into :Summa; end /* НДС исходного товара (без услуг) */ if (:SumTyp = 22) then begin Select Sum(K.TNds*K.Source) from GddKt K where K.DgvKey = :ID into :Summa; end /* исходная цена поставщика с НДС (без услуг) */ if (:SumTyp = 23) then begin Select Sum(K.TPrice*K.Source) from GddKt K where K.DgvKey = :ID into :Summa; end /* if (:SumTyp in (21, 22, 23)) then begin Select Sum(K.TPrice*K.Source) from GddKt K where K.DgvKey = :ID into :dSumma; end */ if (:SumTyp not in(14)) then begin if (:SumTyp in (21, 22, 23) and :TSumma <> 0.0) then begin if (:sSumma > :TSumma) then sSumma = :TSumma; Summa = :Summa * :sSumma / :TSumma; end else begin if (:dsumma <> 0.0) then begin Summa = :Summa * :sSumma / :dSumma; end end end if (:SumTyp = 15) then begin/* Таможенная стоимость (товар) */ Select Sum(K.TPRICE*K.SOURCE) from GddKt K where K.DgvKey=:ID into :dcSumma; if (DatTyp=3) then begin /* По Отгрузке и Оплате */ if(:i_Date < :s_Date) then Summa=:scSumma*:sCurs; else Summa=:scSumma*:dCurs; end if (DatTyp = 2) then begin /* По Отгрузке или Оплате */ if(:i_Date < :s_Date) then Summa=:scSumma*:sCurs; else Summa=:scSumma*:dCurs; end end if (:SumTyp = 18) then begin /* Курс. разн. (налог. - за кв.) */ Summa = 0.0; if (:i_Date < :s_Date) then begin bDate = :i_Date; eDate = :s_Date; end else begin bDate = :s_Date; eDate = :i_Date; end Dat_ = :eDate; Execute Procedure f_DecodeDate :bDate Returning_Values :bYe, :bMo, :bDa; Execute Procedure f_DecodeDate :eDate Returning_Values :eYe, :eMo, :eDa; sYe = :eYe; if (:eMo in (1,2,3)) then sMo = 1; if (:eMo in (4,5,6)) then sMo = 4; if (:eMo in (7,8,9)) then sMo = 7; if (:eMo in (10,11,12)) then sMo = 10; sDa = 1; Execute Procedure f_EncodeDate :sYe, :sMo, :sDa Returning_Values :sDate; if (:bDate < :sDate-1) then bDate = :sDate-1; Select Val from Currency_GetValue(:dCurrTyp, :bDate) into :bCurs; Select Val from Currency_GetValue(:dCurrTyp, :eDate) into :eCurs; Summa = :scSumma * (:eCurs-:bCurs); if (:DatTyp=0 and (:i_Date > :s_Date)) then Summa = 0.0; if (:DatTyp=1 and (:s_Date > :i_Date)) then Summa = 0.0; end if (:SumTyp = 19) then begin /* Курс. разн. (налог. - за мес.) */ Summa = 0.0; if (:i_Date < :s_Date) then begin bDate = :i_Date; eDate = :s_Date; end else begin bDate = :s_Date; eDate = :i_Date; end Dat_ = :eDate; Execute Procedure f_DecodeDate :bDate Returning_Values :bYe, :bMo, :bDa; Execute Procedure f_DecodeDate :eDate Returning_Values :eYe, :eMo, :eDa; sYe = :eYe; sMo = :eMo; sDa = 1; Execute Procedure f_EncodeDate :sYe, :sMo, :sDa Returning_Values :sDate; if (:bDate < :sDate-1) then bDate = :sDate-1; Select Val from Currency_GetValue(:dCurrTyp, :bDate) into :bCurs; Select Val from Currency_GetValue(:dCurrTyp, :eDate) into :eCurs; Summa = :scSumma * (:eCurs-:bCurs); if (:DatTyp=0 and (:i_Date > :s_Date)) then Summa = 0.0; if (:DatTyp=1 and (:s_Date > :i_Date)) then Summa = 0.0; end if (:SumTyp=20 and :dCurrTyp is not Null) then begin/* налоговая себестоимость */ if (:DatTyp=3) then begin/* по послежнему событию */ if (:s_Date < :i_Date) then Summa = :scSumma * :dCurs; else Summa = :scSumma * :sCurs; end end Nbr = Null; if(:DatTyp = 0) then begin/* по отгрузке */ nbr=:d_nbr; if(:SumTyp not in(14,18,19)) then dat_=:i_date; comment=:d_comment; UserName=:kUserName; end if(:dattyp = 1) then begin/* по оплате */ nbr=:s_nbr; if (:SumTyp not in(14,18,19)) then dat_=:s_date; comment=:s_comment; UserName=:sUserName; end if(:dattyp = 2) then begin/* по первому событию */ if(:s_date < :i_date) then begin nbr=:s_nbr; dat_=:s_date; comment=:s_comment; UserName=:sUserName; end else begin nbr=:d_nbr; dat_=:i_date; comment=:d_comment; UserName=:kUserName; end end if(:dattyp = 3) then begin/* по послежнему событию */ if(:s_date < :i_date) then begin nbr=:d_nbr; dat_=:i_date; comment=:d_comment; UserName=:kUserName; end else begin nbr=:s_nbr; dat_=:s_date; comment=:s_comment; UserName=:sUserName; end end if(:Comment is null or :Comment='') then Comment=:pComment; select a1,a3,a4, a8, a9 from accnplan where accn=:dt into :dt1,:dt3,:dt4, :d8, :d9; select a1,a3,a4, a8, a9 from accnplan where accn=:kt into :kt1,:kt3,:kt4, :k8, :k9; if (:dt1 <> 0 and :dt1 is not null) then dt1=:orgnid; else dt1 = Null; if (:dt3 <> 0 and :dt3 is not null) then dt3=:prsnid; else dt3 = Null; if (:dt4 <> 0 and :dt4 is not null) then dt4=:storid; else dt4 = Null; if (:kt1 <> 0 and :kt1 is not null) then kt1=:orgnid; else kt1 = Null; if (:kt3 <> 0 and :kt3 is not null) then kt3=:prsnid; else kt3 = Null; if (:kt4 <> 0 and :kt4 is not null) then kt4=:storid; else kt4 = Null; if (:d8 is Null) then dt8 = Null; else dt8 = :VL1; if (:d9 is Null) then dt9 = Null; else dt9 = :VL2; if (:k8 is Null) then kt8 = Null; else kt8 = :VL1; if (:k9 is Null) then kt9 = Null; else kt9 = :VL2; if(:Proc is not Null and :Proc <> 0.0) then Summa=:Summa/100.0*:Proc; if (:storno = 1) then summa=-:summa; if(:FinRes=0) then begin if(:Summa < 0.0) then Summa=0.0; end if(:FinRes=2 and :Summa < 0.0) then begin Summa=-:Summa; Accn=:DT; DT=:KT; KT=:Accn; ix=:dt1; dt1=:kt1; kt1=:ix; ix=:dt3; dt3=:kt3; kt3=:ix; ix=:dt4; dt4=:kt4; kt4=:ix; ix=:dtPrt; dtPrt=:ktPrt; ktPrt=:ix; ix=:dtObj; dtObj=:ktObj; ktObj=:ix; end if(:summa <> 0 and :dat_ is not null) then begin AccnKey = Gen_ID(accnprov_id, 1); insert into accnprov(ID, OurOrgnID, dat_, dt, kt, summa, document, comment, UserName, Oper,OperID,DocID,dt1,kt1,dt3,kt3,dt4,kt4,dtprt,dtobj,ktprt,ktobj, CurrTyp, dt8, dt9, kt8, kt9) values(:accnkey, :OurOrgnID, :dat_, :dt, :kt, :summa, :nbr, :comment, :UserName, :Oper,:OperID,:ID,:dt1,:kt1,:dt3,:kt3,:dt4,:kt4,:dtprt,:dtobj,:ktprt,:ktobj, :dCurrTyp, :dt8, :dt9, :kt8, :kt9); insert into dgktaccn(id, dgvkey, accnkey) values(Gen_ID(DgKtAccn_ID, 1), :id, :accnkey); end end end end^ ALTER PROCEDURE DGVKT_GENACCNRECU ( ID INTEGER, OPID INTEGER) AS DECLARE VARIABLE DGVID INTEGER; DECLARE VARIABLE OID INTEGER; DECLARE VARIABLE SUMTYP INTEGER; DECLARE VARIABLE DATETYP INTEGER; DECLARE VARIABLE DT VARCHAR(5); DECLARE VARIABLE KT VARCHAR(5); declare variable NameID integer; declare variable OrgnID Integer; declare variable cSumma Double precision; declare variable Summa Double Precision; declare variable Nds Double Precision; declare variable aSumma Double Precision; declare variable Dt1 Integer; declare variable Kt1 Integer; declare variable D1 Integer; declare variable K1 Integer; declare variable Dt4 Integer; declare variable Kt4 Integer; declare variable D4 Integer; declare variable K4 Integer; declare variable AccnKey Integer; declare variable Comment Varchar(255); declare variable Nbr Dmn_Nbr; declare variable UserName Varchar(20); declare variable aDate Date; declare variable OperID Integer; declare variable CurrTyp integer; declare variable Curs Double Precision; declare variable Stor Integer; declare variable OurOrgnID integer; declare variable Storno Integer; declare variable DtPrt Integer; declare variable DtObj Integer; declare variable KtPrt Integer; declare variable KtObj Integer; Declare variable FinRes Integer; Declare variable Accn Varchar(5); Declare variable ix Integer; Declare variable Proc double precision; declare variable sSumma double precision; declare variable sDate TimeStamp; declare variable dDate TimeStamp; declare variable sNbr varchar(20); declare variable dSumma double precision; declare variable xSumma double precision; declare variable Typ Integer; begin Select ID, Dat_, NameID, Comment, Nbr, UserName, CurrTyp, Curs, Stor, Summa from DgvKt where ID=:ID into :DgvID, :dDate, :NameID, :Comment, :Nbr, :UserName, :CurrTyp, Curs, :Stor, :dSumma; if (DgvID is null) then exit; Select OurOrgnID from StorList where ID=:Stor into :OurOrgnID; Select ID, OperID, Dt, Kt, SumTyp, AccnDate, Storno, FinRes, DtPrt, DtObj, KtPrt, KtObj, Proc from StorAccn where ID=:OpID into :OID, :OperID, :Dt, :Kt, :SumTyp, :DateTyp, :Storno, :FinRes, :DtPrt, :DtObj, :KtPrt, :KtObj, :Proc; if (:OID is null) then exit; for Select OrgnID, Typ, Sum(Quant*Price), Sum(Quant*Nds), Sum(Quant*TPrice) from GddKtDDU where DgvKey=:ID Group By OrgnID, Typ into :OrgnID, :Typ, :Summa, :Nds, :cSumma do begin if (:OrgnID is Null) then OrgnID=:NameID; aSumma = 0.0; aDate = :dDate; if (:SumTyp=11) then aSumma = :Summa; if (:SumTyp=12) then aSumma = :Nds; if (:SumTyp=13) then aSumma = :Summa-:Nds; if (:SumTyp=28) then begin -- услуги до границы if (:Typ=0) then aSumma = :Summa; end if (:SumTyp=29) then begin -- услуги после границы if (:Typ=1) then aSumma = :Summa-:Nds; end if (:aSumma is null) then aSumma = 0.0; Dt1 = Null; Kt1 = Null; Dt4 = Null; Kt4 = Null; Select A1, A4 from AccnPlan where Accn=:Dt into :D1, :D4; Select A1, A4 from AccnPlan where Accn=:Kt into :K1, :K4; if (:D1=1) then Dt1 = :OrgnID; if (:K1=1) then Kt1 = :OrgnID; if (:D4=1) then Dt4 = :Stor; if (:K4=1) then Kt4 = :Stor; if (:Storno = 1) then aSumma = -:aSumma; if (:FinRes = 0 and :aSumma < 0.0) then aSumma = 0.0; if(:FinRes = 2 and :aSumma < 0.0) then begin aSumma = -:aSumma; Accn=:DT; DT=:KT; KT=:Accn; ix=:dt1; dt1=:kt1; kt1=:ix; ix=:dt4; dt4=:kt4; kt4=:ix; ix=:dtPrt; dtPrt=:ktPrt; ktPrt=:ix; ix=:dtObj; dtObj=:ktObj; ktObj=:ix; end if (:Proc is not Null and :Proc <> 0.0) then aSumma = :aSumma / 100.00 * :Proc; if (:DateTyp in (1, 2, 3)) then begin -- по оплате / отгрузке или оплате / отгрузке и оплате xSumma = :aSumma; for select SC.Summa, S.SaleDate, S.Nbr from SaleKtCr SC, SaleKt S where SC.DgvKey = :ID and S.ID = SC.SaleKey and S.SaleDate is not Null and SC.Summa <> 0.0 and :dSumma <> 0.0 into :sSumma, :sDate, :sNbr do begin aSumma = :xSumma / :dSumma * :sSumma; if (:DateTyp = 1) then aDate = :sDate; if (:DateTyp = 2) then begin -- ранняя дата if (:dDate < :sDate) then aDate = :dDate; else aDate = :sDate; end if (:DateTyp = 3) then begin -- поздняя дата if (:sDate > :dDate) then aDate = :sDate; else aDate = :dDate; end if (:aDate is not null and :aSumma <> 0.0) then begin AccnKey = Gen_ID(AccnProv_ID, 1); Insert Into AccnProv (ID, OurOrgnID, Dat_, Document, Summa, Dt, Kt, Dt1, Kt1, Dt4, Kt4, Comment, UserName, Oper, OperID, DocID, CurrTyp, Curs, cSumma, DtPrt, DtObj, KtPrt, KtObj) Values (:AccnKey, :OurOrgnID, :aDate, :Nbr, :aSumma, :Dt, :Kt, :Dt1, :Kt1, :Dt4, :Kt4, :Comment, :UserName, 16, :OperID, :ID, :CurrTyp, :Curs, :cSumma, :DtPrt, :DtObj, :KtPrt, :KtObj); insert Into dgktaccn (ID, DgvKey, AccnKey) values (Gen_ID(DgKtAccn_ID, 1), :ID, :AccnKey); end end end else begin if (:aDate is not null and :aSumma <> 0.0) then begin AccnKey = Gen_ID(AccnProv_ID, 1); Insert Into AccnProv (ID, OurOrgnID, Dat_, Document, Summa, Dt, Kt, Dt1, Kt1, Dt4, Kt4, Comment, UserName, Oper, OperID, DocID, CurrTyp, Curs, cSumma, DtPrt, DtObj, KtPrt, KtObj) Values (:AccnKey, :OurOrgnID, :aDate, :Nbr, :aSumma, :Dt, :Kt, :Dt1, :Kt1, :Dt4, :Kt4, :Comment, :UserName, 16, :OperID, :ID, :CurrTyp, :Curs, :cSumma, :DtPrt, :DtObj, :KtPrt, :KtObj); insert Into dgktaccn (ID, DgvKey, AccnKey) values (Gen_ID(DgKtAccn_ID, 1), :ID, :AccnKey); end end end end^ ALTER PROCEDURE DGVKT_KRBSELECT ( ID INTEGER) RETURNS ( KDATE TIMESTAMP, KSUMMA DOUBLE PRECISION, KDELTA DOUBLE PRECISION, KCURS DOUBLE PRECISION, CURS DOUBLE PRECISION, KRBTYP INTEGER) AS declare variable InpDate TimeStamp; declare variable cSumma double precision; declare variable dCurs double precision; declare variable sSumm double precision; declare variable sCurs double precision; declare variable CurrTyp integer; declare variable SaleID integer; --declare variable KrbTyp integer; declare variable cSumm double precision; begin select Dat_, cSumma, Curs, CurrTyp from dgvkt where ID = :ID into :InpDate, :cSumma, :dCurs, :CurrTyp; kCurs = :dCurs; Curs = :dCurs; for select eDate, cast(0 as integer) as Typ, cast(Null as integer) as ID, cast(Null as double precision) cSumm, cast(Null as double precision) sCurs from f_Quarter_DataSet( (select KK.DAT_ from DgvKt KK where KK.ID = :ID), cast(Current_Date as TimeStamp)) union select S.SaleDate, cast(1 as integer) as Typ, S.ID, CR.cSumma, s.Curs sCurs from SaleKtCr CR, SaleKt S where Cr.DgvKey = :ID and S.ID = CR.SaleKey and S.SaleDate is not Null order by 1, 2 desc, 3 into :kDate, :KrbTyp, :SaleID, :cSumm, :sCurs do begin select CoalEsce(Sum(Cr.cSumma), 0.0) from SaleKtCr Cr, SaleKt S where Cr.DgvKey = :ID and S.ID = Cr.SaleKey and S.SaleDate is not Null and S.SaleDate <= :kDate into :sSumm; -- сумма оплаты if (:SaleID is not Null) then begin -- КР по оплате kSumma = cSumm; if (:kDate < :InpDate) then kSumma = 0.0; kDelta = cSumm * (:sCurs - :kCurs); if (Abs(:kSumma) > 1.0e-5) then begin Curs = :sCurs; suspend; end end else begin -- КР по границе квартала select Val from Currency_GetValue(:CurrTyp, :kDate) into :sCurs; if (:kDate < :InpDate) then kSumma = -:sSumm; else kSumma = :cSumma - :sSumm; if (:kSumma < 0.0) then kSumma = 0.0; if (:kDate > Current_Date) then kSumma = 0.0; kDelta = :kSumma * (:sCurs-:kCurs); if (Abs(:kSumma) > 1.0e-5) then begin Curs = :sCurs; suspend; kCurs = sCurs; end end end end^ ALTER PROCEDURE DGVKT_LOGCHECKDELTA ( ID INTEGER, V_DGVKTID INTEGER = null, V_DGVDTID INTEGER = null) RETURNS ( NO_VALID INTEGER, DIFF DOUBLE PRECISION) AS declare variable Source double precision; declare variable DeltaInp double precision; declare variable DeltaOut double precision; declare variable RNumb double precision; declare variable Delta double precision; begin No_Valid = 0; Diff = 0.0; if (:V_DgvKtID is Null) then select V_DgvKtID from DgvKt where ID=:ID into :V_DgvKtID; if (:V_DgvDtID is Null) then select V_DgvDtID from DgvKt where ID=:ID into :V_DgvDtID; for select CoalEsce(k.Source,0.0), CoalEsce(k1.source,0.0), CoalEsce(d1.Quant,0.0), CoalEsce(L.RNumb,0.0) from DgvKt KK join GddKt K on K.DgvKey=KK.ID join DgvDtKt_Log L on L.GddKtID=K.ID left join DgvKt KK1 on KK1.ID=:V_DgvKtID left join GddKt K1 on K1.GddKtID=K.ID and K1.DgvKey=KK1.ID left join DgvDt DD1 on DD1.ID=:V_DgvDtID left join GddDt D1 on D1.GddKey=K.ID and D1.DgvKey=DD1.ID where KK.ID=:ID into :Source, :DeltaInp, :DeltaOut, :RNumb do begin Delta = :Rnumb - (:Source + :DeltaInp - :DeltaOut); if (Abs(:Delta) > 1.0e-5) then begin No_Valid = 1; -- exception Common_Exception('no_valid=1'); Diff = :Delta; end end suspend; end^ ALTER PROCEDURE DGVKT_MAKEDGVDTWORK ( ID INTEGER) AS DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE NBR Dmn_Nbr; DECLARE VARIABLE KDATE DATE; DECLARE VARIABLE TYP INTEGER; DECLARE VARIABLE COMMENT VARCHAR(255); DECLARE VARIABLE USERNAME VARCHAR(20); DECLARE VARIABLE STOR1 INTEGER; DECLARE VARIABLE STOR2 INTEGER; DECLARE VARIABLE NDSPROC1 DOUBLE PRECISION; DECLARE VARIABLE NDSPROC2 DOUBLE PRECISION; DECLARE VARIABLE NDSTYP1 INTEGER; DECLARE VARIABLE NDSTYP2 INTEGER; DECLARE VARIABLE REALTYP INTEGER; DECLARE VARIABLE ZID INTEGER; DECLARE VARIABLE ZMID INTEGER; DECLARE VARIABLE K1ID INTEGER; DECLARE VARIABLE K1SRC DOUBLE PRECISION; DECLARE VARIABLE QNT DOUBLE PRECISION; DECLARE VARIABLE SGodsID INTEGER; DECLARE VARIABLE QNEED DOUBLE PRECISION; DECLARE VARIABLE K2ID INTEGER; DECLARE VARIABLE PRICE DOUBLE PRECISION; DECLARE VARIABLE NDS DOUBLE PRECISION; DECLARE VARIABLE AKCIZ DOUBLE PRECISION; DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE Q DOUBLE PRECISION; DECLARE VARIABLE K1PRICEN DOUBLE PRECISION; DECLARE VARIABLE K1NDS DOUBLE PRECISION; declare variable OurOrgnID integer; begin select ID, Nbr, Dat_, Typ, DgvKey,Comment, UserName,Stor,StorID,ZID from DgvKt where ID=:ID into :DgvKtID, :Nbr, :kDate, :Typ, :DgvDtID,:Comment,:UserName,:Stor1,:Stor2,:ZID; if (:DgvKtID is null or :Typ<>4 or :DgvDtID is not Null) then exit; Select NdsTyp, NdsProc, OurOrgnID from StorList where ID=:Stor1 into :NdsTyp1, :NdsProc1, :OurOrgnID; Select NdsTyp, NdsProc from StorList where ID=:Stor2 into NdsTyp2, NdsProc2; Select Cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='RealMoment' into :RealTyp; DgvDtID = Gen_ID(DgvDt_ID, 1); Insert Into DgvDt(ID,DAT_,NBR,TYP,Comment,UserName,DgvKey, Out_Date,SaleDate,RealDate,Stor,StorID,ProcNds,NdsTyp, RealTyp,ZID) Values(:DgvDtID,:kDate,:Nbr,8,:Comment,:UserName,:DgvKtID, :kDate,:kDate,:kDate,:Stor2,:Stor1,:NdsProc2,:NdsTyp2, :RealTyp,:ZID); Update DgvKt set DgvKey=:DgvDtID where ID=:ID; for Select ID, ZMID, Source from GddKt /* перебор изделий */ where DgvKey=:ID and Source > 0 order by ID into :K1ID, :ZMID, :K1Src do begin K1PriceN = 0.0; /* материалы и комплектующие по изделию - резервируемые из заказа */ for Select S.GodsID, Sum(S.Qnt) from WorkZSlv S where S.MstID=:ZMID and S.NoZReserv = 0 Group by S.GodsID into :SGodsID, :Qnt do begin QNeed = :K1Src * :Qnt; /* позиции материалов, зарезервированные в заказе */ for Select K.ID, K.Quant, K.Price, K.Nds, K.Akciz from GddKt K, DgvKt KK, DgvDt DD where K.ZID=:ZID and K.GdsKey=:SGodsID and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (K.Quant > 0) Order By K.ID into :K2ID, :Quant, :Price, :Nds, :Akciz do begin if (:QNeed > 0) then begin Q = :QNeed; if (:Q > :Quant) then Q = :Quant; Insert Into GddDt (ID, DgvKey, Quant, GddKey, Price, Nds, PriceN,ZID,ZKID) Values(Gen_ID(GddDt_ID,1), :DgvDtID, :Q, :K2ID, :Price, :Nds, :Price-:Nds,:ZID,:K1ID); K1PriceN = :K1PriceN + (:Price-:Nds) * :Q; QNeed = :QNeed - :Q; end end end K1PriceN = :K1PriceN / :K1Src; K1Nds = :K1PriceN/100 * :NdsProc2; Update GddKt Set PriceNS=:K1PriceN, Price=:K1PriceN+:K1Nds, Nds=:K1Nds where ID=:K1ID; end Update DgvDt Set Summa=Summa where ID=:DgvDtID; end^ ALTER PROCEDURE DGVKT_NEWID RETURNS ( ID INTEGER) AS begin id = GEN_ID(dgvkt_id,1); end^ ALTER PROCEDURE DGVKT_OUTDT ( ID INTEGER) RETURNS ( KTID INTEGER, DTID INTEGER, DTYP INTEGER) AS begin for select ID from GddKt where DgvKey=:ID into :KTID do begin DTID = Null; DTYP = Null; for Select DTID, DTYP from GddKt_DstDtID(:KTID) into :DTID, :DTYP do begin if (:DTID is not Null) then suspend; end end end^ ALTER PROCEDURE DGVKT_RETURN ( ID INTEGER) AS declare variable dgvdtkey integer; declare variable typ integer; declare variable KID integer; begin KID = Null; for Select K.ID from GddKt K where K.DgvKey=:ID and Exists (Select D.ID from GddDt D where D.GddKey = K.ID) into :KID do KID=:KID; if (:KID is not Null) then Exception DgvKt_QuantSource; execute procedure dgvkt_delaccnrec :ID; delete from gddkt K where K.dgvkey=:ID and not Exists (Select D.ID from GddDt D where D.GddKey=K.ID); delete from dgvkt KK where KK.ID=:ID and not exists (select K.ID from gddkt K where K.dgvkey = KK.ID); end^ ALTER PROCEDURE DGVKT_SALE ( ID INTEGER, SALEID INTEGER, SM DOUBLE PRECISION, CSM DOUBLE PRECISION, USERNAME VARCHAR(20)) AS declare variable DID integer; declare variable SID integer; declare variable CRID integer; declare variable scSumm double precision; declare variable sSumm double precision; declare variable dcSumm double precision; declare variable dSumm double precision; declare variable sDate Date; declare variable dDate Date; declare variable dCurs double precision; declare variable sCurs double precision; declare variable sCurrTyp integer; declare variable dCurrTyp integer; declare variable Typ integer; declare variable cTyp integer; declare variable CursDiff double precision; declare variable crSumma double precision; begin select ID from DgvKt where ID=:ID into :DID; if (:DID is Null) then exit; select ID from SaleKt where ID=:SaleID into :SID; if (:SID is Null) then exit; select SaleDate, Summ, cSumm, Curs, CurrTyp, cTyp from SaleKt where ID=:SID into :sDate, :sSumm, :scSumm, :sCurs, :sCurrTyp, :cTyp; select Dat_, Summa-SaleSumma, cSumma-scSumma, Curs, CurrTyp, Typ from DgvKt where ID=:DID into :dDate, :dSumm, :dcSumm, :dCurs, :dCurrTyp, :Typ; if (:Typ=5 and :dCurrTyp is not null) then begin /* оприходование импорта */ if (:CSM > :scSumm) then CSM = :scSumm; if (:CSM > :dcSumm) then CSM = :dcSumm; if (:CSM <= 0) then exit; CursDiff = 0.0; if (:sDate < :dDate) then begin crSumma = :CSM * :sCurs; end else begin crSumma = :CSM * :dCurs; CursDiff = :CSM * (:sCurs-:dCurs); end insert into SaleKtCr(DgvKey, SaleKey, Summa, cSumma, Summ, UserName) values(:DID, :SID, :crSumma, :cSM, :CursDiff, :UserName); Update SaleKt Set cSumm = cSumm - :CSM, Summ = Summ - :crSumma where ID=:SID; if (:sDate < :dDate) then /* при ранней оплате - пересчитываем себестоимость товара */ Execute Procedure DgvKt_CReCalc :DID; else /* при поздней оплате - просто обновляем проводки */ update DgvKt Set Summa=Summa, No_LastEdit=1 where ID=:DID; end end^ ALTER PROCEDURE DGVKT_STORID AS declare variable name varchar(40); declare variable storid integer; declare variable nameid integer; declare variable dgvid integer; begin for select id,nameid from dgvkt where typ=1 into :dgvid,:nameid do for select name from orgn where id=:nameid into :name do for select id from storlist where name=:name into :storid do update dgvkt set storid=:storid where id=:dgvid; end^ ALTER PROCEDURE DGVKT_WZRECALC ( ID INTEGER) AS declare variable GddKtID integer; declare variable mSum double precision; declare variable mNds double precision; declare variable nSum double precision; declare variable nNds double precision; declare variable Stor integer; declare variable ProcNds double precision; begin Select Stor from DgvKt where ID = :ID and Typ = 4 and ZID is not Null into :Stor; if (:Stor is Null) then exit; Select S.NdsProc from StorList S where ID = :Stor into :ProcNds; for select ID from GddKt where DgvKey = :ID into :GddKtID do begin select Sum(D.Quant * K.Price), Sum(D.Quant * K.Nds) from GddDt D, GddKt K where D.ZkID = :GddKtID and K.ID = D.GddKey into :mSum, :mNds; if (:mSum is Null) then mSum = 0.0; if (:mNds is Null) then mNds = 0.0; select Sum(ZN.Summa) from WorkZNk ZN where ZN.ZkID = :GddKtID into :nSum; if (:nSum is Null) then nSum = 0.0; nNds = :nSum / 100.00 * :ProcNds; nSum = :nSum + :nNds; update GddKt set TPrice = (:mSum / Source), TNds = (:mNds / Source), KPrice = (:mSum / Source), KNds = (:mNds / Source), Price = ((:mSum + :nSum) / Source), Nds = ((:mNds + :nNds) / Source) where ID = :GddKtID and Source <> 0.0; end update DgvKt set Summa = Summa, No_LastEdit=1 where ID = :ID; end^ ALTER PROCEDURE DGVKTU_CRECALC ( ID INTEGER) AS declare variable dgvid integer; declare variable CurrTyp integer; -- курс валюты в акте declare variable dCurs double precision; -- курс валюты в предоплате declare variable sCurs double precision; -- сумма акта declare variable cSumma double precision; -- сумма оплаты предоплатами declare variable scSumma double precision; declare variable Inp_Date timestamp; declare variable S double precision; declare variable cS double precision; declare variable UID integer; declare variable cPrice double precision; declare variable Summa double precision; begin select ID, CurrTyp, Curs, cSumma, CoalEsce(KK.In_Date, KK.DAT_) from DgvKtU KK where ID = :ID and cTyp = 1 and CurrTyp is not Null and CoalEsce(KK.Curs, 0.0) <> 0.0 and KK.cSumma <> 0.0 into :DgvID, :CurrTyp, :dCurs, :cSumma, :Inp_Date; if (:DgvID is Null) then exit; select CoalEsce(Sum(Cr.cSumma), 0.0) from SaleKuCr Cr, SaleKt S where Cr.DgvKey = :ID and S.ID = Cr.SaleKey and CoalEsce(S.SaleDate, S.DAT_) < :Inp_Date into :scSumma; -- позиции услуг - корректировка цен for select ID, cPrice from GddKtU where DocID = :ID and CoalEsce(cprice, 0.0) <> 0.0 into :UID, :cPrice do begin S = :cPrice * :dCurs * (:cSumma-:scSumma) / :cSumma; for select cr.cSumma, s.Curs from SaleKuCr cr, SaleKt S where Cr.DgvKey = :ID and S.ID = Cr.SaleKey and CoalEsce(S.SaleDate, S.DAT_) < :Inp_Date into :cS, :sCurs do begin S = S + :cPrice * :sCurs * :cS / :cSumma; end Update GddKtU set Price = :S where ID = :UID; end Select CoalEsce(Sum(Price * Quant), 0.0) from GddKtU where DocID = :ID into :Summa; Update DgvKtU set Summa = :Summa, No_LastEdit=1 where ID = :ID; end^ ALTER PROCEDURE DGVKTU_DELACCNREC ( ID INTEGER) AS declare variable accnkey integer; declare variable dgvkey integer; declare variable keyid integer; begin for select id, accnkey from dgkuaccn where dgvkey=:ID into :keyid,:accnkey do begin delete from dgkuaccn where id=:keyid; delete from accnprov where id=:accnkey; end end^ ALTER PROCEDURE DGVKTU_GENACCNREC ( ID INTEGER) AS declare variable DgvSumma Double Precision; declare variable DgvNds double precision; declare variable salesumma Double Precision; declare variable in_date date; declare variable nameid integer; declare variable PrsnID integer; declare variable cfgcomment varchar(255); declare variable comment varchar(255); declare variable dgvnbr Dmn_Nbr; declare variable nbr Dmn_Nbr; declare variable operid integer; declare variable datetyp integer; declare variable sumtyp integer; declare variable dt varchar(5); declare variable kt varchar(5); declare variable dtp varchar(5); declare variable ktp varchar(5); declare variable dt1 integer; declare variable kt1 integer; declare variable dt3 integer; declare variable kt3 integer; declare variable dt4 integer; declare variable kt4 integer; declare variable dat_ date; declare variable saledate date; declare variable summa Double Precision; declare variable accnkey integer; declare variable opid integer; declare variable oper integer; declare variable dtprt integer; declare variable dtobj integer; declare variable ktprt integer; declare variable ktobj integer; Declare Variable ProcNDS Double Precision; Declare Variable Proc Double Precision; Declare Variable Storno Integer; declare variable UserName Varchar(20); declare variable StorID integer; declare variable OurOrgnID integer; declare variable aCurrTyp integer; declare variable aCurs double precision; declare variable acSumma double precision; declare variable DtCurrTyp integer; declare variable KtCurrTyp integer; declare variable dCurrTyp integer; declare variable dCurs double precision; declare variable dcSumma double precision; declare variable dt8 integer; declare variable kt8 integer; declare variable dt9 integer; declare variable kt9 integer; declare variable VL1 integer; declare variable VL2 integer; begin for select in_date, summa,salesumma,nameid,comment,operid,nbr, saledate,PrsnID,UserName, StorID, OurOrgnID, CurrTyp, cSumma, Curs, VL1, VL2 from dgvktu where ID = :ID into :in_date,:dgvsumma,:salesumma,:nameid,:comment, :operid,:dgvnbr,:saledate,:PrsnID,:UserName,:StorID, :OurOrgnID, :dCurrTyp, :dcSumma, :dCurs, :VL1, :VL2 do begin if(:OperID is Null or :OperID = 0) then begin Execute Procedure DgvKtUGddKtU_GenAccnRec(:ID); exit; end ProcNDS = 20.0; Select cast(val as Double Precision) from SysConst where OurOrgnID = :OurOrgnID and Name = 'ProcNDS' into :ProcNDS; Select CoalEsce(Sum(U.Quant * U.Price), 0.0), CoalEsce(Sum(U.Quant * U.Nds), 0.0), CoalEsce(Sum(U.Quant * U.cPrice), 0.0) from GddKtU U where DocID = :ID into :DgvSumma, :DgvNds, :dcSumma; for select oper from acoprlst where id=:operid into :oper do for select id, dt, kt, accndate, sumtyp, comment, dtprt,dtobj,ktprt,ktobj, Proc, Storno from storaccn where operid=:operid and oper=:oper into :opid, :dt, :kt, :datetyp, :sumtyp, :cfgcomment, :dtprt,:dtobj,:ktprt,:ktobj,:Proc,: Storno do begin aCurrTyp = :dCurrTyp; acSumma = :dcSumma; aCurs = :dCurs; dt1=null; kt1=null; dt3=null; kt3=null; select accn,a1,a3,a4, a8, a9, CurrTyp from accnplan where accn=:dt into :dtp,:dt1,:dt3,:dt4, :dt8, :dt9, :DtCurrTyp; select accn,a1,a3,a4, a8, a9, CurrTyp from accnplan where accn=:kt into :ktp,:kt1,:kt3,:kt4, :kt8, :kt9, :KtCurrTyp; if (:dt1 is not null and :dt1 <> 0) then dt1=:nameid; else dt1 = Null; if (:dt3 is not null and :dt3 <> 0) then dt3=:PrsnID; else dt3 = Null; if (:dt4 is not null and :dt4 <> 0) then dt4=:StorID; else dt4 = Null; if (:kt1 is not null and :kt1 <> 0) then kt1=:nameid; else kt1 = Null; if (:kt3 is not null and :kt3 <> 0) then kt3=:PrsnID; else kt3 = Null; if (:kt4 is not null and :kt4 <> 0) then kt4=:StorID; else kt4 = Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; summa = Null; -- сумма по акту if (:sumtyp = 0) then begin summa = :DgvSumma; acSumma = :dcSumma; end -- НДС if (:sumtyp=1) then begin summa = :DgvNds; if (:aCurs <> 0.0) then acSumma = :Summa / :aCurs; end -- сумма без НДС if (:sumtyp=2) then begin summa = :DgvSumma - :DgvNds; if (:aCurs <> 0.0) then acSumma = :Summa / :aCurs; end if (:SumTyp = 3 or (:DateTyp = 3 and :SumTyp <> 5)) then begin execute procedure dgvktu_genaccnrecsale :ID, :OpID; Summa = null; end if (:sumtyp=4) then begin summa = :dgvsumma - :salesumma; if (:aCurs <> 0) then acSumma = :Summa / :aCurs; end -- курсовая разница (бухг.) if (:SumTyp = 5) then begin execute procedure DgvKtU_GenAccnRecKrb(:ID, :OpID); Summa = 0.0; end dat_ = null; if(:datetyp=0) then dat_=:In_Date; if(:datetyp=1) then dat_=:SaleDate; if(:datetyp=2) then begin if (:saledate is null) then dat_=:in_date; if (:in_date is null) then dat_=:saledate; if (:in_date is not null and :saledate is not null) then begin if (:in_date > :saledate) then dat_=:saledate; else dat_=:in_date; end end if(:datetyp=3) then begin if (:in_date is not null and :saledate is not null) then begin if (:in_date > :saledate) then dat_=:in_date; else dat_=:saledate; end end if (:dtp is not null and :ktp is not null and :dat_ is not null and :summa <> 0 and summa is not null) then begin if (:comment = '' or :comment is null) then comment = :CfgComment; nbr = :DgvNbr; if (:Storno is not Null and :Storno <> 0) then begin Summa=-:Summa; acSumma = -:acSumma; end if (:Proc is not Null and :Proc <> 0.0) then begin Summa = :Summa * :Proc / 100.00; acSumma = :acSumma *:Proc / 100.00; end if (:DtCurrTyp is Null and :KtCurrTyp is Null) then begin aCurrTyp = Null; aCurs = 0.0; acSumma = 0.0; end accnkey = Gen_ID(AccnProv_ID, 1); insert into accnprov(id,OurOrgnID,dat_,summa,dt,kt,comment,Document, dtprt,dtobj,ktprt,ktobj,dt1,kt1,dt3,kt3,dt4,kt4,Oper,OperID,DocID,UserName, dt8, dt9, kt8, kt9, CurrTyp, Curs, cSumma) values(:AccnKey,:OurOrgnID,:dat_,:Summa,:Dt,:Kt,:Comment,:Nbr, :DtPrt,:DtObj,:KtPrt,:KtObj,:Dt1,:Kt1,:Dt3,:Kt3,:dt4,:kt4,:Oper,:OperID,:ID,:UserName, :dt8, :dt9, :kt8, :kt9, :aCurrTyp, :aCurs, :acSumma); insert into DGKUACCN(dgvkey, accnkey) values(:ID, :AccnKey); end end end end^ ALTER PROCEDURE DGVKTU_GENACCNRECKRB ( ID INTEGER, OPID INTEGER) AS declare variable cTyp integer; declare variable SumTyp integer; declare variable DateTyp integer; declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable Summa double precision; declare variable aDate TimeStamp; declare variable AccnProvID integer; declare variable FinRes integer; declare variable Nbr varchar(20); declare variable Comment Varchar(255); declare variable UserName varchar(20); declare variable OurOrgnID integer; declare variable Accn varchar(5); declare variable Storno integer; declare variable d1 integer; declare variable d3 integer; declare variable d4 integer; declare variable k1 integer; declare variable k3 integer; declare variable k4 integer; declare variable d8 integer; declare variable k8 integer; declare variable d9 integer; declare variable k9 integer; declare variable dt1 integer; declare variable dt3 integer; declare variable dt4 integer; declare variable kt1 integer; declare variable kt3 integer; declare variable kt4 integer; declare variable dt8 integer; declare variable dt9 integer; Declare Variable kt8 Integer; Declare Variable kt9 Integer; declare variable Oper integer; declare variable OperID integer; declare variable NameID integer; declare variable PrsnID integer; declare variable StorID integer; Declare Variable VL1 Integer; Declare Variable VL2 Integer; DECLARE VARIABLE DTPRT INTEGER; DECLARE VARIABLE DTOBJ INTEGER; DECLARE VARIABLE KTPRT INTEGER; DECLARE VARIABLE KTOBJ INTEGER; begin select cTyp, Nbr, Comment, UserName, OurOrgnID, NameID, PrsnID, StorID, VL1, VL2 from dgvktu where ID = :ID into :cTyp, :Nbr, :Comment, :UserName, :OurOrgnID, :NameID, :PrsnID, :StorID, :VL1, :VL2; if (:cTyp <> 1) then exit; select Oper, OperID, SumTyp, AccnDate, Dt, Kt, FinRes, Storno, DtPrt, DtObj, KtPrt, KtObj from StorAccn where ID = :OpID into :Oper, :OperID, :SumTyp, :DateTyp, :Dt, :Kt, :FinRes, :Storno, :DtPrt, :DtObj, :KtPrt, :KtObj; for Select kDate, kDelta from DgvKtU_KrbSelect(:ID) into :aDate, :Summa do begin if (:Storno = 1) then Summa = -:Summa; if (:finRes = 0) then begin -- при отриц. сумме - обнулить if (:Summa < 0.0) then Summa = 0.0; end if (:FinRes = 2) then begin -- при отриц. сумме - поменять корреспонденцию if (:Summa < 0.0) then begin Summa = -:Summa; Accn = :Dt; Dt = :Kt; Kt = :Accn; end end if (:Summa <> 0.0) then begin select CoalEsce(a1, 0), CoalEsce(a3, 0), CoalEsce(a4, 0), a8, a9 from accnplan where accn = :dt into :d1, :d3, :d4, :d8, :d9; select CoalEsce(a1, 0), CoalEsce(a3, 0), CoalEsce(a4, 0), a8, a9 from accnplan where accn = :kt into :k1, :k3, :k4, :k8, :k9; dt1 = null; kt1 = null; dt3 = null; kt3 = null; dt4 = null; kt4 = null; dt8 = null; kt8 = null; dt9 = null; kt9 = null; if (:d1 <> 0) then dt1 = :NameID; if (:k1 <> 0) then kt1 = :NameID; if (:d3 <> 0) then dt3 = :PrsnID; if (:k3 <> 0) then kt3 = :PrsnID; if (:d4 <> 0) then dt4 = :StorID; if (:k4 <> 0) then kt4 = :StorID; if (:d8 is not Null) then dt8 = :VL1; if (:d9 is not Null) then dt9 = :VL2; if (:k8 is not Null) then kt8 = :VL1; if (:k9 is not Null) then kt9 = :VL2; AccnProvID = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, OurOrgnID, Dat_, Document, Comment, UserName, Dt, Kt, Summa, Oper, OperID, DocID, dt1, kt1, dt3, kt3, dt4, kt4, dt8, dt9, kt8, kt9, DtPrt, DtObj, KtPrt, KtObj) values(:AccnProvID, :OurOrgnID, :aDate, :Nbr, :Comment, :UserName, :Dt, :Kt, :Summa, :Oper, :OperID, :ID, :dt1, :kt1, :dt3, :kt3, :dt4, :kt4, :dt8, :dt9, :kt8, :kt9, :DtPrt, :DtObj, :KtPrt, :KtObj); insert into dgkuaccn(id, dgvkey, accnkey) values(Gen_ID(DgKuAccn_ID, 1), :ID, :AccnProvID); end end end^ ALTER PROCEDURE DGVKTU_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS declare variable saledate date; declare variable in_date date; declare variable summa Double Precision; declare variable Nds Double Precision; declare variable DgvSumma double precision; declare variable DgvCSumma double precision; declare variable DgvNds double precision; declare variable dgvnameid integer; declare variable salenameid integer; Declare Variable PrsnID integer; declare variable DgvComment varchar(255); declare variable SaleComment varchar(255); declare variable Comment varchar(255); declare variable DgvNbr varchar(20); declare variable SaleNbr varchar(20); declare variable Nbr varchar(20); declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable Dtp varchar(5); declare variable Ktp varchar(5); Declare variable Dt1 integer; Declare variable Kt1 integer; Declare Variable Dt3 integer; Declare Variable Kt3 integer; Declare Variable Dt4 integer; Declare Variable Kt4 integer; Declare Variable StorID integer; Declare variable DateTyp integer; Declare Variable CfgComment Varchar(255); Declare Variable Dat_ Date; Declare Variable AccnKey integer; Declare Variable Storno integer; Declare Variable Oper Integer; Declare Variable OperID integer; Declare Variable DtPrt Integer; Declare Variable DtObj Integer; Declare Variable KtPrt Integer; Declare Variable KtObj Integer; declare variable Proc Double Precision; Declare Variable ProcNDS Double Precision; Declare Variable SumTyp integer; declare variable UserName Varchar(20); Declare Variable kCurs Double Precision; Declare Variable sCurs Double Precision; Declare Variable xCurs Double Precision; Declare Variable scCSumma Double Precision; declare variable CTyp Integer; declare variable CurrTyp Integer; declare variable OurOrgnID integer; declare variable dt8 integer; declare variable kt8 integer; declare variable dt9 integer; declare variable kt9 integer; declare variable VL1 integer; declare variable VL2 integer; begin for select sc.summa, s.SaleDate, k.in_date,s.nameid,k.nameid, s.comment,k.Comment,s.nbr,k.Nbr, k.PrsnID,k.OperID,k.UserName, s.Curs, k.Curs, sc.cSumma, k.CTyp, k.CurrTyp, K.StorID, K.OurOrgnID, K.VL1, K.VL2 from salekucr sc, salekt s, dgvktu k where sc.dgvkey=:ID and k.id=:ID and s.id=sc.salekey into :summa, :saledate, :in_date,:salenameid,:dgvnameid, :SaleComment,:DgvComment,:SaleNbr,:DgvNbr,:PrsnID,:OperID,:UserName, :sCurs, :kCurs, :scCSumma, :cTyp, :CurrTyp, :StorID, :OurOrgnID, :VL1, :VL2 do begin ProcNDS = 20; Select cast(val as Double Precision) from SysConst where OurOrgnID=:OurOrgnID and name='ProcNDS' into :ProcNDS; Select CoalEsce(Sum(U.Quant * U.Price), 0.0), CoalEsce(Sum(U.Quant * U.Nds), 0.0), CoalEsce(Sum(U.Quant * U.cPrice), 0.0) from GddKtU U where DocID = :ID into :DgvSumma, :DgvNds, :DgvCSumma; for select dt,kt,accndate,comment,storno,Oper,SumTyp, DtPrt,DtObj,KtPrt,KtObj,Proc from StorAccn where id=:OpID into :dt,:kt,:DateTyp,:CfgComment,:storno,:Oper,:SumTyp, :DtPrt,:DtObj,:KtPrt,:KtObj,:Proc do begin dtp = null; ktp = null; select Accn, A1,a3,a4, a8, a9 from AccnPlan where accn=:Dt into :Dtp,:Dt1,:Dt3,:dt4, :dt8, :dt9; select Accn, A1,a3,a4, a8, a9 from AccnPlan where accn=:Kt into :Ktp,:Kt1,:Kt3,:kt4, :kt8, :kt9; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if(:Dtp is not null and :Ktp is not null) then begin dat_ = null; if(:Dt3 is not null and :Dt3 <> 0) then Dt3=:PrsnID; if(:Kt3 is not null and :Kt3 <> 0) then Kt3=:PrsnID; if(:Dt4 is not null and :Dt4 <> 0) then Dt4=:StorID; if(:Kt4 is not null and :Kt4 <> 0) then Kt4=:StorID; if(:DateTyp=0)then begin Dat_=:SaleDate; Nbr=:SaleNbr; Comment=:SaleComment; xCurs = :sCurs; if(:Dt1 <> 0 and :Dt1 is not null) then Dt1=:SaleNameID; if(:Kt1 <> 0 and :Kt1 is not null) then Kt1=:SaleNameID; end if(:DateTyp=1) then begin Dat_=:In_Date; Nbr=:DgvNbr; Comment=:DgvComment; xCurs = :kCurs; if(:Dt1 <> 0 and :Dt1 is not null) then Dt1=:DgvNameID; if(:Kt1 <> 0 and :Kt1 is not null) then Kt1=:DgvNameID; end if(:DateTyp=2 and :In_Date is not null and :SaleDate is not null) then begin if(:SaleDate < :In_Date) then begin Dat_=:SaleDate; Nbr=:SaleNbr; Comment=:SaleComment; xCurs = :sCurs; if(:Dt1 <> 0 and :Dt1 is not null) then Dt1=:SaleNameID; if(:Kt1 <> 0 and :Kt1 is not null) then Kt1=:SaleNameID; end else begin Dat_=:In_Date; Nbr=:DgvNbr; Comment=:DgvComment; xCurs = :kCurs; if(:Dt1 <> 0 and :Dt1 is not null) then Dt1=:DgvNameID; if(:Kt1 <> 0 and :Kt1 is not null) then Kt1=:DgvNameID; end end if(:DateTyp=3 and :In_Date is not null and :SaleDate is not null) then begin if(:SaleDate > :In_Date) then begin Dat_=:SaleDate; Nbr=:SaleNbr; Comment=:SaleComment; xCurs = :sCurs; if(:Dt1 <> 0 and :Dt1 is not null) then Dt1=:SaleNameID; if(:Kt1 <> 0 and :Kt1 is not null) then Kt1=:SaleNameID; end else begin Dat_=:In_Date; Nbr=:DgvNbr; Comment=:DgvComment; xCurs = :kCurs; if(:Dt1 <> 0 and :Dt1 is not null) then Dt1=:DgvNameID; if(:Kt1 <> 0 and :Kt1 is not null) then Kt1=:DgvNameID; end end if(:SumTyp=0) then begin -- Сумма по Акту Summa=:Summa; if (:cTyp=1) then begin /* Импорт */ if (:DateTyp=2 or :DateTyp=3) then begin if (:xCurs=0 or :xCurs is Null) then xCurs = 1.0; Summa = :scCSumma * :xCurs; end end end if(:SumTyp=1) then begin -- НДС с суммы -- Summa = :Summa*:ProcNDS/(100+:ProcNDS); if (:DgvSumma = 0.0) then Nds = 0.0; else Nds = :Summa / :DgvSumma * :DgvNds; Summa = :Nds; end if(:SumTyp=2) then begin -- Сумма без НДС -- Summa=:Summa-(:Summa*:ProcNDS/(100+:ProcNDS)); if (:DgvSumma = 0.0) then Nds = 0.0; else Nds = :Summa / :DgvSumma * :DgvNds; Summa = :Summa - :Nds; end if (:SumTyp=3) then begin /* Сумма Оплаты */ if (:cTyp=1) then begin Summa = :scCSumma * :sCurs; end end if(:Dat_ is not null and :Summa <> 0.0) then begin if (:Comment is null or :Comment='') then Comment=:CfgComment; if (:storno is not null and storno <> 0) then summa=-:summa; if(:Proc is not Null and Proc <> 0.0) then Summa=:Summa/100.0*:Proc; if (:Summa <> 0.0) then begin AccnKey=Gen_ID(AccnProv_ID,1); insert into AccnProv(ID,OurOrgnID,Dat_,Dt,Kt,Summa,Document,Comment,Dt1,Kt1,Dt3,Kt3, dt4,kt4, dt8, dt9, kt8, kt9, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID,UserName) values (:AccnKey,:OurOrgnID,:Dat_,:Dt,:Kt,:Summa,:Nbr,:Comment,:Dt1,:Kt1,:Dt3,:Kt3, :Dt4,:Kt4, :dt8, :dt9, :kt8, :kt9, :DtPrt,:DtObj,:KtPrt,:KtObj,:Oper,:OperID,:ID,:UserName); insert into DgKuAccn(ID,DgvKey,AccnKey) values(Gen_ID(DgKuAccn_ID,1),:ID,:AccnKey); end end end end end end^ ALTER PROCEDURE DGVKTU_KRBSELECT ( ID INTEGER) RETURNS ( KDATE TIMESTAMP, KSUMMA DOUBLE PRECISION, KDELTA DOUBLE PRECISION, KCURS DOUBLE PRECISION, CURS DOUBLE PRECISION) AS declare variable InpDate TimeStamp; declare variable cSumma double precision; declare variable dCurs double precision; declare variable sSumm double precision; declare variable sCurs double precision; declare variable CurrTyp integer; declare variable SaleID integer; declare variable KrbTyp integer; declare variable cSumm double precision; begin select In_Date, cSumma, Curs, CurrTyp from dgvktu where ID = :ID into :InpDate, :cSumma, :dCurs, :CurrTyp; if (:InpDate is Null) then exit; kCurs = :dCurs; Curs = :dCurs; for select eDate, cast(0 as integer) as Typ, cast(Null as integer) as ID, cast(Null as double precision) cSumm from f_Quarter_DataSet( (select KK.In_Date from DgvKtU KK where KK.ID = :ID), cast(Current_Date as TimeStamp)) union select S.SaleDate, cast(1 as integer) as Typ, S.ID, CR.cSumma from SaleKuCr CR, SaleKt S where Cr.DgvKey = :ID and S.ID = CR.SaleKey and S.SaleDate is not Null order by 1, 2, 3 into :kDate, :KrbTyp, :SaleID, :cSumm do begin select CoalEsce(Sum(Cr.cSumma), 0.0) from SaleKuCr Cr, SaleKt S where Cr.DgvKey = :ID and S.ID = Cr.SaleKey and S.SaleDate is not Null and S.SaleDate <= :kDate into :sSumm; -- сумма оплаты select Val from Currency_GetValue(:CurrTyp, :kDate) into :sCurs; if (:SaleID is not Null) then begin -- КР по оплате kSumma = cSumm; if (:kDate < :InpDate) then kSumma = 0.0; kDelta = cSumm * (:sCurs - :kCurs); if (Abs(:kSumma) > 1.0e-5) then begin Curs = :sCurs; suspend; end end else begin -- КР по границе квартала if (:kDate < :InpDate) then kSumma = -:sSumm; else kSumma = :cSumma - :sSumm; if (:kSumma < 0.0) then kSumma = 0.0; if (:kDate > Current_Date) then kSumma = 0.0; kDelta = :kSumma * (:sCurs-:kCurs); if (Abs(:kSumma) > 1.0e-5) then begin Curs = :sCurs; suspend; kCurs = sCurs; end end end end^ ALTER PROCEDURE DGVKTU_NEWID RETURNS ( ID INTEGER) AS begin id=Gen_ID(DgvKtU_ID,1); end^ ALTER PROCEDURE DGVKTUGDDKTU_GENACCNREC ( ID INTEGER) AS declare variable OperID integer; declare variable Oper integer; declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable Accn varchar(5); declare variable An integer; declare variable DateTyp integer; declare variable SumTyp integer; declare variable prSum double precision; -- сумма с НДС declare variable pnSum double precision; -- сумма без НДС declare variable ndSum double precision; -- сумма НДС declare variable pcSum double precision; -- сумма в валюте declare variable aSumma double precision; -- сумма проводки declare variable aDate Date; -- дата проводки declare variable AccnProvID integer; declare variable InDate Date; declare variable SaleDate Date; declare variable nbr dmn_nbr; declare variable Comment varchar(255); declare variable UserName varchar(20); declare variable DtPrt integer; declare variable KtPrt integer; declare variable DtObj integer; declare variable KtObj integer; declare variable OpID integer; declare variable Curs double precision; declare variable acSumma double precision; declare variable cTyp integer; declare variable dtCurrTyp integer; declare variable ktCurrTyp integer; declare variable CurrTyp integer; declare variable OurOrgnID integer; declare variable dt1 integer; -- организации declare variable kt1 integer; declare variable dt3 integer; -- сотрудники declare variable kt3 integer; declare variable dt4 integer; -- склады declare variable kt4 integer; declare variable dt8 integer; -- валовые доходы declare variable kt8 integer; declare variable dt9 integer; -- валовые расходы declare variable kt9 integer; declare variable VL1 integer; declare variable VL2 integer; declare variable OrgnID integer; declare variable StorID integer; declare variable PrsnID integer; declare variable GddKtUID integer; declare variable Storno integer; declare variable Proc double precision; declare variable FinRes integer; begin for select K.ID, K.OperID, K.Quant * K.Price, K.Quant * K.Nds, K.Quant * (K.Price-K.Nds), K.Quant * K.cPrice from GddKtU K where K.DocID = :ID and K.OperID is not Null into :GddKtUID, :OperID, :prSum, :ndSum, :pnSum, :pcSum do begin Select In_Date, SaleDate, Nbr, Comment, UserName, cTyp, Curs, CurrTyp, OurOrgnID, NameID, StorID, PrsnID, VL1, VL2 from DgvKtU where ID = :ID into :InDate, :SaleDate, :Nbr, :Comment, :UserName, :cTyp, :Curs, :CurrTyp, :OurOrgnID, :OrgnID, :StorID, :PrsnID, :VL1, :VL2; for select ID, Oper, Dt, Kt, SumTyp, AccnDate, DtPrt, DtObj, KtPrt, KtObj, Storno, Proc, FinRes from StorAccn where OperID = :OperID into :OpID, :Oper, :Dt, :Kt, :SumTyp, :DateTyp, :DtPrt, :DtObj, :KtPrt, :KtObj, :Storno, :Proc, :FinRes do begin aSumma = Null; acSumma = :pcSum; Select CurrTyp, a1, a3, a4, a8, a9 from AccnPlan where Accn = :Dt into :dtCurrTyp, :dt1, :dt3, :dt4, :dt8, :dt9; Select CurrTyp, a1, a3, a4, a8, a9 from AccnPlan where Accn = :Kt into :ktCurrTyp, :kt1, :kt3, :kt4, :kt8, :kt9; if (:dt1 = 1) then dt1 = :OrgnID; else dt1 = Null; if (:kt1 = 1) then kt1 = :OrgnID; else kt1 = Null; if (:dt3 = 1) then dt3 = :PrsnID; else dt3 = Null; if (:kt3 = 1) then kt3 = :PrsnID; else kt3 = Null; if (:dt4 = 1) then dt4 = :StorID; else dt4 = Null; if (:kt4 = 1) then kt4 = :StorID; else kt4 = Null; if (:dt8 is not Null) then dt8 = :VL1; else dt8 = Null; if (:kt8 is not Null) then kt8 = :VL1; else kt8 = Null; if (:dt9 is not Null) then dt9 = :VL2; else dt9 = Null; if (:kt9 is not Null) then kt9 = :VL2; else kt9 = Null; if (:SumTyp = 0) then -- сумма с НДС aSumma = :prSum; if (:SumTyp = 1) then -- НДС aSumma = :ndSum; if (:SumTyp = 2) then -- сумма без НДС aSumma = :pnSum; if (:DateTyp = 0) then -- дата исполнения aDate = :InDate; if (:DateTyp = 1) then -- дата оплаты aDate = :SaleDate; if (:DateTyp = 2) then begin -- по выполнению или оплате (первое событие) if (:InDate is Null) then aDate = :SaleDate; else if (:SaleDate is Null) then aDate = :InDate; else begin if (:SaleDate < :InDate) then aDate = :SaleDate; else aDate = :InDate; end end if (:DateTyp = 3) then begin -- по выполнению и оплате (последнее событие) if (:InDate is not Null and :SaleDate is not Null) then begin if (:InDate > :SaleDate) then aDate = :InDate; else aDate = :SaleDate; end end if (:SumTyp = 3 or :DateTyp = 3) then begin execute procedure DgvKtUGddKtU_GenAccnrecSale :GddKtUID, :OpID; aSumma = Null; end if (:cTyp = 0 or (:dtCurrTyp is Null and :ktCurrTyp is Null)) then begin Curs = 0.0; acSumma = 0.0; CurrTyp = Null; end if (:Storno = 1) then aSumma = -:aSumma; if (:Proc is not Null and :Proc <> 0.0) then aSumma = :aSumma / 100.00 * :Proc; if (:FinRes = 0) then begin -- при отриц. сумме - обнулить if (:aSumma < 0.0) then aSumma = 0.0; end if (:FinRes = 2) then begin -- при отриц. сумме - поменять корреспонденцию if (:aSumma < 0.0) then begin aSumma = -:aSumma; Accn = :Dt; Dt = :Kt; Kt = :Accn; An = :dt1; dt1 = :kt1; kt1 = :An; An = :dt3; dt3 = :kt3; kt3 = :An; An = :dt4; dt4 = :kt4; kt4 = :An; An = :dt8; dt8 = :kt8; kt8 = :An; An = :dt9; dt9 = :kt9; kt9 = :An; end end if (:aSumma is not Null and :aSumma <> 0.0 and :aDate is not Null) then begin AccnProvID = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, OurOrgnID, Dat_, Document, Summa, Dt, Kt, Comment, UserName, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID, Curs, cSumma, CurrTyp, dt1, kt1, dt3, kt3, dt4, kt4, dt8, kt8, dt9, kt9) values(:AccnProvID, :OurOrgnID, :aDate, :Nbr, :aSumma, :Dt, :Kt, :Comment, :UserName, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :OperID, :ID, :Curs, :acSumma, :CurrTyp, :dt1, :kt1, :dt3, :kt3, :dt4, :kt4, :dt8, :kt8, :dt9, :kt9); insert into DgKuAccn(DgvKey, AccnKey) values (:ID, :AccnProvID); end end end end^ ALTER PROCEDURE DGVKTUGDDKTU_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS declare variable Dt varchar(5); declare variable Kt varchar(5); declare variable Accn varchar(5); declare variable An integer; declare variable DateTyp integer; declare variable SumTyp integer; declare variable prSum double precision; declare variable pnSum double precision; declare variable ndSum double precision; declare variable pcSum double precision; declare variable ssSum double precision; declare variable scSum double precision; declare variable dgSum double precision; declare variable dcSum double precision; declare variable DocID integer; declare variable Oper integer; declare variable OperID integer; declare variable InDate date; declare variable SaleDate date; declare variable aDate date; declare variable aSumma double precision; declare variable acSumma double precision; declare variable dt1 integer; -- организации declare variable kt1 integer; declare variable dt3 integer; -- сотрудники declare variable kt3 integer; declare variable dt4 integer; -- склады declare variable kt4 integer; declare variable dt8 integer; -- валовые доходы declare variable kt8 integer; declare variable dt9 integer; -- валовые расходы declare variable kt9 integer; declare variable VL1 integer; declare variable VL2 integer; declare variable OrgnID integer; declare variable StorID integer; declare variable PrsnID integer; declare variable AccnProvID integer; declare variable Nbr Dmn_Nbr; declare variable Comment varchar(255); declare variable UserName varchar(20); declare variable DtPrt integer; declare variable KtPrt integer; declare variable DtObj integer; declare variable KtObj integer; declare variable OurOrgnID integer; declare variable Curs double precision; declare variable CurrTyp integer; declare variable dtCurrTyp integer; declare variable ktCurrTyp integer; declare variable cTyp integer; declare variable Storno integer; declare variable Proc double precision; declare variable FinRes integer; begin select Dt, Kt, SumTyp, AccnDate, OperID, Oper, DtPrt, DtObj, KtPrt, KtObj, Storno, Proc, FinRes from StorAccn where ID = :OpID into :Dt, :Kt, :SumTyp, :DateTyp, :OperID, :Oper, :DtPrt, :DtObj, :KtPrt, :KtObj, :Storno, :Proc, :FinRes; Select K.DocID, K.Quant * K.Price, K.Quant * K.Nds, K.Quant * (K.Price-K.Nds), K.Quant * K.cPrice from GddKtU K where K.ID = :ID into :DocID, :prSum, :ndSum, :pnSum, :pcSum; for select KK.In_Date, S.SaleDate, sc.Summa, sc.cSumma, KK.VL1, KK.VL2, KK.NameID, KK.StorID, KK.PrsnID, KK.OurOrgnID, KK.Nbr, KK.Comment, KK.UserName, KK.Curs, KK.CurrTyp, KK.cTyp, KK.Summa, KK.cSumma from SaleKuCr sc, DgvKtU KK, GddKtU K, SaleKt S where sc.DgvKey = :DocID and KK.ID = :DocID and K.ID = :ID and S.ID = SC.SaleKey and KK.In_Date is not Null and S.SaleDate is not Null and sc.Summa <> 0.0 and KK.Summa <> 0.0 into :InDate, :SaleDate, :ssSum, scSum, :VL1, :VL2, :OrgnID, :StorID, :PrsnID, :OurOrgnID, :Nbr, :Comment, :UserName, :Curs, :CurrTyp, :cTyp, :dgSum, :dcSum do begin aSumma = Null; acSumma = 0.0; Select CurrTyp, a1, a3, a4, a8, a9 from AccnPlan where Accn = :Dt into :dtCurrTyp, :dt1, :dt3, :dt4, :dt8, :dt9; Select CurrTyp, a1, a3, a4, a8, a9 from AccnPlan where Accn = :Kt into :ktCurrTyp, :kt1, :kt3, :kt4, :kt8, :kt9; if (:dt1 = 1) then dt1 = :OrgnID; else dt1 = Null; if (:kt1 = 1) then kt1 = :OrgnID; else kt1 = Null; if (:dt3 = 1) then dt3 = :PrsnID; else dt3 = Null; if (:kt3 = 1) then kt3 = :PrsnID; else kt3 = Null; if (:dt4 = 1) then dt4 = :StorID; else dt4 = Null; if (:kt4 = 1) then kt4 = :StorID; else kt4 = Null; if (:dt8 is not Null) then dt8 = :VL1; else dt8 = Null; if (:kt8 is not Null) then kt8 = :VL1; else kt8 = Null; if (:dt9 is not Null) then dt9 = :VL2; else dt9 = Null; if (:kt9 is not Null) then kt9 = :VL2; else kt9 = Null; if (:SumTyp = 0) then begin -- сумма с НДС aSumma = :prSum / :dgSum * :ssSum; end if (:SumTyp = 1) then begin -- НДС aSumma = :ndSum / :dgSum * :ssSum; end if (:SumTyp = 2) then begin -- сумма без НДС aSumma = :pnSum / :dgSum * :ssSum; end if (:SumTyp = 3) then begin -- сумма оплаты aSumma = :ssSum; end if (:DateTyp = 0) then -- дата исполнения aDate = :InDate; if (:DateTyp = 1) then -- дата оплаты aDate = :SaleDate; if (:DateTyp = 2) then begin -- по выполнению или оплате (первое событие) if (:InDate is Null) then aDate = :SaleDate; else if (:SaleDate is Null) then aDate = :InDate; else begin if (:SaleDate < :InDate) then aDate = :SaleDate; else aDate = :InDate; end end if (:DateTyp = 3) then begin -- по выполнению и оплате (последнее событие) if (:InDate is not Null and :SaleDate is not Null) then begin if (:InDate > :SaleDate) then aDate = :InDate; else aDate = :SaleDate; end end if (:cTyp = 0 or (:dtCurrTyp is Null and :ktCurrTyp is Null)) then begin Curs = 0.0; acSumma = 0.0; CurrTyp = Null; end if (:Storno = 1) then aSumma = -:aSumma; if (:Proc is not Null and :Proc <> 0.0) then aSumma = :aSumma / 100.00 * :Proc; if (:FinRes = 0) then begin -- при отриц. сумме - обнулить if (:aSumma < 0.0) then aSumma = 0.0; end if (:FinRes = 2) then begin -- при отриц. сумме - поменять корреспонденцию if (:aSumma < 0.0) then begin aSumma = -:aSumma; Accn = :Dt; Dt = :Kt; Kt = :Accn; An = :dt1; dt1 = :kt1; kt1 = :An; An = :dt3; dt3 = :kt3; kt3 = :An; An = :dt4; dt4 = :kt4; kt4 = :An; An = :dt8; dt8 = :kt8; kt8 = :An; An = :dt9; dt9 = :kt9; kt9 = :An; end end if (:aSumma is not Null and :aSumma <> 0.0 and :aDate is not Null) then begin AccnProvID = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, OurOrgnID, Dat_, Document, Summa, Dt, Kt, Comment, UserName, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID, Curs, cSumma, CurrTyp, dt1, kt1, dt3, kt3, dt4, kt4, dt8, kt8, dt9, kt9) values(:AccnProvID, :OurOrgnID, :aDate, :Nbr, :aSumma, :Dt, :Kt, :Comment, :UserName, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :OperID, :DocID, :Curs, :acSumma, :CurrTyp, :dt1, :kt1, :dt3, :kt3, :dt4, :kt4, :dt8, :kt8, :dt9, :kt9); insert into DgKuAccn(DgvKey, AccnKey) values (:DocID, :AccnProvID); end end end^ ALTER PROCEDURE DGVWK_MAKEDGVKT ( ID INTEGER) AS declare variable DgvKtID integer; declare variable DgvDtID integer; declare variable Summa double precision; Declare Variable Inp_Date Date; Declare Variable Nbr Dmn_Nbr; Declare Variable GodsID integer; Declare Variable Stor Integer; Declare Variable StorID integer; Declare Variable NameID integer; Declare Variable Name Varchar(40); Declare Variable ProcNDS Double Precision; Declare Variable GdsKey Integer; Declare Variable GddKey Integer; Declare Variable Quant Double Precision; Declare Variable Price Double Precision; Declare Variable Nds Double Precision; Declare Variable Akciz Double Precision; Declare Variable UserName Varchar(20); Declare Variable Comment Varchar(255); begin select DgvDtID, Inp_Date,Nbr,Stor,StorID,MstGdsID,Quant,UserName,Comment from DgvWk where ID=:ID into :DgvDtID,:Inp_Date,:Nbr,:Stor,:StorID,:GodsID,:Quant,:UserName,:Comment; if (:Inp_Date is Null) then exit; DgvKtID = Gen_ID(DgvKt_ID, 1); Select Name, NdsProc From StorList where ID=:StorID into :Name,:ProcNDS; Select ID from Orgn where Name=:Name into :NameID; if (:NameID is Null) then begin NameID=Gen_ID(Orgn_ID, 1); insert into Orgn (ID,Name,FullName) Values(:NameID,:Name,:Name); end Select Sum(Price*Quant) from GddDt where DgvKey=:DgvDtID into :Summa; insert into DgvKt (ID, Dat_, Nbr,NameID,Stor,StorID, Summa,UserName, Typ, Comment, DgvKey) Values(:DgvKtID,:Inp_Date,:Nbr,:NameID,:StorID,:Stor,:Summa,:UserName, 4, -- потом меняется на 1 :Comment, :DgvDtID); for select D.ID, D.Price, D.Nds, K.Akciz, K.GdsKey, D.Quant from GddDt D, GddKt K where D.DgvKey=:DgvDtID and K.ID=D.GddKey into :GddKey, :Price, :Nds, :Akciz, :GdsKey, :Quant do begin Insert into GddKt (ID,GdsKey,DgvKey, GddKey, ZNBR, KPRICE, KNDS, Source,Quant,Price,Nds,Akciz,PriceNs) Values(Gen_ID(GddKt_ID, 1),:GdsKey,:DgvKtID, :GddKey, :NBR, :Price, :Nds, :Quant,:Quant,:Price,:Nds,:Akciz,:Price-:Nds); end Update DgvWk set DgvKtID=:DgvKtID where ID=:ID; Update DgvDt set DgvKey=:DgvKtID where ID=:DGvDtID; end^ ALTER PROCEDURE DGVWK_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(dgvwk_id,1); end^ ALTER PROCEDURE DGVWKG_CALCTPRICE1 RETURNS ( DGVKTID INTEGER, DGVDTID INTEGER) AS declare Variable ID integer; declare variable dSumma double precision; declare variable DPSum double precision; declare variable DNSum double precision; declare variable KPrice double precision; declare variable KNds double precision; declare variable KPrice1 double precision; declare variable KNds1 double precision; declare Variable Quant double precision; /*declare Variable DgvDtID integer; declare Variable DgvKtID integer;*/ declare Variable GddKtID integer; begin for Select ID, DgvDtID, DgvKtID from DgvWkg W where W.Inp_Date is not Null and W.Inp_Date >= '01.04.03' into :ID, :DGvDtID, :DGvKtID do begin for Select Sum(D.Quant * K.KPrice), Sum(D.Quant*K.KNds) from DgvDt DD, GddDt D, GddKt K where DD.ID=:DgvDtID and D.DgvKey=DD.ID and K.ID=D.GddKey into :DPSum, :DNSum do begin GddKtID = Null; Select min(ID) from GddKt where DgvKey=:DgvKtID into :GddKtID; if (:GddKtID is not Null) then begin Select Source, KPrice, KNds from GddKt where ID=:GddKtID into :Quant, :KPrice1, :KNds1; KPrice = 0; KNds = 0; if (:Quant <> 0) then begin KPrice = DPSum / Quant; KNds = DNSum / Quant; end if (:KPrice <> :KPrice1 or :KNds <> :KNds1) then Update GddKt set KPrice=:KPrice, KNds = :KNds where ID=:GddKtID; end end Suspend; end for Select ID from DgvKt where Typ=4 and ZID is not Null into :DgvKtID do begin for Select ID from gddkt where DgvKey=:DgvKtID into :GddKtID do begin DPSum = Null; DNSum = Null; select Sum(D.Quant * K.KPrice), Sum(D.Quant* K.KNds) from GddDt D, GddKt K where D.ZKID=:gddktid and K.ID=D.GddKey into :DPSum, :DNSum; if (:DPSum is Null) then DPSum = 0.0; if (:DNSum is Null) then DNSum = 0.0; Select Source, KPrice, KNds from GddKt where ID=:GddKtID into :Quant, :KPrice1, :KNds1; KPrice = 0; KNds = 0; if (:Quant <> 0) then begin KPrice = DPSum / Quant; KNds = DNSum / Quant; end if (:KPrice <> :KPrice1 or :KNds <> :KNds1) then Update GddKt set KPrice=:KPrice, KNds = :KNds where ID=:GddKtID; end Suspend; end end^ ALTER PROCEDURE DGVWKG_INP_OUT_DATE AS declare variable ID integer; declare variable DGvDtID integer; declare variable Inp_Date Date; begin for select ID, DgvDtID, Inp_Date from DgvWkG where Inp_Date is not null and Out_Date is not Null and Inp_Date <> Out_Date into :ID, :DgvDtID, :Inp_Date do begin Update DgvWkG set Out_Date = :Inp_Date where ID=:ID; Update DgvDt Set Out_Date = :Inp_Date where ID=:DgvDtID; end end^ ALTER PROCEDURE DGVWKG_MAKEDGVKT ( ID INTEGER) AS declare variable DgvKtID integer; declare variable DgvDtID integer; declare variable SummaN double precision; Declare Variable Inp_Date Date; Declare Variable Quant Double Precision; Declare Variable Nbr Dmn_Nbr; Declare Variable GodsID integer; Declare Variable Stor Integer; Declare Variable StorID integer; Declare Variable NameID integer; Declare Variable Name Varchar(40); Declare Variable ProcNDS Double Precision; Declare Variable Price Double Precision; Declare Variable PriceN Double Precision; Declare Variable Nds Double Precision; Declare Variable kPrice Double Precision; Declare Variable kNds Double Precision; Declare Variable kPSum Double Precision; Declare Variable kNSum Double Precision; Declare Variable UserName Varchar(20); Declare Variable Comment Varchar(255); Declare Variable OperID Integer; declare variable PID integer; declare variable PGodsID integer; declare variable PQuant Double Precision; declare variable PMult Double Precision; declare variable PSumMult Double Precision; Declare Variable PPrice Double Precision; Declare Variable PNds Double Precision; begin select DgvDtID, Inp_Date, Nbr, Stor, StorID, MstGdsID, Quant, UserName, Comment, OperID from DgvWkG where ID=:ID into :DgvDtID, :Inp_Date, :Nbr, :Stor, :StorID, :GodsID, :Quant, :UserName, :Comment, :OperID; if (:Quant=0.0) then Quant=1.0; if (:Inp_Date is Null) then exit; Select Name, NdsProc From StorList where ID=:StorID into :Name,:ProcNDS; Select ID from Orgn where Name=:Name into :NameID; if (:NameID is Null) then begin NameID=Gen_ID(Orgn_ID, 1); insert into Orgn (ID,Name,FullName) Values(:NameID,:Name,:Name); end Select Sum(M2.Mult) from WorkMain M1, WorkMain M2 where M1.GodsID=:GodsID and M2.ParentID=M1.ID into :PSumMult; if (:PSumMult is Null) then PSumMult = 0.0; Select Sum((D.Price-D.NDS)*D.Quant), Sum(K.kPrice*D.Quant), Sum(K.kNds*D.Quant) from GddDt D, GddKt K where D.DgvKey=:DgvDtID and K.ID=D.GddKey into :SummaN, :kPSum, :kNSum; DgvKtID = Gen_ID(DgvKt_ID, 1); insert into DgvKt (ID, Dat_, Nbr,NameID,Stor,StorID,UserName, Typ,Comment,OperID, DgvKey) Values(:DgvKtID,:Inp_Date,:Nbr,:NameID,:StorID,:Stor,:UserName, 4,:Comment,:OperID,:DgvDtID); PriceN = :SummaN /:Quant / (1.0+:PSumMult); Nds = PriceN * :ProcNDS / 100.00; Price = :PriceN + :Nds; kPrice = :kPSum / :Quant / (1.0 + :PSumMult); kNds = :kNSum / :Quant / (1.0 + :PSumMult); Insert into GddKt (ID, GdsKey, DgvKey, Source, Quant, Price, Nds, Akciz, PriceNs, KPrice, KNds) Values(Gen_ID(GddKt_ID, 1), :GodsID, :DgvKtID, :Quant, :Quant, :Price, :Nds, 0.0, :PriceN, :kPrice, :kNds); for select M2.ID, M2.GodsID, M2.Quant, M2.Mult from WorkMain M1, WorkMain M2 where M1.GodsID=:GodsID and M2.ParentID=M1.ID and M2.Quant <> 0.0 into :PID, :PGodsID, :PQuant, :PMult do begin PPrice = :Price / :PQuant * :PMult; PNds = :Nds / :PQuant * :PMult; kPrice = :kPSum / :PQuant * :PMult; kNds = :kNSum / :PQuant * :PMult; Insert Into GddKt(ID, GdsKey, DgvKey, Source, Quant, Price, Nds, Akciz, PriceNs, KPrice, KNds) Values(Gen_ID(GddKt_ID,1), :PGodsID, :DgvKtID, :Quant*:PQuant, :Quant*:PQuant, :PPrice, :PNds, 0.0, :PPrice-:PNds, :kPrice, :kNds); end Update DgvWkG set DgvKtID=:DgvKtID where ID=:ID; Update DgvDt set DgvKey=:DgvKtID where ID=:DgvDtID; Update DgvKt set OperID=:OperID where ID=:DgvKtID; end^ ALTER PROCEDURE DGVWKG_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(dgvwkg_id,1); end^ ALTER PROCEDURE DKBILL_MAKEDGV ( BILLID INTEGER) RETURNS ( ID INTEGER, GODSID INTEGER, QNTINP DOUBLE PRECISION) AS declare variable Stor integer; declare variable StorInpID integer; declare variable QntOut double precision; /* расход в гр. */ declare variable QntClc double precision; declare variable CntReal double precision; -- расход чашек - реализация declare variable Cnt_Tmc double precision; -- расход чашек - (ТМЦ) declare variable Cnt_All double precision; -- расход чашек - общий declare variable Qnt double precision; declare variable OrgnID integer; declare variable DgvDtIntrID integer; declare variable DgvDtRealID integer; declare variable DgvDt_TmcID integer; declare variable DAT_ TimeStamp; declare variable KID integer; declare variable QntKt double precision; declare variable Price double precision; declare variable Nds double precision; declare variable ProcNds double precision; declare variable UserName varchar(20); declare variable Qnt_One double precision; declare variable QntX double precision; declare variable OperIntrID integer; declare variable OperRealID integer; declare variable Oper_TmcID integer; declare variable Calc integer; declare variable QuantDecor double precision; declare variable gName varchar(40); declare variable gCode varchar(20); begin Select ID, DAT_, Stor, StorInpID, OrgnID, UserName, OperIntrID, OperRealID, Oper_TmcID from DkBill where ID = :BillID into :ID, :DAT_, :Stor, :StorInpID, :OrgnID, :UserName, :OperIntrID, :OperRealID, :Oper_TmcID; if (:ID is Null or :Stor is Null or :StorInpID is Null) then begin -- аварийный выход: нет накладной, не указан склад if (:Stor is Null) then Exception Common_Exception 'Не указан склад'; else if (:StorInpID is Null) then Exception Common_Exception 'Не указан исходный склад'; suspend; exit; end select NdsProc from StorList where ID = :Stor into :ProcNds; /* защитная блокировка от модификации */ update DkBill set DAT_ = DAT_ where ID = :BillID; /* проверить наличие товара на складе-источнике */ for select GodsID, Sum(QuantInp) from DkBillGds where BillID = :BillID group by GodsID into :GodsID, :QntInp do begin -- QntInp - требуемое количество Qnt = Null; Select Sum(Quant) from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor = :StorInpID and K.ID = Q.ID and KK.ID = K.DgvKey and KK.DAT_ <= :DAT_ and K.GdsKey+0 = :GodsID into :Qnt; -- Qnt - количество в наличии if (:Qnt is Null) then Qnt = 0.0; if (: Qnt < :QntInp and Abs(:Qnt-:QntInp) > 1.0e-5) then begin Select Name, Code from Goods where ID = :GodsID into :gName, :gCode; Exception Common_Exception 'Недостача (исх. сырье): '|| gName || ' ' || gCode; ID = Null; end end if (:ID is Null) then begin -- аварийный выход - недостаточно товара в наличии suspend; exit; end -- формирование накладной на внутреннюю передачу -- передача исходного сырья в производство DgvDtIntrID = Gen_ID(DgvDt_ID, 1); insert into DgvDt(ID, DAT_, Nbr, Stor, StorID, Typ, UserName, OperID) values(:DgvDtIntrID, :DAT_, :BillID, :StorInpID, :Stor, 1, :UserName, :OperIntrID); -- позиции товара в накладной for select GodsID, Sum(QuantInp), Sum(Quant1+Quant2+Quant3+Quant4+Quant5+Quant6+quant7) from DkBillGds where BillID = :BillID group by GodsID into :GodsID, :QntInp, :Cnt_All do begin -- QntInp - требуемое количество for select K.ID, K.Quant from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor = :StorInpID and K.ID = Q.ID and K.GdsKey+0 = :GodsID and KK.ID = K.DgvKey and KK.DAT_ <= :DAT_ order by KK.DAT_, KK.ID, K.ID into :KID, :QntKt do begin Qnt = :QntInp; -- требуемое количество if (:Qnt > :QntKt) then Qnt = :QntKt; if (:Qnt > 0.0) then begin insert into GddDt(ID, GddKey, GdsKey, DgvKey, Quant, Qnt_One) values(Gen_ID(GddDt_ID, 1), :KID, :GodsID, :DgvDtIntrID, :Qnt, 0.0); QntInp = :QntInp - :Qnt; end end end if (Exists (Select ID from GddDt where DgvKey=:DgvDtIntrID)) then begin /* накладная не пустая - формирование приходной накладной */ update DgvDt set Out_Date = Dat_ where ID = :DgvDtIntrID; update DkBill set DgvDtIntrID = :DgvDtIntrID where ID = :BillID; -- расчет Qnt_One в приходной накладной на производство for select K.ID, K.GdsKey, K.Source from DgvDt DD, GddKt K where DD.ID = :DgvDtIntrID and K.DgvKey = DD.DgvKey into :KID, :GodsID, :Qnt do begin Select Sum(QuantInp), Sum(Quant1+Quant2+Quant3+Quant4+Quant5+Quant6+quant7) from DkBillGds where BillID = :BillID and GodsID = :GodsID into :QntInp, :Cnt_All; if (:QntInp is Null) then QntInp = 0.0; if (:Cnt_All is Null) then Cnt_All = 0.0; Qnt_One = 0.0; if (:QntInp <> 0.0) then Qnt_One = :Qnt * :Cnt_All / :QntInp; update GddKt set Src_One = :Qnt_One, Qnt_One=:Qnt_One where ID = :KID; end end else begin Delete from DgvDt where ID = :DgvDtIntrID; DgvDtIntrID = Null; end -- формирование накладной на реализацию товара DgvDtRealID = Gen_ID(DgvDt_ID, 1); insert into DgvDt(ID, Stor, DAT_, Out_Date, Nbr, NameID, Typ, ProcNds, UserName, OperID) values(:DgvDtRealID, :Stor, :DAT_, :DAT_, :BillID, :OrgnID, 0, :ProcNds, :UserName, :OperRealID); for select D.GodsID, D.QntBeg+D.QuantInp-D.QntEnd, D.Quant1, D.Price, D.Quant2+D.Quant3+D.Quant4+D.Quant5+D.Quant6+D.Quant7, D.Calc, D.QuantDecor from DkBillGds D where D.BillID = :BillID and D.Quant1 <> 0 and D.QntBeg+D.QuantInp-D.QntEnd <> 0.0 order by D.ID into :GodsID, :QntOut, :CntReal, :Price, :Cnt_Tmc, :Calc, :QuantDecor do begin -- QntOut - расход сырья (реализация + ТМЦ) -- if (:Calc = 1) then begin-- OutOut - расход порций кофе -- Price = :Price * (:CntReal + :Cnt_Tmc) / :QntOut; /* цена реализации по сырью */ -- QntClc = :QntOut / (:CntReal+:Cnt_Tmc) * :CntReal; -- расход сырья (реализация) -- end -- else begin -- QntOut - расход порций прочих продуктов Price = :Price * (:CntReal + :Cnt_Tmc) / (:QntOut-:QuantDecor); /* цена реализации по сырью */ QntClc = (:QntOut-:QuantDecor) / (:CntReal+:Cnt_Tmc) * :CntReal; -- расход сырья (реализация) -- end if (:QntClc <> 0.0) then begin QntX = :QntClc; for select K.ID, K.Quant from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor = :Stor and K.ID = Q.ID and K.GdsKey+0 = :GodsID and KK.ID=K.DgvKey and KK.DAT_ <= :DAT_ into :KID, :QntKt do begin Qnt = :QntX; if (:Qnt > :QntKt) then Qnt = :QntKt; if (:Qnt > 0.0) then begin Nds = Price / (:ProcNds+100.00) * :ProcNds; insert into GddDt(ID, GddKey, GdsKey, DgvKey, Quant, Price, Nds, PriceN, Qnt_One) values(Gen_ID(GddDt_ID, 1), :KID, :GodsID, :DgvDtRealID, :Qnt, :Price, :Nds, :Price-:Nds, :Qnt *:CntReal/:QntClc); QntX = :QntX - :Qnt; end end if (Abs(:QntX) > 1.0e-5) then begin Select Name, Code from Goods where ID = :GodsID into :gName, :gCode; Exception Common_Exception 'Недостача (реализация): '|| gName || ' ' || gCode; end end end if (Exists (Select ID from GddDt where DgvKey=:DgvDtRealID)) then begin /* накладная не пустая */ update DgvDt set Out_Date = :Dat_ where ID = :DgvDtRealID; update DkBill set DgvDtRealID = :DgvDtRealID where ID = :BillID; end else begin Delete from DgvDt where ID = :DgvDtRealID; DgvDtRealID = Null; end -- формирование накладной на списание ТМЦ DgvDt_TmcID = Gen_ID(DgvDt_ID, 1); insert into DgvDt(ID, DAT_, Nbr, Out_Date, Stor, Typ, UserName, OperID) values(:DgvDt_TmcID, :DAT_, :BillID, :DAT_, :Stor, 4, :userName, :Oper_TmcID); for select D.GodsID, D.QntBeg+D.QuantInp-D.QntEnd, D.Quant1, D.Price, D.Quant2+D.Quant3+D.Quant4+D.Quant5+D.Quant6+D.Quant7, D.Calc, D.QuantDecor from DkBillGds D where D.BillID = :BillID and D.Quant2+Quant3+Quant4+Quant5+Quant6+Quant7 <> 0 and D.QntBeg+D.QuantInp-D.QntEnd <> 0.0 order by D.ID into :GodsID, :QntOut, :CntReal, :Price, :Cnt_Tmc, :Calc, :QuantDecor do begin Price = :Price * (:CntReal + :Cnt_Tmc) / :QntOut; -- if (:Calc = 1) then begin -- QntOut = :QntOut / (:CntReal+:Cnt_Tmc) * :Cnt_Tmc; -- end -- else begin QntOut = (:QntOut-:QuantDecor) / (:CntReal+:Cnt_Tmc) * :Cnt_Tmc; -- end -- списание порций if (:QntOut <> 0.0) then begin QntX = :QntOut; for select K.ID, K.Quant from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor = :Stor and K.ID = Q.ID and K.GdsKey+0 = :GodsID and KK.ID = K.DgvKey and KK.DAT_ <= :DAT_ into :KID, :QntKt do begin Qnt = :QntX; if (:Qnt > :QntKt) then Qnt = :QntKt; if (:Qnt > 0.0) then begin Nds = Price / (:ProcNds+100.00) * :ProcNds; insert into GddDt(ID, GddKey, GdsKey, DgvKey, Quant, Price, Nds, PriceN, Qnt_One) values(Gen_ID(GddDt_ID, 1), :KID, :GodsID, :DgvDt_TmcID, :Qnt, :Price, :Nds, :Price-:Nds, :Cnt_Tmc / :QntOut * :Qnt); QntX = :QntX - :Qnt; end end if (Abs(:QntX) > 1.0e-5) then begin Select Name, Code from Goods where ID = :GodsID into :gName, :gCode; Exception Common_Exception 'Недостача (ТМЦ, порции): '|| gName || ' ' || gCode; end end -- списание QuantDecor if (:QuantDecor <> 0.0) then begin QntX = :QuantDecor; for select K.ID, K.Quant from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor = :Stor and K.ID = Q.ID and K.GdsKey+0 = :GodsID and KK.ID = K.DgvKey and KK.DAT_ <= :DAT_ into :KID, :QntKt do begin Qnt = :QntX; if (:Qnt > :QntKt) then Qnt = :QntKt; if (:Qnt > 0.0) then begin Nds = Price / (:ProcNds+100.00) * :ProcNds; insert into GddDt(ID, GddKey, GdsKey, DgvKey, Quant, Price, Nds, PriceN, Qnt_One) values(Gen_ID(GddDt_ID, 1), :KID, :GodsID, :DgvDt_TmcID, :Qnt, :Price, :Nds, :Price-:Nds, 0.0); QntX = :QntX - :Qnt; end end if (Abs(:QntX) > 1.0e-5) then begin Select Name, Code from Goods where ID = :GodsID into :gName, :gCode; Exception Common_Exception 'Недостача (ТМЦ, декор.): '|| gName || ' ' || gCode; end end end if (Exists (Select ID from GddDt where DgvKey=:DgvDt_TmcID)) then begin /* накладная не пустая */ update DgvDt set Out_Date = :Dat_ where ID = :DgvDt_TmcID; update DkBill set DgvDt_TmcID = :DgvDt_TmcID where ID = :BillID; end else begin Delete from DgvDt where ID = :DgvDt_TmcID; DgvDt_TmcID = Null; end suspend; end^ ALTER PROCEDURE DOCMDOCDOCUMENT_GETPARENTS ( OBJID INTEGER, OBJTYP INTEGER) RETURNS ( ID INTEGER, TYP INTEGER) AS declare variable FolderID integer; begin if (:ObjTyp=0) then begin -- Group Select ParentID from DocmdocFolder where ID = :ObjID into :FolderID; if (:FolderID is not Null) then begin -- folder <> null for Select ID, Typ from DocmDocDocument_GetParents(:FolderID, 0) into :ID, :Typ do Suspend; end ID = :ObjID; Typ = :ObjTyp; Suspend; end if (:ObjTyp=1) then begin -- Document Select FolderID from DocmDocDocument where ID = :ObjID into :FolderID; if (:FolderID is not Null) then begin -- folder <> null for Select ID, Typ from DocmDocDocument_GetParents(:FolderID, 0) into :ID, :Typ do Suspend; end ID = :ObjID; Typ = :ObjTyp; Suspend; end end^ ALTER PROCEDURE DOCMTASK_COPY ( SRCID INTEGER, GRPID INTEGER, TSKID INTEGER) RETURNS ( ID INTEGER) AS DECLARE VARIABLE TID INTEGER; DECLARE VARIABLE xID INTEGER; begin ID = Null; if (SRCID is not null and ((GrpID is not Null) or (TskID is not Null))) then begin Select ID from DocmTask where ID=:SRCID into :TID; if (TID is Null) then exit; ID = Gen_ID(DocmTask_ID, 1); insert into DocmTask(ID, OurOrgnID, Typ, GrpID, TaskID, Subject, IUserID, MUSerID, Priority, Description, TaskColor, Comment, OrgnID, OrgnInfoID, WTime, PUnits, SendOrgnID, SaleOrgnID, TransOrgnID, TransTPointID, Receiver) Select :ID, OurOrgnID, Typ, :GrpID, :TskID, Subject, IUserID, MUserID, Priority, Description, TaskColor, Comment, OrgnID, OrgnInfoID, WTime, PUnits, SendOrgnID, SaleOrgnID, TransOrgnID, TransTPointID, Receiver from DocmTask where ID=:SRCID; for select ID from DocmTask where TaskID=:SRCID into :TID do begin select ID from DocmTask_Copy(:TID, Null, :ID) INTO :xID; end end suspend; end^ ALTER PROCEDURE DOCMTASK_GENMSG ( TASKID INTEGER, SUSERID INTEGER, RUSERID INTEGER, TYP INTEGER) AS DECLARE VARIABLE MSGID INTEGER; DECLARE VARIABLE SENDADDR VARCHAR(255); DECLARE VARIABLE SENDNAME VARCHAR(255); DECLARE VARIABLE RECVADDR VARCHAR(255); DECLARE VARIABLE RECVNAME VARCHAR(255); DECLARE VARIABLE SUSERNAME VARCHAR(20); DECLARE VARIABLE RUSERNAME VARCHAR(20); DECLARE VARIABLE TUSERNAME VARCHAR(20); DECLARE VARIABLE INBOXFOLDERID INTEGER; DECLARE VARIABLE IUSERID INTEGER; DECLARE VARIABLE TASKDSC VARCHAR(255); begin if (:TaskID is Null) then exit; if (:SUserID is Null) then exit; if (:RUserID is Null) then exit; if (:SUserID = :RUserID) then exit; Select IUserID, UserName from DocmTask where ID=:TaskID into :IUserID, :TUserName; MsgID = Gen_ID(DocmMsg_ID, 1); Select Name, FullName, EMail from userlist where ID=:SUserID into :SUserName, :SendName, :SendAddr; Select Name, FullName, EMail from userlist where ID=:RUserID into :RUserName, :RecvName, :RecvAddr; /* изменена тема задачи - не посылать тому, кто редактировал задачу */ if (:Typ=1 and :TUserName=:RUserName) then exit; if (:SendName='') then SendName = :SUserName; if (:RecvName='') then RecvName = :RUserName; if (Typ=0) then TaskDsc = 'Получена задача '; if (Typ=1) then TaskDsc = 'Изменена тема задачи '; if (Typ=2) then TaskDsc = 'Начало выполнения задачи '; if (Typ=3) then TaskDsc = 'Задача просрочена '; if (Typ=4) then TaskDsc = 'Исполнитель завершил задачу '; if (Typ=5) then TaskDsc = 'Изменено ответственное лицо задачи '; if (Typ=6) then TaskDsc = 'Изменён исполнитель задачи '; if (Typ=7) then TaskDsc = 'Изменён приоритет задачи '; if (Typ=8) then TaskDsc = 'Изменено планируемое время задачи '; if (Typ=9) then TaskDsc = 'Исполнитель принял к рассмотрению задачу'; Insert Into DocmMsg(ID, Subject, Body, SendUserID, TaskID, SendAddr, SendName, AType) select :MsgID, T.Subject, (:TaskDsc || cast(T.ID as varchar(10)) || cast(' Тема: ' as varchar(10)) || cast(T.Subject as varchar(255))), :SUserID, T.ID, :SendAddr, :SendName, :Typ from DocmTask T where T.ID = :TaskID; select ID from DocmMsgFolder where System_Flag = -5 into :InboxFolderID; insert into DocmMsgRUsers (RUserID, MsgID, FolderID, RecvName, RecvAddr) values (:RUserID, :MsgID, :InboxFolderID, :RecvName, :RecvAddr); end^ ALTER PROCEDURE DOCMTASK_GETCHILDREN ( TASK_ID INTEGER, SELF_INCLUDE INTEGER) RETURNS ( ID INTEGER) AS begin if (task_id is null) then for select id from docmtask into :id do suspend; else begin if (self_include = 1) then begin id = task_id; suspend; end for select id from docmtask where taskid = :task_id into :id do begin suspend; for select id from docmtask_getchildren(:id, 0) into :id do suspend; end end end^ ALTER PROCEDURE DOCMTASK_GETPARENTS ( ID INTEGER, OTYPE INTEGER) RETURNS ( CID INTEGER, TID INTEGER, OBJTYPE INTEGER) AS Declare variable GID integer; BEGIN GID = Null; if (:OType = 1) then begin /* задачи */ WHILE (:ID > 0) DO /* ищем до корня */ BEGIN SELECT T.ID, T.TaskID, T.GrpID FROM DocmTask T WHERE T.ID = :ID INTO :CID, :TID, :GID; ID = :TID; /* код родителя для следующей выборки */ ObjType = 1; SUSPEND; END if (:GID is not Null) then begin ID = :GID; OType = 2; end end if (:OType = 2) then begin /* группы */ while (:ID > 0) do begin SELECT G.ID, G.ParentID FROM DocmGroups G WHERE G.ID = :ID INTO :CID, :TID; ID = :TID; /* код родителя для следующей выборки */ ObjType = 2; SUSPEND; end end END^ ALTER PROCEDURE DOCMTASK_ROOT ( ID INTEGER) RETURNS ( ROOTID INTEGER) AS declare variable TaskID integer; declare variable TID integer; begin RootID = Null; select ID, TaskID from DocmTask where ID = :ID into :TID, :TaskID; if (:TaskID is Null and :TID is not Null) then begin RootID = :TID; Suspend; end else if (:TID is not Null) then begin Select RootID from DocmTask_Root(:TaskID) into :RootID; Suspend; end end^ ALTER PROCEDURE DOCMTASK_UPDATE_BY_CHILDREN ( TASKID INTEGER) AS DECLARE VARIABLE BFDATE TIMESTAMP; DECLARE VARIABLE EFDATE TIMESTAMP; DECLARE VARIABLE FTIME DOUBLE PRECISION; DECLARE VARIABLE PSUMMA DOUBLE PRECISION; begin ftime = 0; psumma = 0; select min(dt.bfdate), max(dt.efdate), sum(ftime), sum(psumma) from docmtask dt where taskid = :taskid into :bfdate, :efdate, :ftime, :psumma; if (ftime is null) then ftime = 0; if (psumma is null) then psumma = 0; update docmtask set bfdate = :bfdate, efdate = :efdate, ftime = :ftime, psumma = :psumma where id = :taskid; suspend; end^ ALTER PROCEDURE DOCMTASK_WORKCALC ( TASKID INTEGER) AS declare variable wTime Double precision; declare Variable BFTime TimeStamp; begin wTime = 0.0; Select Sum(eDateTime-bDateTime) from DocmTaskWork W where (W.TaskID=:TaskID) and (bDateTime is not Null) and (eDateTime is not Null) into :wTime; /* общее время работы по задаче */ update DocmTask T set T.FTime=:WTime where ID=:TaskID and (T.FTime <> :WTime or T.FTime is Null); /* начало выполнения задачи */ Select Min(W.BDATETIME) from DocmTaskWork W where W.TaskID = :TaskID into :BFTime; if (:BFTime is not Null) then Update DocmTask set BFDATE = :BFTIME where ID=:TaskID and (BFDATE <> :BFTIME or BFDATE is Null); end^ ALTER PROCEDURE DOCMTASKHB_COPY ( SRCID INTEGER, GRPID INTEGER, TSKID INTEGER, IUSERID INTEGER) RETURNS ( ID INTEGER) AS Declare variable TID integer; declare variable XID integer; Declare variable OurOrgnID integer; begin ID = Null; if (SRCID is not null and ((GrpID is not Null) or (TskID is not Null))) then begin Select ID from DocmTaskHb where ID=:SRCID into :TID; if (:TID is Null) then exit; if (:GrpID is not Null) then Select OurOrgnID from DocmGroups where ID=:GrpID into :OurOrgnID; if (:TskID is not Null) then Select OurOrgnID from DocmTask where ID=:TskID into :OurOrgnID; if (:OurOrgnID is Null) then exit; ID = Gen_ID(DocmTask_ID, 1); /* копия задачи */ insert into DocmTask(ID, OurOrgnID, GrpID, TaskID, Subject, IUserID, MUserID, Priority, Description, TaskColor, Comment, WTime, PTIME, PPRICE, PUNITS, PSumma) Select :ID, :OurOrgnID, :GrpID, :TskID, Subject, :IUserID, MUserID, Priority, Description, TaskColor, Comment, WTime, PTIME, PPRICE, PUNITS, PSumma from DocmTaskHb where ID=:SRCID; /* категории */ Insert Into DocmTaskCategory(TaskID, CategoryID) Select :ID, CategoryID from DocmTaskHbCategory where TaskID = :SrcID; /* подзадачи */ for select ID from DocmTaskHb where TaskID=:SRCID into :TID do begin Execute procedure DocmTaskHb_Copy(:TID, Null, :ID, :IUserID) returning_values :XID; end end suspend; end^ ALTER PROCEDURE F_ADDMONTH ( ADATE TIMESTAMP, AMONTH INTEGER) RETURNS ( XDATE TIMESTAMP) AS DECLARE VARIABLE a_Year INTEGER; DECLARE VARIABLE a_Month INTEGER; DECLARE VARIABLE a_Day INTEGER; DECLARE VARIABLE Mod INTEGER; DECLARE VARIABLE DaysOfMOnth INTEGER; BEGIN aMonth = CoalEsce(aMonth, 0); EXECUTE PROCEDURE F_DecodeDate(ADate) RETURNING_VALUES(a_Year, a_Month, a_Day); IF(AMonth < 0) THEN BEGIN AMonth = AMonth * -1; a_Year = a_Year - CAST(((AMonth-1)/12)-0.49 AS INTEGER) -1; AMonth = AMonth -1; EXECUTE PROCEDURE F_Modulus(AMonth, 12) RETURNING_VALUES(Mod); AMonth = 12 - (Mod+1); a_Month = a_Month + AMonth; END ELSE BEGIN a_Year = a_Year + CAST(((AMonth-1)/12)-0.49 AS INTEGER); AMonth = AMonth -1; EXECUTE PROCEDURE F_Modulus(AMonth, 12) RETURNING_VALUES(Mod); a_Month = a_Month + Mod +1; END IF(a_Month > 12) THEN BEGIN a_Year = a_Year +1; a_Month = a_Month -12; END EXECUTE PROCEDURE F_DaysOfMonth(a_Year, a_Month) RETURNING_VALUES (DaysOfMonth); IF(a_Day > DaysOfMonth) THEN a_Day = DaysOfMonth; EXECUTE PROCEDURE F_EncodeDate(a_Year, a_Month, a_Day) RETURNING_VALUES (xDate); Suspend; END^ ALTER PROCEDURE F_COUNT_DATASET ( N INTEGER) RETURNS ( I INTEGER) AS begin i = 0; while (:i < :n) do begin suspend; i = :i + 1; end end^ ALTER PROCEDURE F_COUNT_MONTHS ( FIRST_DATE DATE, SECOND_DATE DATE) RETURNS ( COUNT_MONTHS INTEGER) AS declare variable tmp date; declare variable m1 smallint; declare variable y1 smallint; declare variable m2 smallint; declare variable y2 smallint; begin if((:first_date is null) or (:second_date is null)) then exit; /*Инициализация. Для моей задачи разница между датами одного месяца и года должна быть равной 1. Т.е. '10-jul-2005' и '21-jul-2005' мне необходима 1. Если разница для этих дат нужна 0, то инициализируйте нулём.*/ count_months = 1; if(:second_date < :first_date) then begin tmp = :first_date; first_date = :second_date; second_date = :tmp; end y1 = extract (year from :first_date); m1 = extract (month from :first_date); y2 = extract (year from :second_date); m2 = extract (month from :second_date); while((:m1 <> :m2) or (:y1 <> :y2)) do begin m1 = :m1 + 1; if(:m1 = 13) then begin m1 = 1; y1 = :y1 + 1; end count_months = :count_months + 1; end if(:tmp is not null) then count_months = (-1) * :count_months; suspend; end^ ALTER PROCEDURE F_DAY ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN Result = Extract(Day from aDate); /* Result = CAST(CAST(ADate AS VARCHAR(2)) AS INTEGER); */ Suspend; /* WHEN ANY DO begin Result = CAST(CAST(ADate AS VARCHAR(1)) AS INTEGER); Suspend; end */ END^ ALTER PROCEDURE F_DAYOFWEEK ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS DECLARE VARIABLE Elapsed INTEGER; BEGIN /* 0 - понедельник */ /* 6 - воскресенье */ EXECUTE PROCEDURE F_ElapsedDays('1.1.96', ADate) RETURNING_VALUES Elapsed; EXECUTE PROCEDURE F_Modulus(Elapsed, 7) RETURNING_VALUES Result; Suspend; END^ ALTER PROCEDURE F_DAYOFYEAR ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS DECLARE VARIABLE WorkYear INTEGER; DECLARE VARIABLE WorkMonth INTEGER; DECLARE VARIABLE I INTEGER; BEGIN Result = 0; EXECUTE PROCEDURE F_Year(ADate) RETURNING_VALUES(WorkYear); EXECUTE PROCEDURE F_Month(ADate) RETURNING_VALUES(WorkMonth); WorkMonth = WorkMonth-1; WHILE (WorkMonth > 0) DO BEGIN EXECUTE PROCEDURE F_DaysOfMonth(WorkYear, WorkMonth) RETURNING_VALUES(I); Result = Result+I; WorkMonth = WorkMonth-1; END EXECUTE PROCEDURE F_Day(ADate) RETURNING_VALUES(I); Result = Result +I; Suspend; END^ ALTER PROCEDURE F_DAYS_DATASET ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS begin xDate = bDate; while (xDate <= eDate) do begin Suspend; xDate = xDate + 1.0; end end^ ALTER PROCEDURE F_DAYSOFMONTH ( AYEAR INTEGER, AMONTH INTEGER) RETURNS ( RESULT INTEGER) AS DECLARE VARIABLE WorkDate DATE; BEGIN Result = 31; WHILE (Result > 28 AND WorkDate IS NULL) DO BEGIN EXECUTE PROCEDURE F_EncodeDate(AYear, AMonth, Result) RETURNING_VALUES(WorkDate); WHEN ANY DO Result = Result -1; END Suspend; END^ ALTER PROCEDURE F_DECODEDATE ( ADATE TIMESTAMP) RETURNS ( AYEAR INTEGER, AMONTH INTEGER, ADAY INTEGER) AS BEGIN aYear = Extract(Year from :aDate); aMonth = Extract(Month from :aDate); aDay = Extract(Day from :aDate); Suspend; END^ ALTER PROCEDURE F_ELAPSEDDAYS ( DATE1 TIMESTAMP, DATE2 TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN Result = Date2-Date1; Suspend; END^ ALTER PROCEDURE F_ENCODEDATE ( AYEAR INTEGER, AMONTH INTEGER, ADAY INTEGER) RETURNS ( RESULT TIMESTAMP) AS BEGIN Result = aDay || '.' || aMonth || '.' || aYear; Suspend; END^ ALTER PROCEDURE F_MODULUS ( DIVIDEND INTEGER, DIVISOR INTEGER) RETURNS ( RESULT INTEGER) AS declare variable d1 Double precision; declare variable d2 double precision; BEGIN d1 = Dividend; d2 = Divisor; IF(Dividend = 0) THEN Result = 0; ELSE -- Result = Dividend-(CAST((Dividend / Divisor)-0.5 AS INTEGER)*Divisor); Result = D1-(CAST((D1 / D2)-0.5 AS INTEGER)*D2); Suspend; END^ ALTER PROCEDURE F_MONTH ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS BEGIN Result = Extract(Month from aDate); /* -- WorkDate = ADate; -- Result = 1; -- WHILE(CAST(WorkDate AS VARCHAR(5)) <> '1-JAN') DO -- BEGIN -- EXECUTE PROCEDURE F_Day(WorkDate) RETURNING_VALUES WorkDay; -- IF(WorkDay = 1) THEN Result = Result+1; -- WorkDate = WorkDate-1; -- END */ Suspend; END^ ALTER PROCEDURE F_MONTHFIRSTDAY ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS declare variable Y integer; declare variable M integer; declare variable D integer; begin execute procedure F_DecodeDate(:aDate) returning_values :y, :m, :d; d = 1; execute procedure F_EncodeDate(:y, :m, :d) returning_values :xDate; suspend; end^ ALTER PROCEDURE F_MONTHFIRSTWORKDAY ( SLVID INTEGER, ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS declare variable Y integer; declare variable M integer; declare variable D integer; declare variable TPID integer; declare variable I integer; declare variable sql varchar(1024); declare variable wTime double precision; begin execute procedure F_DecodeDate(:aDate) returning_values :y, :m, :d; d = 1; select first 1 T1.ID from ZpltCalcSlv S join Personal P on P.ID=S.PrsnID join ZpltTabel T on T.ID=P.TabelID join ZpltTabelPlan T1 on T1.TabelID=T.ID and :aDate >= T1.bDate and :aDate <= T1.eDate where S.ID=:SlvID into :TPID; if (:TPID is not null) then begin i = 1; while (i<=31) do begin sql = 'select first 1 t1.d' || i || ' from zplttabelplan t1 where t1.id=' || :TPID; execute statement :sql into :wTime; if (:wTime != 0.0) then break; i = i+1; end d = i; end execute procedure F_EncodeDate(:y, :m, :d) returning_values :xDate; suspend; end^ ALTER PROCEDURE F_MONTHLASTDAY ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS declare variable Y integer; declare variable M integer; declare variable D integer; begin execute procedure F_DecodeDate(:aDate) returning_values :y, :m, :d; Execute procedure F_DaysOfMonth(:y,:m) returning_values :d; execute procedure F_EncodeDate(:y, :m, :d) returning_values :xDate; suspend; end^ ALTER PROCEDURE F_MONTHLASTWORKDAY ( SLVID INTEGER, ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS declare variable Y integer; declare variable M integer; declare variable D integer; declare variable TPID integer; declare variable i integer; declare variable sql varchar(1024); declare variable wTime double precision; begin execute procedure F_DecodeDate(:aDate) returning_values :y, :m, :d; Execute procedure F_DaysOfMonth(:y,:m) returning_values :d; select first 1 T1.ID from ZpltCalcSlv S join Personal P on P.ID=S.PrsnID join ZpltTabel T on T.ID=P.TabelID join ZpltTabelPlan T1 on T1.TabelID=T.ID and :aDate >= T1.bDate and :aDate <= T1.eDate where S.ID=:SlvID into :TPID; if (:TPID is not null) then begin i = :d; while (i>=1) do begin sql = 'select first 1 t1.d' || i || ' from zplttabelplan t1 where t1.id=' || :TPID; execute statement :sql into :wTime; if (:wTime != 0.0) then break; i = :i-1; end d = :i; end execute procedure F_EncodeDate(:y, :m, :d) returning_values :xDate; suspend; end^ ALTER PROCEDURE F_MONTHS_DATASET ( BPERIOD TIMESTAMP, EPERIOD TIMESTAMP) RETURNS ( BDATE TIMESTAMP, EDATE TIMESTAMP) AS begin select xdate from f_monthfirstday(coalesce(:bperiod, current_timestamp)) into :bperiod; select xdate from f_monthlastday(coalesce(:eperiod, current_timestamp)) into :eperiod; bdate = bperiod; while (bdate <= eperiod) do begin select xdate from f_monthlastday(:bdate) into :edate; suspend; select xdate from f_addmonth(:bdate, 1) into :bdate; end end^ ALTER PROCEDURE F_PERIODS_DATASET ( BDATE TIMESTAMP, EDATE TIMESTAMP, PERIOD_DURATION INTEGER, REST_MODE INTEGER) RETURNS ( PERIOD_BDATE TIMESTAMP, PERIOD_EDATE TIMESTAMP) AS begin if (period_duration < 1) then period_duration = 1; period_edate = bdate - 1; while (period_edate < edate) do begin period_bdate = period_edate + 1; period_edate = period_bdate + period_duration - 1; if (period_edate > edate) then period_edate = edate; if ((edate - period_edate) between 0 and period_duration-1) then if (rest_mode = 1) then period_edate = edate; suspend; end end^ ALTER PROCEDURE F_QUARTER_BEG ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS declare variable Y integer; declare variable M integer; declare variable D integer; begin execute procedure F_DecodeDate(:aDate) returning_values :y, :m, :d; d = 1; if (:m in (1,2,3)) then m = 1; if (:m in (4,5,6)) then m = 4; if (:m in (7,8,9)) then m = 7; if (:m in (10,11,12)) then m = 10; execute procedure F_EncodeDate(:y, :m, :d) returning_values :xDate; suspend; end^ ALTER PROCEDURE F_QUARTER_DATASET ( BPERIOD TIMESTAMP, EPERIOD TIMESTAMP) RETURNS ( BDATE TIMESTAMP, EDATE TIMESTAMP) AS begin select xDate from f_Quarter_Beg(:bPeriod) into :bDate; while (bdate <= eperiod) do begin select xdate from f_Quarter_End(:bdate) into :eDate; suspend; select xdate from f_addmonth(:bdate, 1) into :bdate; select xdate from f_addmonth(:bdate, 1) into :bdate; select xdate from f_addmonth(:bdate, 1) into :bdate; end end^ ALTER PROCEDURE F_QUARTER_END ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS declare variable Y integer; declare variable M integer; declare variable D integer; begin execute procedure F_DecodeDate(:aDate) returning_values :y, :m, :d; if (:m in (1,2,3)) then m = 3; if (:m in (4,5,6)) then m = 6; if (:m in (7,8,9)) then m = 9; if (:m in (10,11,12)) then m = 12; Execute procedure F_DaysOfMonth(:y,:m) returning_values :d; execute procedure F_EncodeDate(:y, :m, :d) returning_values :xDate; suspend; end^ ALTER PROCEDURE F_TIME ( ADATE TIMESTAMP) RETURNS ( AHOUR INTEGER, AMINUTE INTEGER) AS DECLARE VARIABLE aYear INTEGER; DECLARE VARIABLE aMonth INTEGER; DECLARE VARIABLE aDay INTEGER; DECLARE VARIABLE WorkDate DATE; DECLARE VARIABLE Prc DOUBLE PRECISION; DECLARE VARIABLE WorkHour DOUBLE PRECISION; BEGIN EXECUTE PROCEDURE F_DecodeDate(ADate) RETURNING_VALUES(aYear, aMonth, aDay); EXECUTE PROCEDURE F_EncodeDate(aYear, aMonth, aDay) RETURNING_VALUES(WorkDate); Prc = ADate - WorkDate; WorkHour = Prc *24; aHour = WorkHour -0.5; aMinute = (WorkHour - aHour) *60 -0.5; Suspend; END^ ALTER PROCEDURE F_WEEK_DATASET ( BDATE TIMESTAMP, EDATE TIMESTAMP, WEEK_START INTEGER, REST_MODE INTEGER) RETURNS ( NBR INTEGER, PERIOD_BDATE TIMESTAMP, PERIOD_EDATE TIMESTAMP) AS DECLARE VARIABLE WEEK_END INTEGER; DECLARE VARIABLE ADAYOFWEEK INTEGER; DECLARE VARIABLE ADAY TIMESTAMP; begin rest_mode = 0; /* Резерв для переключения режима "полная/частичная" неделя*/ nbr = 0; if (week_start = 0) then week_end = 6; else week_end = week_start - 1; aday = bdate; period_bdate = bdate; execute procedure f_dayofweek(:aday) returning_values adayofweek; while (period_bdate <= edate) do begin nbr = nbr + 1; period_edate = null; while (adayofweek <> week_end and aday <= edate) do begin aday = aday + 1; execute procedure f_dayofweek(:aday) returning_values adayofweek; end if (aday <= edate) then period_edate = aday; else period_edate = edate; suspend; period_bdate = aday + 1; adayofweek = -1; end end^ ALTER PROCEDURE F_YEAR ( ADATE TIMESTAMP) RETURNS ( RESULT INTEGER) AS DECLARE VARIABLE ElapsedDays INTEGER; DECLARE VARIABLE ElapsedYears INTEGER; Declare Variable bDate TimeStamp; BEGIN Result = Extract(Year from :aDate); /* Lets go to the begin of the year */ /* WHILE(CAST(ADate AS VARCHAR(5)) <> '1-JAN') DO -- ADate = ADate -1; -- bDate='1.1.1901'; -- ElapsedDays = ADate -bDate; -- Result = (ElapsedDays *400 /146097)+1901; */ Suspend; END^ ALTER PROCEDURE F_YEAR_BEG ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS declare variable Y integer; declare variable M integer; declare variable D integer; begin execute procedure F_DecodeDate(:aDate) returning_values :y, :m, :d; execute procedure F_EncodeDate(:y, 1, 1) returning_values :xDate; suspend; end^ ALTER PROCEDURE F_YEAR_END ( ADATE TIMESTAMP) RETURNS ( XDATE TIMESTAMP) AS declare variable Y integer; declare variable M integer; declare variable D integer; begin execute procedure F_DecodeDate(:aDate) returning_values :y, :m, :d; execute procedure F_EncodeDate(:y, 12, 31) returning_values :xDate; suspend; end^ ALTER PROCEDURE FRREPORT_NEWID RETURNS ( ID INTEGER) AS begin id=Gen_ID(FrReport_ID,1); end^ ALTER PROCEDURE FRREPORTTREE_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(FrReportTree_ID, 1); end^ ALTER PROCEDURE FRREPORTTREEUSER_GRANT ( USERID INTEGER, FRRPID INTEGER, CURORGNID INTEGER, USERNAME VARCHAR(20), TO_PARENT INTEGER, TO_CHILD INTEGER) AS declare variable RID integer; declare variable ParentID integer; declare variable ID Integer; declare variable UID integer; declare variable GID integer; declare variable GroupTyp integer; begin RID = Null; UID = Null; select ID, GroupTyp from UserList where ID=:UserID into :UID, :GroupTyp; if (:GroupTyp = 0) then begin -- группа пользователей GID=:UID; for select ID from UserList where ParentID=:GID into :UID do begin execute procedure FrReportTreeUser_Grant(:UID, :FrRpID, :CurOrgnID, :UserName, :To_Parent, :To_Child); /* select ID from FrReportTreeUser where UserID=:UID and FrRpID=:FrRpID and OurOrgnID=:CurOrgnID into :RID; if (:RID is Null) then begin Insert Into FrReportTreeUser(UserID, FrRpID, OurOrgnID, UserName) values(:UID, :FrRpID, :CurOrgnID, :UserName); end */ end end else begin -- пользователь select ID from FrReportTreeUser where UserID=:UserID and FrRpID=:FrRpID and OurOrgnID=:CurOrgnID into :RID; if (:RID is Null) then begin Insert Into FrReportTreeUser(UserID, FrRpID, OurOrgnID, UserName) values(:UserID, :FrRpID, :CurOrgnID, :UserName); end if (To_Parent = 1) then begin -- Проверить доступ вверх по иерархии Select ParentID from FrReportTree where ID=:FrRpID into :ParentID; if (:ParentID is not Null) then begin -- Не корень execute procedure FrReportTreeUser_Grant(:UserID, :ParentID, :CurOrgnID, :UserName, 1, 0); end end if (To_Child = 1) then begin -- Распространить права доступа аниз по иерархии for select ID from FrReportTree where ParentID=:FrRpID into :ID do begin execute procedure FrReportTreeUser_Grant(:UserID, :ID, :CurOrgnID, :UserName, 0, 1); end end end end^ ALTER PROCEDURE FRREPORTTREEUSER_REVOKE ( USERID INTEGER, FRRPID INTEGER, CURORGNID INTEGER, USERNAME VARCHAR(20), TO_PARENT INTEGER, TO_CHILD INTEGER) AS declare variable ParentID integer; declare variable ID Integer; declare variable UID integer; declare variable GID integer; declare variable GroupTyp integer; begin UID = Null; select ID, GroupTyp from UserList where ID=:UserID into :UID, :GroupTyp; if (:GroupTyp = 0) then begin -- группа пользователей GID=:UID; for select ID from UserList where ParentID=:GID into :UID do begin execute procedure FrReportTreeUser_Revoke(:UID, :FrRpID, :CurOrgnID, :UserName, :To_Parent, :To_Child); end end else begin -- пользователь delete from FrReportTreeUser where UserID=:UserID and FrRpID=:FrRpID and OurOrgnID=:CurOrgnID; if (To_Parent = 1) then begin -- Проверить доступ вверх по иерархии Select ParentID from FrReportTree where ID=:FrRpID into :ParentID; if (:ParentID is not Null) then begin -- Не корень execute procedure FrReportTreeUser_Revoke(:UserID, :ParentID, :CurOrgnID, :UserName, 1, 0); end end if (To_Child = 1) then begin -- Распространить права доступа аниз по иерархии for select ID from FrReportTree where ParentID=:FrRpID into :ID do begin execute procedure FrReportTreeUser_Revoke(:UserID, :ID, :CurOrgnID, :UserName, 0, 1); end end end end^ ALTER PROCEDURE GDDDT_LOSSPOS ( BPERIOD TIMESTAMP, EPERIOD TIMESTAMP, GRPSTORID INTEGER) RETURNS ( BCDATE TIMESTAMP, ECDATE TIMESTAMP, GNAME VARCHAR(80), DELTA DOUBLE PRECISION, KNK DOUBLE PRECISION) AS declare variable KSUMMA double precision; declare variable DSUMMA double precision; declare variable GID integer; begin for select edate, bdate from f_months_dataset(:bperiod, :eperiod) into :ECDATE, :BCDATE do begin -- suspend ; for select sum((gk.price-gk.nds)*gd.quant), sum((gd.price-gd.nds)*gd.quant), g.id, g.name, sum((gk.price-gk.nds)*gd.quant)-sum((gd.price-gd.nds)*gd.quant), w.knk from dgvdt d join storlist s on s.id=d.stor and d.stor in (select sg.storid from storgrpref sg where sg.grpid = :grpstorid) join gdddt gd on gd.dgvkey=d.id join gddkt gk on gd.gddkey = gk.id join goods g on g.id = gk.gdskey join workmain w on g.id = w.godsid where d.out_date >=:bcdate and d.out_date<=:ecdate and d.typ in(0,10) group by g.id, g.name, w.knk having sum((gk.price-gk.nds)*gd.quant)-sum((gd.price-gd.nds)*gd.quant) > 0.0 into :ksumma, :dsumma, :gid, :gname, :delta, :knk do begin suspend; end end end^ ALTER PROCEDURE GDDDT_MOVEGOODS ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION) AS begin for Select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), k.Quant from GddKtQnt KQ, GddKt K, DgvKt DK1 where KQ.Stor=:STOR and K.ID=KQ.ID and DK1.ID=K.DgvKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant from DgvDt DD, GddDt D, GddKt K where DD.Stor=:STOR and DD.Out_Date is Null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant from DgvDt DD, GddDt D, GddKt K where DD.Stor=:Stor and DD.Out_Date > :eDate and DD.Out_Date is not null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -k.Source from DgvKt DK2, GddKt K where DK2.Stor=:Stor and DK2.DAT_ > :eDate and DK2.ID=K.DgvKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, k.Source, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from DgvKt DK3, GddKt K where DK3.Stor=:Stor and DK3.DAT_ >= :bDate and DK3.DAT_ <= :eDate and K.DgvKey=DK3.ID union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), d.Quant, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from DgvDt DD, GddDt D, GddKt K where DD.Stor=:Stor and DD.Out_Date >= :bDate and DD.Out_Date <=:eDate and D.DgvKey=DD.ID and K.ID=D.GddKey into :KID, :GID, :Price, :Nds, :qInp, :qOut, :qBeg, :qEnd do begin qBeg=:qEnd-:qInp+:qOut; if (:qInp<>0 or :qOut<>0 or :qBeg<>0 or :qEnd<>0) then Suspend; end end^ ALTER PROCEDURE GDDDT_MOVEGOODS_GRP ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GID INTEGER, GRPID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION) AS begin for Select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), k.Quant, G.Owner from GddKtQnt KQ, GddKt K, DgvKt DK1, Goods G where KQ.Stor=:STOR and K.ID=KQ.ID and DK1.ID=K.DgvKey and G.ID = K.GdsKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant, G.Owner from DgvDt DD, GddDt D, GddKt K, Goods G where DD.Stor=:STOR and DD.Out_Date is Null and D.DgvKey=DD.ID and K.ID=D.GddKey and G.ID = K.GdsKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant, G.Owner from DgvDt DD, GddDt D, GddKt K, Goods G where DD.Stor=:Stor and DD.Out_Date > :eDate and DD.Out_Date is not null and D.DgvKey=DD.ID and K.ID=D.GddKey and G.ID = K.GdsKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -k.Source, G.Owner from DgvKt DK2, GddKt K, Goods G where DK2.Stor=:Stor and DK2.DAT_ > :eDate and DK2.ID=K.DgvKey and G.ID = K.GdsKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, k.Source, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), G.Owner from DgvKt DK3, GddKt K, Goods G where DK3.Stor=:Stor and DK3.DAT_ >= :bDate and DK3.DAT_ <= :eDate and K.DgvKey=DK3.ID and G.ID = K.GdsKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), d.Quant, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), G.Owner from DgvDt DD, GddDt D, GddKt K, Goods G where DD.Stor=:Stor and DD.Out_Date >= :bDate and DD.Out_Date <=:eDate and D.DgvKey=DD.ID and K.ID=D.GddKey and G.ID = K.GdsKey union ALL select Cast(Null as Integer), G.ID, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), G.Owner from Goods G where G.Grou_ = 1 into :KID, :GID, :Price, :Nds, :qInp, :qOut, :qBeg, :qEnd, :GRPID do begin qBeg=:qEnd-:qInp+:qOut; --if (:qInp<>0 or :qOut<>0 or :qBeg<>0 or :qEnd<>0) then Suspend; end end^ ALTER PROCEDURE GDDDT_MOVEGOODS_SGRP ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP, STORGRPID INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, STOR INTEGER, KTYP INTEGER, DTYP INTEGER, DID INTEGER) AS begin for -- текущее наличие на складе (товар в наличии) Select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), k.Quant, KQ1.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S join StorGrpRef SG on SG.GrpID = :StorGrpID and S.ID = SG.StorID join GddKtQnt KQ1 on KQ1.Stor = S.ID join GddKt K on K.ID = KQ1.ID join DgvKt DK on K.DgvKey = DK.ID where S.OurOrgnID = :OrgnID and K.ID is not Null union ALL -- текущее наличие на складе (товар в резерве) select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant, DD.Stor, Cast(Null as integer) KTYP, DD.TYP, D.ID from StorList S join StorGrpRef SG on SG.GrpID = :StorGrpID and S.ID = SG.StorID join DgvDt DD on DD.Stor = S.ID join GddDt D on D.DgvKey = DD.ID join GddKt K on K.ID = D.GddKey where S.OurOrgnID = :OrgnID and DD.Out_Date is Null union ALL -- расход после окончания отчетного периода select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant, DD.Stor, Cast(Null as integer) KTYP, DD.TYP, D.ID from StorList S join StorGrpRef SG on SG.GrpID = :StorGrpID and S.ID = SG.StorID join DgvDt DD on DD.Stor = S.ID join GddDt D on D.DgvKey = DD.ID join GddKt K on K.ID = D.GddKey where S.OurOrgnID=:OrgnID and DD.Out_Date > :eDate and DD.Out_Date is not null union ALL -- приход после окончания отчетного периода select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -k.Source, DK.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S join StorGrpRef SG on SG.GrpID = :StorGrpID and S.ID = SG.StorID join DgvKt DK on DK.Stor = S.ID join GddKt K on DK.ID=K.DgvKey where S.OurOrgnID=:OrgnID and DK.DAT_ > :eDate union ALL -- приход за отчетный период select K.ID, K.GdsKey, K.Price, K.Nds, k.Source, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), KK.Stor, KK.TYP KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S join StorGrpRef SG on SG.GrpID = :StorGrpID and S.ID = SG.StorID join DgvKt KK on KK.Stor = S.ID -- left join StorGrpRef SG1 on SG1.GrpID = :StorGrpID and KK.StorID = SG1.StorID join GddKt K on KK.ID=K.DgvKey where S.OurOrgnID=:OrgnID and KK.DAT_ >= :bDate and KK.DAT_ <= :eDate and (KK.TYP <> 1 or (KK.TYP = 1 and KK.StorID not in (select StorID from StorGrpRef SG1 where SG1.GrpID=:StorGrpID)) ) -- and not (KK.Typ = 1 and KK.StorID = SG1.StorID) union ALL -- расход за отчетный период select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), d.Quant, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), DD.Stor, Cast(Null as integer) KTYP, DD.TYP, D.ID from StorList S join StorGrpRef SG on SG.GrpID = :StorGrpID and S.ID = SG.StorID join DgvDt DD on DD.Stor = S.ID -- left join StorGrpRef SG1 on SG1.GrpID = :StorGrpID and DD.StorID = SG1.StorID join GddDt D on D.DgvKey=DD.ID join GddKt K on K.ID=D.GddKey where S.OurOrgnID=:OrgnID and DD.Out_Date >= :bDate and DD.Out_Date <=:eDate and (DD.TYP <> 1 or (DD.TYP = 1 and DD.StorID not in (select StorID from StorGrpRef SG1 where SG1.GrpID=:StorGrpID)) ) -- and not (DD.Typ = 1 and DD.StorID = SG1.StorID) into :KID, :GID, :Price, :Nds, :qInp, :qOut, :qBeg, :qEnd, :Stor, :KTYP, :DTYP, :DID do begin qBeg = :qEnd - :qInp + :qOut; if (:qInp <> 0 or :qOut <> 0 or :qBeg <> 0 or :qEnd <> 0) then Suspend; end end^ ALTER PROCEDURE GDDDT_MOVEGOODSALL ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, STOR INTEGER, KTYP INTEGER, DTYP INTEGER, DID INTEGER) AS begin for -- текущее наличие (в Приходных накладных) Select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), k.Quant, KQ1.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S left join GddKtQnt KQ1 on KQ1.Stor=S.ID left join GddKt K on K.ID = KQ1.ID left join DgvKt DK on K.DgvKey=DK.ID where S.OurOrgnID=:OrgnID and K.ID is not Null union ALL -- резерв (Расходные накладные без даты выдачи) select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant, DD.Stor, Cast(Null as integer) KTYP, DD.TYP, D.ID from StorList S, DgvDt DD, GddDt D, GddKt K where S.OurOrgnID=:OrgnID and DD.Stor = S.ID and DD.Out_Date is Null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL -- выдано после конечной даты select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant, DD.Stor, Cast(Null as integer) KTYP, DD.TYP, D.ID from StorList S, DgvDt DD, GddDt D, GddKt K where S.OurOrgnID=:OrgnID and DD.Stor = S.ID and DD.Out_Date > :eDate and DD.Out_Date is not null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL -- приход после конечной даты select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -k.Source, DK.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S, DgvKt DK, GddKt K where S.OurOrgnID=:OrgnID and DK.Stor = S.ID and DK.DAT_ > :eDate and DK.ID=K.DgvKey union ALL -- приход за период select K.ID, K.GdsKey, K.Price, K.Nds, k.Source, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), DK.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S, DgvKt DK, GddKt K where S.OurOrgnID=:OrgnID and DK.Stor = S.ID and DK.DAT_ >= :bDate and DK.DAT_ <= :eDate and DK.ID=K.DgvKey union ALL -- расход за период select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), d.Quant, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), DD.Stor, Cast(Null as integer) KTYP, DD.TYP, D.ID from StorList S, DgvDt DD, GddDt D, GddKt K where S.OurOrgnID=:OrgnID and DD.Stor = S.ID and DD.Out_Date >= :bDate and DD.Out_Date <=:eDate and D.DgvKey=DD.ID and K.ID=D.GddKey into :KID, :GID, :Price, :Nds, :qInp, :qOut, :qBeg, :qEnd, :Stor, :KTYP, :DTYP, :DID do begin qBeg=:qEnd-:qInp+:qOut; if (:qInp<>0 or :qOut<>0 or :qBeg<>0 or :qEnd<>0) then Suspend; end end^ ALTER PROCEDURE GDDDT_MOVEGOODSGRP ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER, GRPID INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION) AS begin for Select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), k.Quant from GddKtQnt KQ, GddKt K, DgvKt DK1, Goods G where KQ.Stor=:STOR and K.ID=KQ.ID and DK1.ID=K.DgvKey and G.ID=K.GdsKey and G.Owner = :GRPID union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant from DgvDt DD, GddDt D, GddKt K, Goods G where DD.Stor=:STOR and DD.Out_Date is Null and D.DgvKey=DD.ID and K.ID=D.GddKey and G.ID=K.GdsKey and G.Owner = :GRPID union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant from DgvDt DD, GddDt D, GddKt K, Goods G where DD.Stor=:Stor and DD.Out_Date > :eDate and DD.Out_Date is not null and D.DgvKey=DD.ID and K.ID=D.GddKey and G.ID=K.GdsKey and G.Owner = :GRPID union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -k.Source from DgvKt DK2, GddKt K, Goods G where DK2.Stor=:Stor and DK2.DAT_ > :eDate and DK2.ID=K.DgvKey and G.ID=K.GdsKey and G.Owner = :GRPID union ALL select K.ID, K.GdsKey, K.Price, K.Nds, k.Source, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from DgvKt DK3, GddKt K, Goods G where DK3.Stor=:Stor and DK3.DAT_ >= :bDate and DK3.DAT_ <= :eDate and K.DgvKey=DK3.ID and G.ID=K.GdsKey and G.Owner = :GRPID union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), d.Quant, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from DgvDt DD, GddDt D, GddKt K, Goods G where DD.Stor=:Stor and DD.Out_Date >= :bDate and DD.Out_Date <=:eDate and D.DgvKey=DD.ID and K.ID=D.GddKey and G.ID=K.GdsKey and G.Owner = :GRPID union ALL Select Cast(Null as integer) ID, G.ID GdsKey, Cast(0.0 as Double precision) Price, Cast(0.0 as Double Precision) NDS, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from Goods G where G.Owner = :GRPID and G.Grou_=1 into :KID, :GID, :Price, :Nds, :qInp, :qOut, :qBeg, :qEnd do begin qBeg=:qEnd-:qInp+:qOut; --if (:qInp<>0 or :qOut<>0 or :qBeg<>0 or :qEnd<>0) then Suspend; end end^ ALTER PROCEDURE GDDDT_MOVEGOODSINP ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, TPRICE DOUBLE PRECISION) AS begin for Select K.ID, K.GdsKey, K.Price, K.tprice, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), k.Quant from GddKtQnt KQ, GddKt K, DgvKt DK1 where KQ.Stor=:STOR and K.ID=KQ.ID and DK1.ID=K.DgvKey union ALL select K.ID, K.GdsKey, K.Price, K.tprice, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant from DgvDt DD, GddDt D, GddKt K where DD.Stor=:STOR and DD.Out_Date is Null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL select K.ID, K.GdsKey, K.Price, K.tprice, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant from DgvDt DD, GddDt D, GddKt K where DD.Stor=:Stor and DD.Out_Date > :eDate and DD.Out_Date is not null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL select K.ID, K.GdsKey, K.Price, K.tprice, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -k.Source from DgvKt DK2, GddKt K where DK2.Stor=:Stor and DK2.DAT_ > :eDate and DK2.ID=K.DgvKey union ALL select K.ID, K.GdsKey, K.Price, K.tprice, K.Nds, k.Source, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from DgvKt DK3, GddKt K where DK3.Stor=:Stor and DK3.DAT_ >= :bDate and DK3.DAT_ <= :eDate and K.DgvKey=DK3.ID union ALL select K.ID, K.GdsKey, K.Price, K.tprice, K.Nds, Cast(0.0 as Double Precision), d.Quant, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from DgvDt DD, GddDt D, GddKt K where DD.Stor=:Stor and DD.Out_Date >= :bDate and DD.Out_Date <=:eDate and D.DgvKey=DD.ID and K.ID=D.GddKey into :KID, :GID, :Price, :tprice, :Nds, :qInp, :qOut, :qBeg, :qEnd do begin qBeg=:qEnd-:qInp+:qOut; if (:qInp<>0 or :qOut<>0 or :qBeg<>0 or :qEnd<>0) then Suspend; end end^ ALTER PROCEDURE GDDDT_MOVEGOODSONE ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER, GDSID INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION) AS begin for select k.id, k.gdskey, k.price, k.nds, cast(0.0 as double precision), cast(0.0 as double precision), cast(0.0 as double precision), k.quant from gddktqnt kq, gddkt k, dgvkt dk1 where kq.stor = :stor and k.id = kq.id and dk1.id = k.dgvkey and k.gdskey = :gdsid union all select k.id, k.gdskey, k.price, k.nds, cast(0.0 as double precision), cast(0.0 as double precision), cast(0.0 as double precision), d.quant from dgvdt dd, gdddt d, gddkt k where dd.stor = :stor and dd.out_date is null and d.dgvkey = dd.id and k.id = d.gddkey and k.gdskey = :gdsid union all select k.id, k.gdskey, k.price, k.nds, cast(0.0 as double precision), cast(0.0 as double precision), cast(0.0 as double precision), d.quant from dgvdt dd, gdddt d, gddkt k where dd.stor = :stor and dd.out_date > :edate and dd.out_date is not null and d.dgvkey = dd.id and k.id = d.gddkey and k.gdskey = :gdsid union all select k.id, k.gdskey, k.price, k.nds, cast(0.0 as double precision), cast(0.0 as double precision), cast(0.0 as double precision), -k.source from dgvkt dk2, gddkt k where dk2.stor = :stor and dk2.dat_ > :edate and dk2.id = k.dgvkey and k.gdskey = :gdsid union all select k.id, k.gdskey, k.price, k.nds, k.source, cast(0.0 as double precision), cast(0.0 as double precision), cast(0.0 as double precision) from dgvkt dk3, gddkt k where dk3.stor = :stor and dk3.dat_ >= :bdate and dk3.dat_ <= :edate and k.dgvkey = dk3.id and k.gdskey = :gdsid union all select k.id, k.gdskey, k.price, k.nds, cast(0.0 as double precision), d.quant, cast(0.0 as double precision), cast(0.0 as double precision) from dgvdt dd, gdddt d, gddkt k where dd.stor = :stor and dd.out_date >= :bdate and dd.out_date <=:edate and d.dgvkey = dd.id and k.id = d.gddkey and k.gdskey = :gdsid into :kid, :gid, :price, :nds, :qinp, :qout, :qbeg, :qend do begin qbeg = :qend - :qinp + :qout; suspend; end end^ ALTER PROCEDURE GDDDT_MOVEQENDORGN ( ORGNID INTEGER, EDATE TIMESTAMP, IORGNID INTEGER, ALLGOODS INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QEND DOUBLE PRECISION, STOR INTEGER, KTYP INTEGER, DTYP INTEGER, DID INTEGER) AS begin for -- текущий остаток Select K.ID, K.GdsKey, K.Price, K.Nds, k.Quant, KQ1.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S left join GddKtQnt KQ1 on KQ1.Stor=S.ID left join GddKt K on K.ID = KQ1.ID left join DgvKt DK on K.DgvKey=DK.ID left join gddkt_srcktid(K.ID) SK on 0=0 left join gddkt k1 on k1.id = sk.ktid join dgvkt kk1 on kk1.id = k1.dgvkey and kk1.NameID = :IOrgnID where S.OurOrgnID=:OrgnID union ALL -- товар в резерве + расход после указанной даты select K.ID, K.GdsKey, K.Price, K.Nds, d.Quant, DD.Stor, Cast(Null as integer) KTYP, DD.TYP, D.ID from StorList S join DgvDt DD on DD.Stor = S.ID join GddDt D on D.DgvKey=DD.ID join GddKt K on K.ID=D.GddKey left join gddkt_srcktid(K.ID) SK on 0=0 left join gddkt k1 on k1.id = sk.ktid join dgvkt kk1 on kk1.id = k1.dgvkey and kk1.NameID = :IOrgnID where S.OurOrgnID=:OrgnID and ((DD.Out_Date is Null) or (DD.Out_Date > :eDate and DD.Out_Date is not null)) union ALL -- приход после указанной даты select K.ID, K.GdsKey, K.Price, K.Nds, -k.Source, DK.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S join DgvKt DK on DK.Stor = S.ID join GddKt K on DK.ID=K.DgvKey left join gddkt_srcktid(K.ID) SK on 0=0 left join gddkt k1 on k1.id = sk.ktid join dgvkt kk1 on kk1.id = k1.dgvkey and kk1.NameID = :IOrgnID where S.OurOrgnID=:OrgnID and DK.DAT_ > :eDate union ALL select Cast(Null as integer) ID, G.ID GDSKEY, Cast(0.0 as Double precision) Price, Cast(0.0 as Double precision) Nds, Cast(0.0 as double precision) QEND, Cast(Null as integer) STOR, cast(Null as integer) KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from Goods G where G.Grou_ = 1 and (:AllGoods = 1) union ALL select Cast(Null as integer) ID, G.ID GDSKEY, Cast(0.0 as Double precision) Price, Cast(0.0 as Double precision) Nds, Cast(0.0 as double precision) QEND, Cast(Null as integer) STOR, cast(Null as integer) KTYP, Cast(Null as Integer) DTYP, Cast(Null as integer) DID from StorList S, DgvKt KK, GddKt K, Goods G where (:AllGoods = 2) and S.OurOrgnID = :OrgnID and KK.Stor = S.ID and KK.NameID = :IOrgnID and K.DgvKey = KK.ID and G.ID = K.GdsKey into :KID, :GID, :Price, :Nds, :qEnd, :Stor, :KTYP, :DTYP, :DID do begin Suspend; end end^ ALTER PROCEDURE GDDDT_MOVEREALGOODSALL ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, RQNT DOUBLE PRECISION, STOR INTEGER, KTYP INTEGER, DTYP INTEGER) AS DECLARE VARIABLE DID INTEGER; begin RQnt = 0.0; for Select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), k.Quant, KQ.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP from StorList S, GddKtQnt KQ, GddKt K, DgvKt DK where S.OurOrgnID=:OrgnID and KQ.Stor=S.ID and K.ID= KQ.ID and K.DgvKey=DK.ID union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant, DD.Stor, Cast(Null as integer) KTYP, DD.TYP from StorList S, DgvDt DD, GddDt D, GddKt K where S.OurOrgnID=:OrgnID and DD.Stor = S.ID and DD.Out_Date is Null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant, DD.Stor, Cast(Null as integer) KTYP, DD.TYP from StorList S, DgvDt DD, GddDt D, GddKt K where S.OurOrgnID=:OrgnID and DD.Stor = S.ID and DD.Out_Date > :eDate and DD.Out_Date is not null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -k.Source, DK.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP from StorList S, DgvKt DK, GddKt K where S.OurOrgnID=:OrgnID and DK.Stor = S.ID and DK.DAT_ > :eDate and DK.ID=K.DgvKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, k.Source, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), DK.Stor, DK.TYP KTYP, Cast(Null as Integer) DTYP from StorList S, DgvKt DK, GddKt K where S.OurOrgnID=:OrgnID and DK.Stor = S.ID and DK.DAT_ >= :bDate and DK.DAT_ <= :eDate and DK.ID=K.DgvKey union ALL select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double Precision), d.Quant, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), DD.Stor, Cast(Null as integer) KTYP, DD.TYP from StorList S, DgvDt DD, GddDt D, GddKt K where S.OurOrgnID=:OrgnID and DD.Stor = S.ID and DD.Out_Date >= :bDate and DD.Out_Date <=:eDate and D.DgvKey=DD.ID and K.ID=D.GddKey into :KID, :GID, :Price, :Nds, :qInp, :qOut, :qBeg, :qEnd, :Stor, :KTYP, :DTYP do begin qBeg=:qEnd-:qInp+:qOut; if (:qInp <> 0.0 or :qOut <> 0.0 or :qBeg<> 0.0 or :qEnd <> 0.0) then Suspend; end for Select K.ID, K.GdsKey, K.Price, K.Nds, Cast(0.0 as Double precision), Cast(0.0 as Double precision), Cast(0.0 as Double precision), Cast(0.0 as Double precision), D.Quant, DD.Stor, KK.Typ, DD.Typ from StorList S, DgvDt DD, GddDt D, GddKt K, DgvKt KK where S.OurOrgnID = :OrgnID and DD.Stor = S.ID and DD.Typ in (0, 10) and DD.Out_Date >= :BDATE and DD.Out_Date <= :EDATE and D.DgvKey = DD.ID and K.ID=D.GddKey and KK.ID = K.DgvKey into :KID, :GID, :Price, :Nds, :QInp, :QOut, :QBeg, :QEnd, :RQnt, :STOR, :KTyp, :DTyp do begin if (:RQnt <> 0.0) then Suspend; end end^ ALTER PROCEDURE GDDDT_NEWID RETURNS ( ID INTEGER) AS begin id=gen_id(gdddt_id,1); end^ ALTER PROCEDURE GDDDT_OUTCURRLIST ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURRTYP INTEGER) RETURNS ( DID INTEGER, GID INTEGER, KSID INTEGER, TYP INTEGER, QUANT DOUBLE PRECISION, KDATE TIMESTAMP, DDATE TIMESTAMP, KCURS DOUBLE PRECISION, DCURS DOUBLE PRECISION, KPRICE DOUBLE PRECISION, DPRICE DOUBLE PRECISION, KNDS DOUBLE PRECISION, DNDS DOUBLE PRECISION) AS Declare variable KtID Integer; Declare Variable DgvKtID Integer; begin for Select D.ID, G.ID, K.ID, DD.Out_Date, D.Price, D.Nds, D.Quant from DgvDt DD, GddDt D, GddKt K, Goods G where DD.Out_Date >=:bDate and DD.Out_Date <=:eDate and (DD.Typ=0 or DD.Typ=10) and D.DgvKey=DD.ID and K.ID=D.GddKey and G.ID=K.GdsKey into :DID, :GID, :KtID, :dDate, :dPrice, :dNds, :Quant do begin Execute procedure GddDt_SrcKtID(:DID) returning_Values(:KsID); Select DgvKey, Price, Nds from GddKt where ID=:KsID into :DgvKtID,:kPrice, :kNds; Select Typ, DAT_ from DgvKt where ID=:DgvKtID into :Typ,:kDate; Execute Procedure Currency_GetValue (:CurrTyp, :dDate) returning_Values(:dCurs); Execute Procedure Currency_GetValue (:CurrTyp, :kDate) returning_Values(:kCurs); Suspend; end end^ ALTER PROCEDURE GDDDT_OUTSALE ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( GRID INTEGER, GID INTEGER, QUANT DOUBLE PRECISION, DSUMMA DOUBLE PRECISION, DNDS DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, KNDS DOUBLE PRECISION, KID INTEGER) AS begin for select GG.ID, G.ID, D.Quant/dd.summa*c.summa Quant, d.quant*d.price/dd.summa*c.summa, d.quant*d.NDS/dd.summa*c.summa, d.quant*k.price/dd.summa*c.summa, d.quant*k.NDS/dd.summa*c.summa KNDS, (select KD.ID from KassData KD where KD.STORKEY=S.ID) from dgvdt dd, salecros c, sale s, gdddt d, gddkt k, goods g, Goods GG where dd.out_date >=:BDATE and dd.out_date <=:EDATE and c.dgvkey=dd.id and s.id=c.salekey and d.dgvkey=dd.id and k.id=d.gddkey and g.id=k.gdskey and GG.ID=G.OWNER into :GRID, :GID, :Quant, :DSumma, :DNds, :KSumma, :KNds, :KID do begin Suspend; end end^ ALTER PROCEDURE GDDDT_OUTWORKCURRLIST ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURRTYP INTEGER) RETURNS ( DID INTEGER, GID INTEGER, QUANT DOUBLE PRECISION, KSID INTEGER, DSUMMA DOUBLE PRECISION, DNDS DOUBLE PRECISION, DCSUMMA DOUBLE PRECISION, KSUMMA DOUBLE PRECISION, KNDS DOUBLE PRECISION, KCSUMMA DOUBLE PRECISION, NSUMMA DOUBLE PRECISION, NNDS DOUBLE PRECISION, NCSUMMA DOUBLE PRECISION, DTYP INTEGER) AS Declare variable KtID Integer; Declare Variable DgvKtID Integer; Declare Variable dPrice Double Precision; Declare Variable d1Nds Double Precision; Declare Variable dDate TimeStamp; Declare Variable dCurs Double Precision; Declare Variable Typ Integer; Declare Variable DgvWkGID integer; Declare Variable DgvDtID Integer; Declare Variable wInpDate TimeStamp; Declare Variable wOutDate TimeStamp; Declare Variable nCurs Double Precision; Declare Variable wQuant Double Precision; Declare Variable wDID integer; Declare Variable wdQuant Double Precision; Declare Variable wKsID Integer; Declare Variable wkPrice Double Precision; Declare Variable wkNds Double Precision; Declare Variable wkCurs Double Precision; Declare Variable wkDate TimeStamp; begin for Select D.ID, G.ID, K.ID, DD.Out_Date, D.Price, D.Nds, D.Quant, DD.TYP from DgvDt DD, GddDt D, GddKt K, Goods G where DD.Out_Date >=:bDate and DD.Out_Date <=:eDate and (DD.Typ=0 or DD.TYP=10) and D.DgvKey=DD.ID and K.ID=D.GddKey and G.ID=K.GdsKey into :DID, :GID, :KtID, :dDate, :dPrice, :d1Nds, :Quant, :DTYP do begin Execute procedure GddDt_SrcKtID(:DID) returning_Values(:KsID); Select DgvKey from GddKt where ID=:KsID into :DgvKtID; Select Typ from DgvKt where ID=:DgvKtID into :Typ; if (:Typ=4 /* Work */) then begin dSumma = :dPrice * :Quant; dNds = :d1Nds * :Quant; Execute Procedure Currency_GetValue (:CurrTyp, :dDate) returning_Values(:dCurs); dcSumma = :dSumma / :dCurs; Select ID, DgvDtID, Inp_Date, Out_Date, Quant from DgvWkG where DgvKtID=:DgvKtID into :DgvWkGID,:DgvDtID, :wInpDate, :wOutDate, :wQuant; Select Sum(Summa)/:wQuant*:Quant from WorkNkDg where DgvID=:DgvWkGID into :nSumma; if(:nSumma is Null) then nSumma=0; nNds = :nSumma/5; nSumma=:nSumma+:nNds; Execute Procedure Currency_GetValue (:CurrTyp, :wInpDate) Returning_Values (:nCurs); ncSumma = :nSumma / :nCurs; kSumma=0; kNds = 0; kcSumma = 0; for select ID, Quant from GddDt where DgvKey=:DgvDtID into :wDID, :wdQuant do begin Execute Procedure GddDt_SrcKtID(:wDID) Returning_Values(:wKsID); Select k.Price, k.Nds, dk.DAT_ from GddKt K, DgvKt DK where K.ID=:wKsID and DK.ID=K.DgvKey into :wkPrice, :wkNds, :wkDate; Execute Procedure Currency_GetValue (:CurrTyp, :wkDate) Returning_Values (:wkCurs); kSumma=:kSumma + :wdQuant*:wkPrice; kNds=:kNds + :wdQuant*:wkNds; kcSumma=:kcSumma + (:wdQuant*:wkPrice)/:wkCurs; end kSumma=:kSumma/:wQuant*:Quant; kNds=:kNds/:wQuant*:Quant; kcSumma=:kcSumma/:wQuant*:Quant; Suspend; end end end^ ALTER PROCEDURE GDDDT_SRCKTID ( ID INTEGER) RETURNS ( KTID INTEGER) AS Declare Variable Typ Integer; Declare Variable DgvKtID Integer; Declare Variable GddKey Integer; begin Select GddKey from GddDt where ID=:ID into :KtID; Select DgvKey, GddKey from GddKt where ID=:KtID into :DgvKtID, :GddKey; Select Typ From DgvKt where ID=:DgvKtID into :Typ; if ((:Typ=1 or :Typ=2 or :Typ=3) and :GddKey<>0 and :GddKey is not null) then execute Procedure GddDt_SrcKtID :GddKey returning_values :KtID; Suspend; end^ ALTER PROCEDURE GDDDT_WORKMOVEGOODS ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, DPRICE DOUBLE PRECISION, DNDS DOUBLE PRECISION, NPRICE DOUBLE PRECISION, NNDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, KSID INTEGER) AS DECLARE VARIABLE DID INTEGER; DECLARE VARIABLE TYP INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVWKID INTEGER; DECLARE VARIABLE WQUANT DOUBLE PRECISION; begin for /* current quant - kt */ Select K.GdsKey, Cast(0.0 as DOUBLE Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Sum(k.Quant), K1.ID, K1.Price, K1.Nds, K1.DgvKey from GddKtQnt Q Join GddKt K on K.ID=Q.ID Left Join GddKt_SrcKtID(K.ID) SK on SK.KTID=SK.KTID Join GddKt K1 on K1.ID=SK.KTID Join DgvKt KK1 on KK1.ID=K1.DgvKey and KK1.TYP=4 Group By K.GdsKey, K1.ID, K1.Price, K1.Nds, K1.DgvKey union ALL /* current - dt - reserv */ select K.GdsKey, Cast(0.0 as Double Precision), Cast(0.0 as Double precision), Cast(0.0 as Double Precision), Sum(D.Quant), K1.ID, K1.Price, K1.Nds, K1.DgvKey from DgvDt DD Join GddDt D on D.DgvKey=DD.ID Join GddKt K ON K.ID=D.GddKey Left Join GddKt_SrcKtID(K.ID) SK on SK.KTID=SK.KTID Join GddKt K1 on K1.ID=SK.KTID Join DgvKt KK1 on KK1.ID=K1.DgvKey and KK1.TYP=4 where DD.Out_Date is Null and DD.TYP <> 11 Group By K.GdsKey, K1.ID, K1.Price, K1.Nds, K1.DgvKey union ALL /* out after eDate */ select K.GdsKey, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Sum(d.Quant), K1.ID, K1.Price, K1.Nds, K1.DgvKey from DgvDt DD Join GddDt D on D.DgvKey=DD.ID Join GddKt K on K.ID=D.GddKey Left Join GddKt_SrcKtID(K.ID) SK on SK.KTID=SK.KTID Join GddKt K1 on K1.ID=SK.KTID Join DgvKt KK1 on KK1.ID=K1.DgvKey and KK1.TYP=4 where DD.Out_Date > :eDate and DD.Out_Date is not null Group By K.GdsKey, K1.ID, K1.Price, K1.Nds, K1.DgvKey union ALL /* inp after eDate */ select K.GdsKey, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -Sum(k.Source), K1.ID, K1.Price, K1.Nds, K1.DgvKey from DgvKt DK Join GddKt K on K.DgvKey=DK.ID Left Join GddKt_SrcKtID(K.ID) SK on SK.KTID=SK.KTID Join GddKt K1 on K1.ID=SK.KTID Join DgvKt KK1 on KK1.ID=K1.DgvKey and KK1.TYP=4 where DK.DAT_ > :eDate Group By K.GdsKey, K1.ID, K1.Price, K1.Nds, K1.DgvKey union ALL /* inp into [bDate..eDate] */ select K.GdsKey, Sum(k.Source), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), K1.ID, K1.Price, K1.Nds, K1.DgvKey from DgvKt DK Join GddKt K on K.DgvKey=DK.ID Left Join GddKt_SrcKtID(K.ID) SK on SK.KTID=SK.KTID Join GddKt K1 on K1.ID=SK.KTID Join DgvKt KK1 on KK1.ID=K1.DgvKey and KK1.TYP=4 where DK.DAT_ >= :bDate and DK.DAT_ <= :eDate Group By K.GdsKey, K1.ID, K1.Price, K1.Nds, K1.DgvKey union ALL /* out into [bDate..eDate] */ select K.GdsKey, Cast(0.0 as Double Precision), Sum(d.Quant), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), K1.ID, K1.Price, K1.Nds, K1.DgvKey from DgvDt DD Join GddDt D on D.DgvKey=DD.ID Join GddKt K on K.ID=D.GddKey Left Join GddKt_SrcKtID(K.ID) SK on SK.KTID=SK.KTID Join GddKt K1 on K1.ID=SK.KTID Join DgvKt KK1 on KK1.ID=K1.DgvKey and KK1.TYP=4 where DD.Out_Date >= :bDate and DD.Out_Date <=:eDate Group By K.GdsKey, K1.ID, K1.Price, K1.Nds, K1.DgvKey into :GID, :qInp, :qOut, :qBeg, :qEnd, :KSID, :Price, :Nds, :DgvKtID do begin qBeg=:qEnd-:qInp+:qOut; DgvWkID=Null; dPrice=0.0; dNds=0.0; nPrice=0.0; nNds=0.0; Select ID, Quant, DgvDtID, (Select Sum(n.Summa) from WorkNkDg n where DgvID=W.ID) From DgvWkG W where DgvKtID=:DgvKtID into :DgvWkID, :wQuant, :DgvDtID, :nPrice; if(:DgvWkID is not null and :wQuant is not Null and :wQuant <> 0.0) then begin Select Sum(d.Price*d.Quant), Sum(d.Nds*d.Quant) from GddDt d where DgvKey=:DgvDtID into :dPrice, :dNds; dPrice = :dPrice / :wQuant; dNds = :dNds / :wQuant; if (:nPrice is Null) then nPrice = 0.0; nPrice = :nPrice / :wQuant; nNds=:nPrice/5; nPrice=:nPrice+:nNds; if(:dPrice is null) then dPrice=0.0; if(:nPrice is null) then nPrice=0.0; if(:dNds is null) then dNds=0.0; if(:nNds is null) then dNds=0.0; if(:qInp<>0 or :qOut<>0 or :qBeg<>0 or :qEnd<>0) then Suspend; end end end^ ALTER PROCEDURE GDDDT_WORKMOVEGOODSSTOR ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, DPRICE DOUBLE PRECISION, DNDS DOUBLE PRECISION, NPRICE DOUBLE PRECISION, NNDS DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QBEG DOUBLE PRECISION, QEND DOUBLE PRECISION, KSID INTEGER) AS DECLARE VARIABLE DID INTEGER; DECLARE VARIABLE TYP INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVWKID INTEGER; DECLARE VARIABLE WQUANT DOUBLE PRECISION; begin for /* current quant - kt */ Select K.ID, K.GdsKey, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), k.Quant from GddKtQnt Q, GddKt K where Q.Stor=:STOR and K.ID=Q.ID union ALL /* current - dt - reserv */ select K.ID, K.GdsKey, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant from DgvDt DD, GddDt D, GddKt K where DD.Stor=:STOR and DD.Out_Date is Null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL /* out after eDate */ select K.ID, K.GdsKey, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), d.Quant from DgvDt DD, GddDt D, GddKt K where DD.Stor=:STOR and DD.Out_Date > :eDate and DD.Out_Date is not null and D.DgvKey=DD.ID and K.ID=D.GddKey union ALL /* inp after eDate */ select K.ID, K.GdsKey, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), -k.Source from DgvKt DK, GddKt K where DK.Stor=:STOR and DK.DAT_ > :eDate and DK.ID=K.DgvKey union ALL /* inp into [bDate..eDate] */ select K.ID, K.GdsKey, k.Source, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from DgvKt DK, GddKt K where DK.Stor=:Stor and DK.DAT_ >= :bDate and DK.DAT_ <= :eDate and DK.ID=K.DgvKey union ALL /* out into [bDate..eDate] */ select K.ID, K.GdsKey, Cast(0.0 as Double Precision), d.Quant, Cast(0.0 as Double Precision), Cast(0.0 as Double Precision) from DgvDt DD, GddDt D, GddKt K where DD.Stor=:STOR and DD.Out_Date >= :bDate and DD.Out_Date <=:eDate and D.DgvKey=DD.ID and K.ID=D.GddKey into :KID, :GID, :qInp, :qOut, :qBeg, :qEnd do begin Select KTID from GddKt_SrcKtID(:KID) into :KsID; DgvKtID = Null; Select K.DgvKey, K.Price, K.Nds, KK.TYP from GddKt K, DgvKt KK where K.ID=:KsID and KK.ID=K.DgvKey and KK.Typ=4 into :DgvKtID, :Price, :Nds, :Typ; /*Select Typ From DgvKt Where ID=:DgvKtID into :Typ;*/ if (:DgvKtID is not Null) then begin /* Work */ qBeg=:qEnd-:qInp+:qOut; DgvWkID=Null; Select W.ID, W.Quant, (Select Sum(n.Summa) from WorkNkDg N where DgvID=W.ID)/W.Quant, Sum(D.Quant*D.Price)/W.Quant dPrice, Sum(D.Quant*D.Nds)/W.Quant dNds From DgvWkG W, GddDt D where W.DgvKtID=:DgvKtID and W.Quant <> 0.0 and W.Quant is not null and D.DgvKey=W.DgvDtID Group by W.ID, W.Quant into :DgvWkID, :wQuant, :nPrice, :dPrice, :dNds; if (nPrice is null) then nPrice = 0.0; /*dPrice=0.0; dNds=0.0; nPrice = nPrice/wQuant; nPrice=0.0; nNds=0.0;*/ nNds = nPrice/5; nPrice=:nPrice+:nNds; if(:qInp<>0 or :qOut<>0 or :qBeg<>0 or :qEnd<>0) then Suspend; end end end^ ALTER PROCEDURE GDDDTU_NEWID RETURNS ( ID INTEGER) AS begin ID=Gen_ID(GddDtU_ID,1); end^ ALTER PROCEDURE GDDDTU_PRICE ( ID INTEGER) RETURNS ( PRICE DOUBLE PRECISION) AS declare variable nPrice double precision; declare variable DgvID Integer; declare variable proc double precision; declare variable Priority integer; declare variable PrevPrio Integer; declare variable BasePrice double precision; declare variable Delta Double precision; begin Price = 0.0; SELECT D.PRICE, DD.DGVID FROM GDDDTU D JOIN DGVDTU DD ON DD.ID=D.DGVKEY JOIN DGVDTUD DDD ON DDD.ID=DD.DGVID WHERE D.ID=:ID INTO :NPRICE, :DGVID; BasePrice = :NPrice; PrevPrio = Null; Delta = 0.0; Price = :NPrice; FOR SELECT H.PROC, H.PRIORITY FROM GDDDTUNL N JOIN HBDTNL H ON H.ID=N.DTNLID WHERE N.DGVID=:DGVID ORDER BY H.PRIORITY, H.ID INTO :Proc, :Priority do begin if (:PrevPrio is not Null and :Priority > :PrevPrio) then BasePrice = Price; if (:PrevPrio is Null) then Delta = BasePrice / 100.00 * :Proc; if (:PrevPrio = :Priority) then Delta = BasePrice / 100.00 * :Proc; Price = :Price + :Delta; PrevPrio = :Priority; end suspend; end^ ALTER PROCEDURE GDDKT_DECRNORM_QNT ( STOR INTEGER, ADATE TIMESTAMP = null) RETURNS ( ID INTEGER, DNID INTEGER, NORM DOUBLE PRECISION, QNT DOUBLE PRECISION, SRC DOUBLE PRECISION, NORM_QNT DOUBLE PRECISION, IS_DECRNORM INTEGER) AS begin for select q.id, c.DNID, c.NORM, k.Source, k.Quant from gddktqnt q join gddkt k on k.id=q.id left join goods_decrnorm_calc(q.id, :aDate) c on 0=0 where q.stor = :STOR and c.DNID is not null into :ID, :DNID, :NORM, :Src, :Qnt do begin Is_DecrNorm = 0; Norm_Qnt = :Src / 100.00 * :Norm; if (:Qnt <= :Norm_Qnt) then Is_DecrNorm = 1; suspend; end end^ ALTER PROCEDURE GDDKT_DELTOSRC ( ID INTEGER, ADATE TIMESTAMP, QUANT DOUBLE PRECISION) RETURNS ( KID INTEGER) AS declare variable Deleted Integer; Declare Variable DtExist Integer; Declare Variable Price double precision; Declare Variable Nds double precision; Declare Variable SPrice double precision; Declare Variable SNds double precision; Declare Variable Qnt double precision; Declare Variable GdsKey integer; /* новая приходная накладная - приход */ Declare Variable DgvEID integer; /* новая приходная накладная - внутр. передача */ Declare Variable DgvIID integer; /* исходная позиция товара */ Declare Variable KSID integer; Declare Variable KCID integer; Declare Variable KKCID integer; Declare Variable KCID1 integer; Declare Variable DCID integer; Declare Variable DDCID integer; Declare Variable KKSID integer; Declare Variable KKID integer; Declare Variable KTYP integer; Declare Variable STYP integer; Declare Variable DtGddKey integer; /* исходный склад */ Declare Variable Stor1 integer; /* текущий склад */ Declare Variable Stor2 integer; Declare Variable NameID integer; Declare Variable GddEID integer; Declare Variable GddIID integer; begin Deleted = 0; DtExist = 0; KID = ID; if (:Quant = 0.0) then exit; Select 1 from Rdb$Database where Exists (Select D.ID from GddDt D where D.GddKey = :ID) into :DtExist; Select KTID from GddKt_SrcKtID(:ID) into :KSID; if (:KSID is Null) then exit; Select KK.ID, KK.Typ, K.Quant, K.Price, K.Nds, K.GddKey, KK.Stor, K.GdsKey from GddKt K, DgvKt KK where K.ID = :ID and KK.ID = K.DgvKey into :KKID, :KTyp, :Qnt, :Price, :Nds, :DtGddKey, :Stor2, :GdsKey; /* приход, внутр. передача, переоценка */ if (:KTyp not in (0,1,3)) then exit; if(:Quant > :Qnt) then Quant = :Qnt; Select KK.ID, KK.Typ, K.Price, K.Nds, KK.Stor, KK.NameID from GddKt K, DgvKt KK where K.ID=:KSID and KK.ID=K.DgvKey into :KKSID, :STyp, :SPrice, :SNds, :Stor1, :NameID; /* исходный товар - только оприходование */ if (:KKSID is Null or :STyp <> 0) then exit; KCID = :ID; DCID = :DtGddKey; KKCID = :KKID; while (:KCID is not Null) do begin DCID = Null; DDCID = Null; Select D.ID, DD.ID, D.GddKey from GddKt K Left Join GddDt D on D.ID=K.GddKey Left Join DgvDt DD on DD.ID=D.DgvKey where K.ID=:KCID into :DCID, :DDCID, :KCID1; if (:KCID is not Null) then begin if (:DCID is not Null) then begin Delete from GddDt where ID=:DCID and Quant = :Quant; Update GddDt set Quant = Quant - :Quant where ID=:DCID and Quant <> :Quant; end Delete from GddKt K where K.ID = :KCID and Source = :Quant and Quant = :Quant and not Exists (Select D.ID from GddDt D where D.GddKey=K.ID); Update GddKt K set Quant = Quant-:Quant, Source = Source-:Quant where K.ID=:KCID; Update DgvDt set Mark = 1 where ID=:DDCID and Mark <> 1; Update DgvKt set Mark = 1 where ID=:KKCID and Mark <> 1; end KCID = Null; KKCID = Null; Select K.ID, KK.ID from GddKt K, DgvKt KK where K.ID=:KCID1 and KK.ID=K.DgvKey into :KCID, :KKCID; end /* новая приходная накладная от поставщика */ DgvEID = Null; Select KK.ID from DgvKt KK where Stor=:Stor1 and NameID=:NameID and DAT_ = :aDate and Typ = 0 and Mark = 2 into :DgvEID; if (:DgvEID is Null) then begin DgvEID = Gen_ID(DgvKt_ID, 1); Insert Into DgvKt(ID, DAT_, Stor, NameID, Typ, Mark) Values(:DgvEID, :aDate, :Stor1, :NameID, 0, 2); end /* новая внутренняя передача */ DgvIID = Null; Select Min(DD.ID) from DgvDt DD where DD.Stor=:Stor1 and DD.StorID=:Stor2 and DD.DAT_ = :aDate and DD.Typ = 1 and DD.Mark = 2 into :DgvIID; if ((:DgvIID is Null) and (:Stor1 <> :Stor2)) then begin DgvIID = Gen_ID(DgvDt_ID, 1); Insert Into DgvDt(ID, DAT_, Stor, StorID, Typ, Mark) Values(:DgvIID, :aDate, :Stor1, :Stor2, 1, 2); end /* добавить новую позицию товара */ GddEID = Gen_ID(GddKt_ID, 1); Insert Into GddKt(ID, DgvKey, GdsKey, Quant, Source, Price, Nds) Values (:GddEID, :DgvEID, :GdsKey, :Quant, :Quant, :SPrice, :SNds); if (:DgvIID is not Null) then begin GddIID = Gen_ID(GddDt_ID, 1); Insert into GddDt(ID, DgvKey, GddKey, GdsKey, Quant, Price, Nds) Values (:GddIID, :DgvIID, :GddEID, :GdsKey, :Quant, :Price, :Nds); end suspend; end^ ALTER PROCEDURE GDDKT_DSTDTID ( ID INTEGER) RETURNS ( DTID INTEGER, DTYP INTEGER) AS declare variable KTID Integer; begin for Select D.ID, DD.TYP from GddDt D, DgvDt DD where D.GddKey=:ID and DD.ID=D.DgvKey and DD.Out_Date is not null into :DTID,:DTYP do begin if(:DTYP=0) then Suspend; if(:DTYP=1 or :DTYP=7) then begin Select ID from GddKt where GddKey=:DTID into :KTID; for Select DTID, DTYP from GddKt_DstDtID(:KTID) into :DTID,:DTYP do suspend; end if(:DTYP=10) then Suspend; end end^ ALTER PROCEDURE GDDKT_DSTSELECT ( RECLEVEL INTEGER, PARENTID INTEGER, ID INTEGER) RETURNS ( OUTLEVEL INTEGER, PARENTOUT INTEGER, IDOUT INTEGER, KID INTEGER, DID INTEGER) AS declare variable Out_Date Date; declare variable DTYP Integer; declare variable DTID Integer; begin ParentOut = :ParentID; IDOut = :ID; DID = Null; KID = :ID; OutLevel = :RecLevel; Suspend; RecLevel = :RecLevel+1; for Select D.ID, DD.TYP, DD.Out_Date from GddDt D, DgvDt DD where D.GddKey=:ID and DD.ID=D.DgvKey Order by DD.DAT_, DD.Out_Date, DD.ID into :DTID, :DTYP, :Out_Date do begin ParentOut=:ID; IDOUT = -DTID; DID = :DTID; KID = :ID; OutLevel = :RecLevel; Suspend; if (:Out_Date is not Null and :DTYP=1) then begin ParentID=-DTID; Select K.ID from GddKt K where K.GddKey=:DTID into :IDOUT; for Select OutLevel, ParentOut, IDOUT, KID, DID from GddKt_DstSelect(:RecLevel, :ParentID, :IDOUT) into :OutLevel, :ParentOut, :IDOUT, :KID, :DID do begin Suspend; end end end end^ ALTER PROCEDURE GDDKT_NEWID RETURNS ( ID INTEGER) AS begin ID = GEN_ID(gddkt_id,1); end^ ALTER PROCEDURE GDDKT_SRCKTID ( ID INTEGER) RETURNS ( KTID INTEGER) AS Declare Variable Typ Integer; Declare Variable DgvKtID Integer; Declare Variable GddKey Integer; begin KtID = ID; GddKey = Null; Select DgvKey, GddKey from GddKt where ID=:KtID and GddKey is not null into :DgvKtID, :GddKey; if (:GddKey is not null) then begin Select Typ From DgvKt where ID=:DgvKtID into :Typ; if (:Typ=1 or :Typ=2 or :Typ=3) then execute Procedure GddDt_SrcKtID :GddKey returning_values :KtID; end Suspend; end^ ALTER PROCEDURE GDSPARAM_UPDATE ( GOODSID INTEGER, PARAMID INTEGER, FIXVAL INTEGER, INTVAL INTEGER, DBLVAL DOUBLE PRECISION, STRVAL VARCHAR(255)) RETURNS ( ID INTEGER) AS declare variable GdsID integer; declare variable PrmID integer; declare variable FixID integer; declare variable GdsPrmID integer; Declare variable UserName varchar(20); begin ID = Null; Select ID, UserName from Goods where ID = :GoodsID into :GdsID, :UserName; Select ID from GdsParamPrm where ID = :ParamID into :PrmID; if (:GdsID is Null) then exit; if (:PrmID is Null) then exit; if (:FixVal is not Null) then Select ID from GdsParamVal where ParamID = :PrmID and ID = :FixVal into :FixID; Select ID from GdsParamGdsRef where GoodsID = :GdsID and ParamID = :PrmID into :GdsPrmID; if (:GdsPrmID is Null) then begin ID = Gen_ID(GdsParamGdsRef_ID, 1); insert into GdsParamGdsRef(ID, GoodsID, ParamID, UserName, FixVal, IntVal, DblVal, StrVal) values(:ID, :GdsID, :PrmID, :UserName, :FixVal, :IntVal, :DblVal, :StrVal); end else begin ID = :GdsPrmID; Update GdsParamGdsRef set FixVal = :FixVal, IntVal = :IntVal, DblVal = :DblVal, StrVal = :StrVal where ID = :ID; end suspend; end^ ALTER PROCEDURE GET_MEGA_GROOP ( AGROOP_ID INTEGER) RETURNS ( ID INTEGER, NAME VARCHAR(50)) AS declare variable aOWNER_ID INTEGER; begin select ID,NAME,OWNER from GOODS where ID = :aGROOP_ID into :ID,:NAME,:aOWNER_ID; suspend; while (aOWNER_ID is not NULL) do begin select ID,NAME,OWNER from GOODS where ID = :aOWNER_ID into :ID,:NAME,:aOWNER_ID; suspend; end end^ ALTER PROCEDURE GODSLOST AS declare variable gddktid integer; declare variable quant double precision; declare variable source double precision; declare variable q double precision; declare variable qi double precision; declare variable id integer; Declare Variable GdsKey integer; Declare Variable DgvKey integer; Declare Variable DgvTyp integer; Declare Variable Dat_ Date; Declare Variable Name Varchar(40); Declare Variable Code Varchar(20); Declare Variable Nbr Varchar(20); /* остаток по накладной */ Declare Variable QQNT double precision; /* исходное количество */ Declare Variable QSRC double precision; /* расход товара */ Declare Variable QOUT double precision; begin delete from GoodsChk; for select K.id, K.quant, K.source, K.GdsKey, K.DgvKey, K.Qnt_One, K.Src_One, (select Sum(D.quant) from GddDt D where D.GddKey=K.ID), (select Sum(D.Qnt_One) from GddDt D where D.GddKey=K.ID) from gddkt K into :id,:quant,:source,:GdsKey,:DgvKey, :QQNT, :QSRC, :Q, :QOUT do begin if (:q is null) then Q = 0.0; if (:QOUT is Null) then QOUT = 0.0; if(Abs(:q-(:source-:quant)) >= 1.e-5 or Abs(:QOUT-(:QSRC-:QQNT))>=1.e-5) then begin for Select Dat_,Nbr,Typ from DgvKt where ID=:DgvKey into :Dat_,:Nbr,:DgvTyp do ID=:ID; for Select Name,Code from Goods where ID=:GdsKey into :Name,:Code do ID=:ID; insert into GoodsChk(ID,Sr,Qn,Qc,GdsKey,DgvKey, Dat_,Nbr,Name,Code,DgvTyp, D1, D2, D3) values(:ID,:Source,:Quant,:Source-:Q,:GdsKey,:DgvKey, :Dat_,:Nbr,:Name,:Code,:DgvTyp, :QSRC, :QQNT, :QSRC-:QOUT); /* if (:Source-:Q >= 0) then Update GddKt set Quant = :Source-:Q where ID=:ID; */ end end end^ ALTER PROCEDURE GODSLOST_RESTORE AS declare variable QC Double Precision; declare variable QntC Double Precision; declare variable ID integer; begin for select ID, QC, D3 from GoodsChk into :ID, :QC, :QntC do begin if (:QC >= 0 and :QC is not null) then Update GddKt Set Quant=:QC where ID=:ID; if (:QntC >= 0 and :QntC is not null) then Update GddKt Set Qnt_One=:QntC where ID=:ID; end end^ ALTER PROCEDURE GOODS_CODASSIGN ( ID INTEGER, PARENTID INTEGER) RETURNS ( COD VARCHAR(20)) AS declare variable CodeAssign integer; declare variable xCod varchar(255); declare variable C varchar(20); begin if (:ID is not Null) then begin Select Cast(Min(Val) as Integer) from SysConst where Name = 'GdsCodeAssign' into :CodeAssign; if (:CodeAssign = 1) then begin xCod = ''; while (:ParentID is not Null) do begin select ParentID, CoalEsce(Cod, '') from GoodsGroups where ID = :ParentID into :ParentID, :C; xCod = :C || :xCod; end Cod = :xCod || Cast(:ID as varchar(20)); when any do Cod = ''; end end suspend; end^ ALTER PROCEDURE GOODS_DECRNORM_CALC ( KTID INTEGER, DATE_OUT TIMESTAMP = null) RETURNS ( NORM DOUBLE PRECISION, DNID INTEGER) AS declare variable days double precision; declare variable Norm1 double precision; declare variable Norm2 double precision; declare variable Norm3 double precision; declare variable Period1 double precision; declare variable Period2 double precision; declare variable Calc1 integer; declare variable Calc2 integer; declare variable Calc3 integer; declare variable Date_Inp TimeStamp; begin DNID = null; Norm = Null; if (Date_Out is Null) then Date_Out = Current_Date; select N.ID, kk.DAT_ from GddKt K join Goods g on g.id=k.gdskey join goods_decrnorm N on N.ID=G.decrnormid join dgvkt Kk on kk.ID= k.dgvkey where k.id = :KtID into :DNID, :Date_Inp; if (:dnid is not null) then begin select Result from F_ELAPSEDDAYS(:date_inp, :Date_Out) into :Days; select CoalEsce(Norm1, 0.0), CoalEsce(Norm2, 0.0), CoalEsce(Norm3, 0.0), CoalEsce(Period1, 0.0), CoalEsce(Period2, 0.0), CoalEsce(Calc1, 0), CoalEsce(Calc2, 0), CoalEsce(Calc3, 0) from goods_decrnorm dn where DN.ID=:dnid into :norm1, :Norm2, :norm3, :Period1, :Period2, :calc1, :Calc2, Calc3; if (:period1 > 0.0 and :Period1 <= :Days) then begin Norm = :Norm1; if (:calc1 > 0) then Norm = :Norm1 * :Days; end if (:Norm is Null and :period2 > 0.0 and :Period2 <= :Days) then begin Norm = :Norm2; if (:calc2 > 0) then Norm = :Norm2 * :Days; if (:Period1 > 0) then begin -- добавлем норму из первого периода if (:Calc1 > 0) then Norm = Norm + (:Norm1 * :Period1); else Norm = :Norm + :Norm1; end end if (:Norm is Null) then begin Norm = :Norm3; if (:calc3 > 0) then Norm = :Norm3 * :Days; end end if (:Norm is Null) then Norm = 0.0; suspend; end^ ALTER PROCEDURE GOODS_LASTINPDATE ( GODSID INTEGER, OURORGNID INTEGER, STORID INTEGER, ORGNID INTEGER) RETURNS ( INPDATE DATE) AS begin -- последняя дата поставки товара GodsID -- от указанного поставщика, все склады if (:OurOrgnID is not Null and :OrgnID is not Null and :StorID is Null) then begin Select Max(KK.DAT_) from StorList S, DgvKt KK, GddKt K where S.OurOrgnID = :OurOrgnID and KK.Stor = S.ID and K.DgvKey = KK.ID and K.GdsKey = :GodsID and KK.NameID = :OrgnID into :InpDate; end suspend; end^ ALTER PROCEDURE GOODS_LASTINPNAMEID ( ORGNID INTEGER, STORID INTEGER, GODSID INTEGER) RETURNS ( NAMEID INTEGER) AS declare variable aDate TimeStamp; declare variable kkid integer; begin if (:StorID is Null) then begin -- по всем складам select first 1 kk.nameid from DgvKt KK join GddKt K on K.dgvkey = KK.ID join StorList S on S.OurOrgnID = :OrgnID and S.ID = KK.Stor where K.GdsKey = :GodsID and KK.Typ in (0, 5) order by KK.DAT_ desc, KK.ID desc into :NameID; end else begin select first 1 kk.nameid from DgvKt KK join GddKt K on K.dgvkey = KK.ID where K.GdsKey = :GodsID and KK.Stor = :StorID and KK.Typ in (0, 5) order by KK.DAT_ desc, KK.ID desc into :NameID; end suspend; end^ ALTER PROCEDURE GOODS_LASTINPPRICE ( ORGNID INTEGER, STORID INTEGER, GODSID INTEGER) RETURNS ( KID INTEGER, PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, INP_DATE TIMESTAMP) AS declare variable aDate TimeStamp; declare variable KKID integer; begin if (:StorID is Null) then begin -- по всем складам select first 1 k.id, k.price, k.nds, kk.DAT_ from GddKt K join DgvKt KK on KK.ID = K.DgvKey join StorList S on S.OurOrgnID = :OrgnID and S.ID = KK.Stor where K.GdsKey = :GodsID and KK.Typ in (0, 5) order by kk.dat_ desc, kk.id desc, k.id desc into :KID, :price, :nds, :INP_DATE; end else begin select first 1 k.id, k.price, k.nds, kk.DAT_ from GddKt K join DgvKt KK on KK.ID = K.DgvKey join StorList S on S.OurOrgnID = :OrgnID and S.ID = KK.Stor where K.GdsKey = :GodsID and S.ID=:STORID and KK.Typ in (0, 5) order by kk.dat_ desc, kk.id desc, k.id desc into :KID, :price, :nds, :INP_DATE; end suspend; end^ ALTER PROCEDURE GOODS_NEWID RETURNS ( ID INTEGER) AS begin id = GEN_ID(goods_id, 1); end^ ALTER PROCEDURE GOODS_REPLACEANDREMOVE ( KEEPID INTEGER, DELID INTEGER) AS declare variable KID integer; declare variable DID integer; declare variable DELMBPID integer; declare variable KEEPMBPID integer; declare variable OURORGNID integer; declare variable MBPGDDID integer; declare variable DELWORKMAINID integer; declare variable KEEPWORKMAINID integer; declare variable BARCODE varchar(20); declare variable SIZEX double precision; declare variable SIZEY double precision; declare variable SIZEZ double precision; declare variable CODUKTVED varchar(20); declare variable FULLNAME varchar(255); declare variable VENDORNAMEID integer; begin -- ? разные записи if (:KeepID=:DelID) then exit; -- существуют ли записи и действительно ли наименования одинаковы Select G1.ID, G2.ID from Goods G1, Goods G2 where G1.ID=:KEEPID and G2.ID=:DELID and G1.Name=G2.Name and G1.Code = G2.Code into :KID, :DID; if (:KID is Null) then exit; if (:DID is Null) then exit; select CoalEsce(Trim(barcode), ''), CoalEsce(Trim(fullname), ''), CoalEsce(Trim(CodUktVed), ''), CoalEsce(SizeX, 0.0), CoalEsce(SizeY, 0.0), CoalEsce(SizeZ, 0.0) from Goods where ID=:DelID into :BarCode, :FullName, :CodUktVed, :SizeX, :SizeY, :SizeZ; if (:FullName <> '') then begin select min(ID) from VendorName where Name=:FullName into :VendorNameID; if (:VendorNameID is null) then begin VendorNameID = Gen_ID(VendorName_ID, 1); insert into VendorName(ID, Name,GODSID) Values(:VendorNameID, :FullName,:KID); end update GddKt Set VendorNameID=:VendorNameID where GdsKey=:DelID and VendorNameID is Null; end if (:BarCode<>'') then begin Update GddKt K set BarCode=:BarCode where GdsKey=:DelID and CoalEsce(Trim(BarCode),'') = ''; end if (:CodUktVed<>'') then begin Update GddKt K set TGrpCode=:CodUktVed where GdsKey=:DelID and CoalEsce(Trim(TGrpCode),'') = ''; end if (:SizeX<>0.0) then begin Update GddKt K set SizeX=:SizeX where GdsKey=:DelID and CoalEsce(SizeX,0.0) = 0.0; end if (:SizeY<>0.0) then begin Update GddKt K set SizeY=:SizeY where GdsKey=:DelID and CoalEsce(SizeY,0.0) = 0.0; end if (:SizeZ<>0.0) then begin Update GddKt K set SizeZ=:SizeZ where GdsKey=:DelID and CoalEsce(SizeZ,0.0) = 0.0; end -- заменяем DELID на KEEPID Update AccnProv set dt2 = :KeepID where dt2 = :DelID; Update AccnProv set kt2 = :KeepID where kt2 = :DelID; Update CRDS_GddDt Set Goods_ID = :KEEPID where Goods_ID=:DelID; Update CRDS_GddKt Set Goods_ID = :KEEPID where Goods_ID=:DelID; Update CTLGGOODS Set Goods_ID = :KEEPID where Goods_ID=:DelID; Update CtlgItem Set Goods_ID = :KEEPID where Goods_ID=:DelID; Update DgvWk Set MstGdsID =:KEEPID where MstGdsID =:DelID; Update DgvWkG Set MstGdsID =:KEEPID where MstGdsID =:DelID; Update DkBillGds Set GodsID =:KEEPID where GodsID =:DelID; Update EcrGoods Set GodsID =:KEEPID where GodsID =:DelID; Update GddDt Set GdsKey =:KEEPID where GdsKey =:DelID; Update GddKt Set GdsKey =:KEEPID where GdsKey =:DelID; Delete from GdsParamGdsRef where GoodsID = :DelID; Update GdsParamGdsRef Set GoodsID =:KEEPID where GoodsID =:DelID; Update InvOpisData Set GodsID =:KEEPID where GodsID =:DelID; Update MainMean Set GodsID =:KEEPID where GodsID =:DelID; Update MainMeanSlv Set GodsID =:KEEPID where GodsID =:DelID; -- Карточки МБП for select ID, OurOrgnID from MbpMean where GodsID = :DelID into :DelMbpID, :OurOrgnID do begin select Min(ID) from MbpMean where GodsID = :KeepID and OurOrgnID = :OurOrgnID into :KeepMbpID; for select D.ID from MbpGdd D, MbpDgv DD where D.MbpID = :DelMbpID and DD.ID = D.DgvID and DD.OurOrgnID = :OurOrgnID into :MbpGddID do begin update MbpGdd set MbpID = :KeepMbpID where ID = :MbpGddID; end end Delete from MbpMean where GodsID = :DelID; -- Изделия (производство) for select ID from WorkMain where GodsID = :DelID into :DelWorkMainID do begin KeepWorkMainID = Null; select ID from WorkMain where GodsID = :KeepID into :KeepWorkMainID; if (:KeepWorkMainID is Null) then begin KeepWorkMainID = Gen_ID(WorkMain_ID, 1); insert into WorkMain(ID, GodsID) values(:KeepWorkMainID, :KeepID); end Update WorkMain set ParentID = :KeepWorkMainID where ParentID = :DelWorkMainID; Update WorkLink set Owner = :KeepWorkMainID where Owner = :DelWorkMainID; Update WorkLink set MainDtlID = :KeepWorkMainID where MainDtlID = :DelWorkMainID; Update WorkPlanSlv set MainID = :KeepWorkMainID where MainID = :DelWorkMainID; Update WorkZMst set MID = :KeepWorkMainID where MID = :DelWorkMainID; end Delete from WorkMain where GodsID = :DelID; Update MDOC_Goods Set Good_ID =:KEEPID where Good_ID =:DelID; Update MOG_DISCOUNT Set Groop_ID =:KEEPID where Groop_ID =:DelID; Delete from PriceGoods where GdsKey =:DelID; Update ReservLog Set GdsKey =:KEEPID where GdsKey =:DelID; Update WorkGoodsGds Set GdsID =:KEEPID where GdsID =:DelID; Update WorkHbLn Set GodsID =:KEEPID where GodsID =:DelID; Update WorkLink Set GodsID =:KEEPID where GodsID =:DelID; Update WorkMain Set GodsID =:KEEPID where GodsID =:DelID; Update WorkZCutting Set GodsID =:KEEPID where GodsID =:DelID; Update WorkZMst Set GodsID =:KEEPID where GodsID =:DelID; Update WorkZSlv Set GodsID =:KEEPID where GodsID =:DelID; Update StorZDtGds Set GodsID =:KEEPID where GodsID =:DelID; Update WorkRequestGds Set GodsID =:KEEPID where GodsID =:DelID; Update Bdg_Goods Set Goods_ID =:KEEPID where Goods_ID =:DelID; Update SC_CARDS Set GoodsID =:KEEPID where GoodsID = :DelID; Update SC_CARDT Set GdsKey =:KEEPID where GdsKey = :DelID; Update SC_RemZap Set GoodsID =:KEEPID where GoodsID = :DelID; Update SC_RemZap1 Set GoodsID =:KEEPID where GoodsID = :DelID; Update StorZDtGds Set GodsID =:KEEPID where GodsID = :DelID; Update MDoc_Goods Set Good_ID =:KEEPID where Good_ID = :DelID; Update DK_GOODSPACK Set GdsID =:KEEPID where GdsID = :DelID; Update VendorName set GODSID =:KEEPID where GODSID = :DelID; Delete From Goods where ID=:DelID; end^ ALTER PROCEDURE GOODSGROUPS_PATH ( ID INTEGER) RETURNS ( PATH VARCHAR(1024)) AS declare variable ParentID integer; declare variable N varchar(255); declare variable P varchar(1024); declare variable GID integer; begin Path = ''; if (:ID is not Null) then begin select ID, ParentID, Name from GoodsGroups where ID = :ID into :GID, :ParentID, :N; if (:ParentID is not Null) then Select Path from GoodsGroups_Path(:ParentID) into :P; else P = ''; if (:P <> '') then Path = :P || ' \ ' || :N; else Path = :N; end suspend; end^ ALTER PROCEDURE GOODSGRP_FREE ( STOR INTEGER, PARENTID INTEGER, SZID INTEGER) RETURNS ( ID INTEGER, GR INTEGER, GDSCNT INTEGER) AS declare variable GrpID integer; begin GR = 0; if (:SZID = 0 or :SZID is Null) then begin for select G.Owner, Count(K.ID) from GddKtQnt Q join GddKt K on K.ID=Q.ID join Goods G on G.ID=K.GdsKey where Q.Stor = :Stor and (K.WrGdsID+0 is Null or K.SZID is Null) Group by G.Owner into :GrpID, :GdsCnt do begin for Select DID from GoodsGrp_GetParents(:GrpID) into :ID do begin if (:ID <> :GrpID) then GR = 1; else GR = 0; Suspend; end end end else begin /* только по складским заказам */ for select G.Owner, Count(K.ID) from GddKtQnt Q join GddKt K on K.ID=Q.ID join Goods G on G.ID=K.GdsKey where Q.Stor = :Stor and ((K.SZID = :SZID) or ((K.WrGDSID is Null or K.SZID is Null) and K.GdsKey in (Select SG.GodsID from StorZDtGds SG where SG.SZID=:SZID))) Group by G.Owner into :GrpID, :GdsCnt do begin for Select DID from GoodsGrp_GetParents(:GrpID) into :ID do begin if (:ID <> :GrpID) then GR = 1; else GR = 0; Suspend; end end end end^ ALTER PROCEDURE GOODSGRP_GETCHILDREN ( PARENT_ID INTEGER, INCLUDE_PARENT INTEGER) RETURNS ( ID INTEGER) AS BEGIN if (parent_id is null) then begin FOR SELECT ID FROM goods WHERE GROU_ = 0 INTO :ID DO BEGIN SUSPEND; END end else begin if (include_parent = 1) then begin id = parent_id; suspend; end for select id from goods where owner = :parent_id and grou_ = 0 into :id do begin suspend; for select id from GOODSGRP_GETCHILDREN (:ID, 0) into :id do suspend; end end END^ ALTER PROCEDURE GOODSGRP_GETPARENTS ( ID INTEGER) RETURNS ( DID INTEGER, OID INTEGER, NAME VARCHAR(40)) AS BEGIN WHILE (:ID > 0) DO /* ищем до корня */ BEGIN SELECT O.ID, O.Owner, O.NAME FROM Goods O WHERE O.ID = :ID INTO :DID, :OID, :NAME; ID = :OID; /* код родителя для следующей выборки */ SUSPEND; END END^ ALTER PROCEDURE GOODSGRP_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(goodsgrp_id,1); end^ ALTER PROCEDURE GOODSGRP_SELECTWORKGRP RETURNS ( ID INTEGER) AS declare variable GrpID integer; begin for select GG.ID from Goods GG where GG.Grou_ = 0 and Exists(Select G.ID from Goods G, WorkMain M where G.Owner = GG.ID and M.GodsID=G.ID) into :GrpID do begin for Select DID from GoodsGrp_GetParents(:GrpID) into :ID do Suspend; end end^ ALTER PROCEDURE GOODSGRP_SELECTWORKGRPPARENT ( PARENTID INTEGER) RETURNS ( ID INTEGER) AS declare variable GrpID integer; begin if (:ParentID is Null) then begin for select GG.ID from GoodsGroups GG where /* GG.ParentID is Null and */ Exists(Select G.ID from Goods G, WorkMain M where G.Owner = GG.ID and M.GodsID=G.ID) into :GrpID do begin for Select DID from GoodsGrp_GetParents(:GrpID) into :ID do Suspend; end end else begin for Select GG.ID from GoodsGroups GG where /* GG.ParentID = :ParentID and */ exists (Select G.Owner from Goods G, workmain M where G.Owner = GG.ID and M.GodsID=G.ID) into :GrpID do begin for Select DID from GoodsGrp_GetParents(:GrpID) into :ID do Suspend; end end end^ ALTER PROCEDURE GOODSPRICEPROCGEN AS Declare Variable PriceID integer; Declare Variable GrpID integer; Declare Variable ProcID integer; Declare Variable Cnt integer; begin delete from GoodsPriceProc where PriceID not in(Select ID from PriceList); delete from GoodsPriceProc where GdsGrpID not in (Select ID from Goods where Grou_=0); for select g.id, p.id from Goods g, PriceList P where g.Grou_=0 into :GrpID, :PriceID do begin ProcID = null; For Select ID from GoodsPriceProc where PriceID=:PriceID and GdsGrpID=:GrpID into :ProcID do ProcID=:ProcID; if(:ProcID is null) then begin Insert into GoodsPriceProc (ID, PriceID, GdsGrpID) values (Gen_ID(GoodsPriceProc_ID,1), :PriceID,:GrpID); end end end^ ALTER PROCEDURE HBDTNL_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(HBDTNL_ID,1); end^ ALTER PROCEDURE HBGDDDU_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(hbgdddu_ID,1); end^ ALTER PROCEDURE HBKTSU_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(HbKtSU_ID,1); end^ ALTER PROCEDURE HBSERVU_NEWID RETURNS ( ID INTEGER) AS begin ID=Gen_ID(HBSERVU_ID,1); end^ ALTER PROCEDURE INIT_RIGHT_LIST AS begin delete from right_list where atype = 0; insert into right_list (parent_code,atype,code,name,comment,by_orgn) values (null,0,'BDGT','Управленческий учет','Доступ в модуль управленческий учет',0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT',0,'BDGT_ED_PERIOD','Управление периодами',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT',0,'BDGT_CTRL_PF','План-фактный контроль',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT',0,'BDGT_CTRL_OI','Контроль договоров',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT',0,'BDGT_F','Фактические данные',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_EDIT','Редактирование данных',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_MON_IN','Поступление денег',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_MON_OUT','Выбытие денег',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_IN','Доходы',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_IN_W','Реализация продукции',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_IN_G','Реализация товаров',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_IN_S','Реализация услуг',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_OUT','Затраты',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_OUT_G','Затраты на ТМЦ и МБП',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_ED_ACCEPT','Работа с "утвержденными" данными',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_REG','Регистрация факта',null,1); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_WORK','Производство',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_F',0,'BDGT_F_CALC','Калькуляция',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT',0,'BDGT_P','Планирование',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_EDIT','Редактирование данных',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_MON_IN','Поступление денег',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_MON_OUT','Выбытие денег',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_IN','Доходы',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_IN_W','Реализация продукции',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_IN_G','Реализация товаров',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_IN_S','Реализация услуг',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_OUT','Затраты',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_OUT_G','Затраты на ТМЦ и МБП',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_ED_ACCEPT','Работа с "утвержденными" данными',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_PRICE','Плановые цены',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_WORK','Производство',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_P',0,'BDGT_P_CALC','Калькуляция',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT',0,'BDGT_HB','Справочники',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_PLAN','Планы',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_PERIOD','Рабочие периоды',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_CENTER','Центры финансового учета (ЦФУ)',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_ITEM','Операционные статьи',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_ITEM_M','Финансовые статьи',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_DIRECTION','Направления деятельности',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_DISTR','Базы разнесения затрат по ЦФУ',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_DISTR_ORDER','Схемы разнесения затрат по ЦФУ',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_SCHEME','Калькуляция: схемы',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_BASIS','Калькуляция: базы',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_INDICATOR','Показатели',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_SHEDULE','Графики оплат',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_LINK_PODR','Матрицы структур',null,0); insert into right_list (parent_code,atype,code,name,comment,by_orgn) values ('BDGT_HB',0,'BDGT_HB_ATTR','Атрибуты',null,0); suspend; end^ ALTER PROCEDURE INVOPISDATA_GDDDT ( OPISID INTEGER, DGVDTID INTEGER, HASMAIN INTEGER = 1) RETURNS ( ID INTEGER) AS declare variable Summary integer; -- есть ли уже позиции товара declare variable HasData integer; -- развернутая / свернутая declare variable HasKID integer; declare variable EDate TimeStamp; declare variable aDate TimeStamp; declare variable StorID Integer; declare variable GodsID integer; -- остаток на складе declare variable SGodsID integer; declare variable SQuant double precision; declare variable SumNPrice double precision; declare variable SumNds double precision; declare variable SNPrice double precision; declare variable SNds double precision; -- позиция в ведомости declare variable DGodsID integer; declare variable DQuant double precision; declare variable DNPrice double precision; declare variable DNds double precision; declare variable Q double precision; declare variable DQnt double precision; declare variable KQnt double precision; declare variable GddKtID integer; declare variable ZID integer; declare variable WSlvID integer; begin ID = Null; HasMain = CoalEsce(:HasMain, 0); select ID, DAT_, StorID from InvOpisHeader where ID=:OpisID into :ID, :EDate, :StorID; if (:ID is Null) then exit; if (not exists(Select ID from DgvDt where ID=:DgvDtID)) then exit; select CoalEsce(Out_Date, Dat_), ZID from DgvDt where ID=:DgvDtID into :aDate, :ZID; if (:aDate is Null) then aDate = :EDate; if (:aDate is Null) then aDate = Current_Date; HasData = Null; HasKID = Null; select First 1 d.ID, d.KID from InvOpisData d where d.opisid = :ID into :HasData, :HasKID; Summary = 1; if (:HasData is not Null) then begin if (:HasKID is Null) then Summary = 1; else Summary = 0; end delete from GddDt where DgvKey = :DgvDtID; if (:Summary=1) then begin -- свернутая ведомость (по наименованиям товаров из справочника) for select GodsID, CQuant-RQuant, Price, Nds from InvOpisData where OpisID=:OpisID and CoalEsce(Tmp, 0)=0 and CQuant > RQuant and Abs(CQuant-RQuant) > 1.0e-10 order by GodsID, ID into :GodsID, :DQuant, :DNPrice, :DNds do begin WSlvID = Null; -- есть ли материал под изделия в заказе select First 1 S.ID from WorkZMst M join WorkZSlv S on S.MstID=M.ID and S.GodsID=:GodsID where M.ZID=:ZID into :WSlvID; WSlvID = CoalEsce(:WSlvID, 0); if ( (:HasMain=0 and :WSlvID=0) or (:HasMain<>0 and :WSlvID<>0) ) then begin DQnt = :DQuant; Q = 0.0; for select K.ID, K.Quant from GddKtQnt Q join GddKt K on K.ID=Q.ID and K.GdsKey=:GodsID join DgvKt KK on KK.ID=K.DgvKey where Q.Stor=:StorID and KK.DAT_ <= :aDate order by KK.DAT_, KK.ID, K.ID into :GddKtID, :KQnt do begin Q = :DQnt; if (:Q > :KQnt) then Q = :KQnt; if (:Q > 0) then begin insert into GddDt (DgvKey, GddKey, Quant, Price, Nds) Values (:DgvDtID, :GddKtID, :Q, :DNPrice+:DNds, :DNds); DQnt = :DQnt - :Q; end end end end if (:HasMain=0 and not Exists(Select D.ID from GddDt D where D.DgvKey=:DgvDtID)) then begin -- удалить пустую накладную (для отсутствующих под изделие мавтериалов) delete from DgvDt where ID=:DgvDtID; end end else begin -- развернутая ведомость (по позициям в приходных накладных) insert into GddDt (DgvKey, GddKey, Quant, Price, Nds) select :DgvDtID, KID, CQuant-RQuant, Price+Nds, Nds from InvOpisData where OpisID=:OpisID and Tmp=0 and CQuant > RQuant and Abs(CQuant-RQuant) > 1.0e-10; end suspend; end^ ALTER PROCEDURE INVOPISDATA_RECALC ( OPISID INTEGER, SUMMARY INTEGER = 1) RETURNS ( ID INTEGER) AS -- есть ли уже позиции товара declare variable HasData integer; -- развернутая / свернутая declare variable HasKID integer; declare variable EDate TimeStamp; declare variable StorID Integer; declare variable GodsID integer; -- остаток на складе declare variable SGodsID integer; declare variable SQuant double precision; declare variable SumNPrice double precision; declare variable SumNds double precision; declare variable SNPrice double precision; declare variable SNds double precision; -- позиция в ведомости declare variable DGodsID integer; declare variable DQuant double precision; declare variable DNPrice double precision; declare variable DNds double precision; -- остаток на складе begin id = Null; select ID, DAT_, StorID from InvOpisHeader where ID=:OpisID into :ID, :EDate, :StorID; if (:ID is Null) then exit; HasData = Null; HasKID = Null; select First 1 d.ID, d.KID from InvOpisData d where d.opisid = :ID into :HasData, :HasKID; if (:HasData is not Null) then begin if (:HasKID is Null) then Summary = 1; else Summary = 0; end delete from InvOpisData where OpisID=:ID and Tmp=1; if (:Summary = 1) then begin -- свернутая - по позициям товара в справочнике insert into InvOpisData (Tmp, GodsID, RQuant, Price, Nds, OpisID) select 1 as Tmp, ds1.GodsID, ds1.Squant, ds1.SumNPrice / ds1.SQuant, ds1.SumNds / ds1.SQuant, :OpisID from ( select p.gid GodsID, CoalEsce(Sum(p.qend),0.0) squant, Sum((p.price-p.nds)*p.qend) SUMNPRICE, Sum(p.nds*p.Qend) SUMNDS from gdddt_movegoods(:EDATE, :EDATE, :STORID) p Group By p.gid Having Abs(CoalEsce(Sum(p.QEnd),0.0)) > 1.0e-5 order by 1, 2) as DS1; -- пересечение товаров (есть в наличии и в ведомости) for select d1.godsid sgodsid, d2.godsid cgodsid, d1.rquant squant, d2.cquant cquant, d1.price, d1.nds, d2.price, d2.nds from invopisdata d1 -- stor join invopisdata d2 on d2.opisid=:OpisID and d2.tmp=0 and d1.godsid=d2.godsid where d1.opisid=:OpisID and d1.tmp=1 union -- отсутствуют в ведомости select d1.godsid, d2.godsid, d1.rquant, d2.cquant, d1.price, d1.nds, d2.price, d2.nds from invopisdata d1 -- stor left join invopisdata d2 on d2.opisid=:OpisID and d2.tmp=0 and d1.godsid=d2.godsid where d1.opisid=:OpisID and d1.tmp=1 and d2.id is null union -- отсутствуют в наличии select d1.godsid, d2.godsid, d1.rquant, d2.cquant, d1.price, d1.nds, d2.price, d2.nds from invopisdata d2 -- ведомость left join invopisdata d1 -- stor on d1.opisid=:OpisID and d1.tmp=1 and d1.godsid=d2.godsid where d2.opisid=:OpisID and d2.tmp=0 and d1.id is null into :SgodsID, :DgodsID, :SQuant, :DQuant, :Snprice, :Snds, :Dnprice, :Dnds do begin if (:SgodsID is not Null and :DGodsID is not Null) then begin update InvOpisData d set CQuant=:SQuant, Price=:SNPrice, Nds=:SNds where d.OpisID=:OpisID and d.GodsID=:DGodsID and Tmp=0; end if (:SgodsID is not Null and :DGodsID is Null) then begin insert into InvOpisData (GodsID, CQuant, RQuant, Price, Nds, OpisID, Tmp) values(:SGodsID, :SQuant, :SQuant, :SNPrice, :SNds, :OpisID, 0); end if (:SgodsID is Null and :DGodsID is not Null) then begin update InvOpisData d set CQuant=0.0 where d.OpisID=:OpisID and d.GodsID=:DGodsID and Tmp=0; end end /* -- позиции в ведомости, отсутствующие в расчетном остатке for select d.godsid dGodsID, p.GID SGODSID, d.cquant dquant, CoalEsce(Sum(p.qend),0.0) squant, d.price dprice, d.nds dnds, Sum((p.price-p.nds)*p.qend) SUMNPRICE, Sum(p.nds*p.Qend) SUMNDS from invopisdata d left join gdddt_movegoodsone(:EDATE, :EDATE, :STORID, d.godsid) p on 0=0 where d.opisid=17 Group By p.gid, d.godsid, d.cquant, d.price, d.nds Having Abs(CoalEsce(Sum(p.QEnd),0.0)) < 1.0e-5 union -- позиции в наличии на складе + пересечение с позициями ведомости select p.gid, d.godsid, d.cquant, CoalEsce(Sum(p.qend),0.0) squant, d.price, d.nds, Sum((p.price-p.nds)*p.qend) SUMNPRICE, Sum(p.nds*p.Qend) SUMNDS from gdddt_movegoods(:EDATE, :EDATE, :STORID) p left join invopisdata d on d.godsid=p.gid where d.opisid=17 Group By p.gid, d.godsid, d.cquant, d.price, d.nds Having Abs(CoalEsce(Sum(p.QEnd),0.0)) > 1.0e-5 order by 1, 2 into :DGodsID, :SGodsID, :DQuant, :SQuant, :DNPrice, :DNds, :SumNPrice, :SumNds do begin if (Abs(:DQuant) < 1.0E-5) then DQuant = 0; if (Abs(:SQuant) < 1.0E-5) then SQuant = 0; DGodsID = CoalEsce(:DGodsID, 0); SGodsID = CoalEsce(:SGodsID, 0); if (:DGodsID=0 and :SGodsID=0) then begin -- ignore end else if (:DGodsID <> 0 and :SGodsID = 0) then begin -- есть в ведомости, нет в наличии update InvOpisData set CQuant = 0 where GodsID=:DGodsID and OpisID=:OpisID; end else if (:SGodsID <> 0 and :DGodsID = 0 and :SQuant > 0) then begin -- есть в наличии, нет в ведомости DNPrice = :SumNPrice / :SQuant; DNds = :SumNds / :SQuant; insert into InvOpisData (GodsID, CQuant, RQuant, Price, Nds, OpisID) values(:SGodsID, :SQuant, :SQuant, :DNPrice, :DNds, :OpisID); end else if (:DGodsID <> 0 and :SGodsID <> 0 and :DQuant <> :SQuant) then begin -- есть в наличии, есть в ведомости, отличаются по количеству if (:SQuant <> 0) then begin DNPrice = :SumNPrice / :SQuant; DNds = :SumNds / :SQuant; end update invopisdata set CQuant=:SQuant, Price=:DNPrice, Nds=:DNds where GodsID=:DGodsID and OpisID=:OpisID; end end */ end else begin -- развернутая - по позициям в приходных накдадных /* select P.KID, G.ID GODSID, G.Owner, Sum(p.qend) sq, Sum((p.price-p.nds)*p.qend) SUMNPRICE, Sum(p.nds*p.Qend) SUMNDS, G.Name, g.Code, G.Cod, K.BarCode, G.One, Sum(P.QEnd * P.Price) SUMPRICE, P.Price, P.Nds, G.SizeX, G.SizeY, G.SizeZ, G.Description, G.MaxTnProc from gdddt_movegoods(:EDATE,:EDATE,:STORID) p, goods g, GddKt K, DgvKt KK where g.id = p.gid and K.ID = P.KID and KK.ID = K.DgvKey Group By G.ID, G.Owner, G.Name, G.Code, G.Cod, P.KID, KK.DAT_, KK.ID, P.Price, P.Nds, K.BarCode, G.One, G.SizeX, G.SizeY, G.SizeZ, G.Description, G.MaxTnProc Having Sum(p.qend) * Sum(p.QEnd) > 1.0e-10 Order By G.Name, G.Code, G.ID, KK.DAT_, KK.ID, P.KID, P.Price, P.Nds */ end delete from InvOpisData where OpisID=:ID and Tmp=1; suspend; end^ ALTER PROCEDURE KASSAVDATA_GENACCNREC ( ID INTEGER) AS declare variable dComment Varchar(255); declare variable aComment Varchar(255); declare variable pComment Varchar(255); declare variable Comment Varchar(255); declare variable DAT_ Date; declare variable Summa Double Precision; declare variable aSumma Double Precision; declare variable Nds Double Precision; declare variable PrsnID integer; declare variable OrgnID integer; declare variable Nbr Varchar(20); declare variable CurrTyp integer; declare variable Curs Double Precision; declare variable cSumma Double Precision; declare variable AVID integer; declare variable OperID integer; declare variable OpID integer; declare variable DT Varchar(5); declare variable KT Varchar(5); declare variable SumTyp integer; declare variable DatTyp integer; declare variable dt1 integer; declare variable kt1 integer; declare variable dt3 integer; declare variable kt3 integer; declare variable AccnID integer; declare variable OurOrgnID integer; declare variable DtPrt Integer; declare variable DtObj Integer; declare variable KtPrt Integer; declare variable KtObj Integer; Declare Variable Proc double precision; Declare Variable Storno integer; declare variable VL1 integer; declare variable VL2 integer; declare variable Dt8 integer; declare variable Dt9 integer; declare variable Kt8 integer; declare variable Kt9 integer; begin select AVID, Summa, Nds, Comment, OperID, NameID, VL1, VL2 from kassavdata where ID=:ID into :AVID, :Summa, :Nds, :dComment, :OperID, :OrgnID, :VL1, :VL2; if ((:OperID is null) or (:OperID=0)) then exit; select NBR, DAT_, PrsnID, Comment, CurrTyp, Curs, OurOrgnID from KassAVList where ID=:AVID into :NBR, :DAT_, :PrsnID, :aComment, :CurrTyp, :Curs, :OurOrgnID; /* gen accnprov */ For Select ID, DT, KT, SUMTYP, ACCNDATE, Comment, DtPrt, DtObj, KtPrt, KtObj, Proc, Storno from StorAccn where OperID=:OperID Order By ID into :OpID, :DT, :KT, :SumTyp, :DatTyp, pComment, :DtPrt, :DtObj, :KtPrt, :KtObj, :Proc, :Storno do begin aSumma = 0; if (:SumTyp=0) then aSumma=:Summa; if (:SumTyp=1) then aSumma=:Nds; if (:SumTyp=2) then aSumma=:Summa-:Nds; Comment = :dComment; if (:Comment='') then Comment=:aComment; if (:Comment='') then Comment=:pComment; select A1, A3, A8, A9 from AccnPlan where Accn=:DT into :DT1, :DT3, :Dt8, :Dt9; select A1, A3, A8, A9 from AccnPlan where Accn=:KT into :KT1, :KT3, :Kt8, :Kt9; if (:Dt1 is not Null and :Dt1<>0) then Dt1 = :OrgnID; else Dt1 = Null; if (:Kt1 is not Null and :Kt1<>0) then Kt1 = :OrgnID; else Kt1 = Null; if (:Dt3 is not Null and :Dt3<>0) then Dt3 = :PrsnID; else Dt3 = Null; if (:Kt3 is not Null and :Kt3<>0) then Kt3 = :PrsnID; else Kt3 = Null; if (:Dt8 is not Null and :Dt8<>0) then Dt8 = :VL1; else Dt8 = Null; if (:Kt8 is not Null and :Kt8<>0) then Kt8 = :VL1; else Kt8 = Null; if (:Dt9 is not Null and :Dt9<>0) then Dt9 = :VL2; else Dt9 = Null; if (:Kt9 is not Null and :Kt9<>0) then Kt9 = :VL2; else Kt9 = Null; if (:aSumma <> 0.0) then begin if (:Proc <> 0.0 and :Proc is not Null) then aSumma = :aSumma / 100.0 * :Proc; if (:Storno = 1) then aSumma = -:aSumma; cSumma = 0.0; if (:Curs <> 0.0) then cSumma = :Summa / :Curs; AccnID=Gen_ID(AccnProv_ID, 1); Insert into AccnProv(ID, OurOrgnID, DAT_, DT, KT, Document,Summa, Comment, dt1, kt1, dt3, kt3, Oper, OperID, DocID, CurrTyp, Curs, cSumma, DtPrt, DtObj, KtPrt, KtObj, dt8, dt9, kt8, kt9) values(:AccnID, :OurOrgnID, :DAT_, :DT, :KT, :NBR,:aSumma,:Comment, :dt1, :kt1, :Dt3, :Kt3,62,:OperID,:AVID, :CurrTyp, :Curs, :cSumma, :DtPrt, :DtObj, :KtPrt, :KtObj, :dt8, :dt9, :kt8, :kt9); Insert Into KassAvAcCr (ID, AVID, ACCNID) Values(Gen_ID(KassAvAcCr_ID,1), :AVID, :ACCNID); end end end^ ALTER PROCEDURE KASSAVDATA_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(KassAvData_ID,1); end^ ALTER PROCEDURE KASSAVLIST_DELACCNREC ( ID INTEGER) AS declare variable CrID integer; declare variable AccnID Integer; begin for Select ID, AccnID from KassAvAcCr where AVID=:ID into :CrID, :AccnID do begin Delete From KassAvAcCr where ID=:CrID; Delete From AccnProv where ID=:AccnID; end end^ ALTER PROCEDURE KASSAVLIST_GENACCNREC ( ID INTEGER) AS declare variable OperID integer; declare variable aDate Date; declare variable Nbr Varchar(20); declare variable Summa Double Precision; declare variable Nds Double Precision; declare variable DateTyp Integer; declare variable SumTyp Integer; declare variable Dt Varchar(5); declare variable Kt Varchar(5); declare variable Comment Varchar(255); declare variable Storno Integer; declare variable FinRes Integer; declare variable aSumma Double Precision; declare variable AccnID Integer; declare variable DtPrt Integer; declare variable DtObj Integer; declare variable KtPrt Integer; declare variable KtObj Integer; declare variable CSumma Double Precision; declare variable Curs Double Precision; declare variable CurrTyp Integer; declare variable PrsnID Integer; declare variable d3 Integer; declare variable Dt3 Integer; declare variable k3 Integer; declare variable Kt3 Integer; declare variable UserName Varchar(20); declare variable OpID Integer; declare variable OurOrgnID integer; declare variable Proc Double precision; declare variable VL1 integer; declare variable VL2 integer; declare variable d8 integer; declare variable d9 integer; declare variable k8 integer; declare variable k9 integer; declare variable dt8 integer; declare variable dt9 integer; declare variable kt8 integer; declare variable kt9 integer; begin Select V.OperID, V.Dat_, V.Nbr, V.Comment, Curs, CurrTyp, PrsnID, UserName, OurOrgnID, VL1, VL2 from KassAvList V where V.ID=:ID into :OperID, :aDate, :Nbr, :Comment, :Curs,:CurrTyp,:PrsnID,:UserName, :OurOrgnID, :VL1, :VL2; if ((OperID is Null) or (OperID=0)) then exit; Select Sum(D.Summa), Sum(D.Nds), Sum(D.CSumma) from KassAvData D where D.AVID=:ID into :Summa, :Nds,:CSumma; for Select ID, Dt, Kt, AccnDate, SumTyp, Storno, FinRes, DtPrt, DtObj, KtPrt, KtObj, Proc from StorAccn where OperID=:OperID into :OpID, :Dt, :Kt, :DateTyp, :SumTyp, :Storno, :FinRes, :DtPrt, :DtObj, :KtPrt, :KtObj, :Proc do begin Select A3, A8, A9 from AccnPlan where Accn=:Dt into :d3, :d8, :d9; Select A3, A8, A9 from AccnPlan where Accn=:Kt into :k3, :k8, :k9; dt3 = null; kt3 = null; dt8 = Null; dt9 = Null; kt8 = Null; kt9 = Null; if(:d3 is not null and :d3<>0) then Dt3 = :PrsnID; if(:k3 is not null and :k3<>0) then Kt3 = :PrsnID; if(:d8 is not null and :d8<>0) then Dt8 = :VL1; if(:k8 is not null and :k8<>0) then Kt8 = :VL1; if(:d9 is not null and :d9<>0) then Dt9 = :VL2; if(:k9 is not null and :k9<>0) then Kt9 = :VL2; if (:SumTyp=0) then aSumma=:Summa; if (:SumTyp=1) then aSumma=:Nds; if (:SumTyp=2) then aSumma=:Summa-:Nds; if (:SumTyp=3) then begin /* Курсовая разница */ aSumma = 0; execute procedure KassAvList_GenAccnRecSale :ID, :OpID; end if (:aSumma is Null) then aSumma=0.0; if (:aSumma <> 0.0) then begin if (:Proc <> 0.0 and :Proc is not Null) then aSumma = :aSumma / 100.0 * :Proc; if (:Storno = 1) then aSumma = -:aSumma; AccnID = Gen_ID(AccnProv_ID, 1); Insert Into AccnProv(ID, OurOrgnID, DAT_, Document, Summa, Comment, Dt, Kt, DtPrt,DtObj,KtPrt,KtObj,CurrTyp,Curs,CSumma,dt3,kt3,UserName, Oper, OperID, DocID, Dt8, Dt9, Kt8, Kt9) Values(:AccnID, :OurOrgnID, :aDate, :Nbr, :aSumma, :Comment, :Dt, :Kt, :DtPrt,:DtObj,:KtPrt,:KtObj,:CurrTyp,:Curs,:CSumma,:Dt3,:Kt3,:UserName, 62, :OperID, :ID, :Dt8, :Dt9, :Kt8, :Kt9); Insert Into KassAvAcCr(ID, AvID, AccnID) Values(Gen_ID(kassavaccr_id, 1), :ID, :AccnID); end end end^ ALTER PROCEDURE KASSAVLIST_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS declare variable AvID Integer; declare variable OID Integer; declare variable DataID Integer; declare variable dDate Date; declare variable aDate Date; declare variable dCurs double precision; declare variable aCurs double precision; declare variable dcSumma Double Precision; declare variable acSumma Double Precision; declare variable cSumm Double Precision; declare variable aSumma Double Precision; declare variable AccnID Integer; declare variable Comment varchar(255); declare variable Nbr Varchar(20); declare variable Dt Varchar(5); declare variable Kt Varchar(5); declare variable CurrTyp integer; declare variable d3 integer; declare variable dt3 integer; declare variable k3 integer; declare variable kt3 integer; declare variable d7 integer; declare variable dt7 integer; declare variable k7 integer; declare variable kt7 integer; declare variable PrsnID integer; declare variable KassID integer; declare variable DtPrt integer; declare variable DtObj integer; declare variable KtPrt integer; declare variable KtObj integer; declare variable OperID Integer; declare variable OurOrgnID integer; Declare variable Proc Double Precision; declare variable Storno integer; begin select ID, DAT_, Curs, Comment, Nbr, CurrTyp, PrsnID, OurOrgnID from KassAvList where ID=:ID into :AvID, :aDate, :aCurs, :Comment, :Nbr, :CurrTyp, :PrsnID, :OurOrgnID; if (:AvID is null) then exit; select ID, OperID, Dt, Kt, DtPrt, DtObj, KtPrt, KtObj, Proc, Storno From StorAccn where ID=:OpID into :OID, :OperID, :Dt, :Kt, :DtPrt, :DtObj, :KtPrt, :KtObj, :Proc, :Storno; if (:OID is Null) then exit; select a3, a7 from AccnPlan where Accn=:Dt into :d3, :d7; select a3, a7 from AccnPlan where Accn=:Kt into :k3, :k7; if (:d3 <> 0 and :d3 is not null) then dt3 = :PrsnID; if (:k3 <> 0 and :k3 is not null) then kt3 = :PrsnID; if (:d7 <> 0 and :d7 is not null) then dt7 = :KassID; if (:k7 <> 0 and :k7 is not null) then kt7 = :KassID; for Select C.KassDtID, D.DAT_, D.Curs, C.cSumma, D.KassID from KassAvCr C, KassData D where C.KassAvID=:AvID and D.ID=C.KassDtID into :DataID, :dDate, :dCurs, :cSumm, :KassID do begin aSumma = (aCurs-dCurs)*cSumm; if (:aSumma <> 0.0) then begin if (:Proc <> 0.0 and :Proc is not Null) then aSumma = :aSumma / 100.0 * :Proc; if (:Storno = 1) then aSumma = -:aSumma; AccnID = Gen_ID(AccnProv_ID,1); Insert into AccnProv(ID, OurOrgnID, DAT_, Document, Comment, Dt, Kt, Summa, cSumma, Curs, CurrTyp, dt3, kt3, dt7, kt7, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID) Values(:AccnID, :OurOrgnID, :aDate, :Nbr, :Comment, :Dt, :Kt, :aSumma, 0.0, 0.0, :CurrTyp, :dt3, :kt3, :dt7, :kt7, :DtPrt, :DtObj, :KtPrt, :KtObj, 62, :OperID, :ID); Insert into KassAvAcCr(ID, AvID, AccnID) values(Gen_ID(KassAvAcCr_ID, 1), :AvID, :AccnID); end end end^ ALTER PROCEDURE KASSAVLIST_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(KassAvList_ID,1); end^ ALTER PROCEDURE KASSDATA_DELACCNREC ( ID INTEGER) AS declare variable accnkey integer; declare variable accrkey integer; begin for select id,accnkey from kassaccr where kasskey=:id into :accrkey,:accnkey do begin delete from kassaccr where id=:accrkey; delete from accnprov where id=:accnkey; end end^ ALTER PROCEDURE KASSDATA_GENACCNREC ( ID INTEGER) AS declare variable dat_ date; declare variable Summa Double Precision; declare variable OperID integer; declare variable Oper integer; declare variable PrsnID integer; declare variable OrgnID integer; declare variable comment varchar(255); declare variable opcomment varchar(255); declare variable accomment varchar(255); declare variable accnkey integer; declare variable acsumma Double Precision; declare variable dt varchar(5); declare variable kt varchar(5); declare variable sumtyp integer; declare variable username varchar(20); declare variable dt1 integer; declare variable kt1 integer; declare variable dt2 integer; declare variable kt2 integer; declare variable dt3 integer; declare variable kt3 integer; declare variable dt4 integer; declare variable kt4 integer; declare variable dt5 integer; declare variable kt5 integer; declare variable dt6 integer; declare variable kt6 integer; declare variable dt7 integer; declare variable kt7 integer; declare variable d1 integer; declare variable k1 integer; declare variable d2 integer; declare variable k2 integer; declare variable d3 integer; declare variable k3 integer; declare variable d4 integer; declare variable k4 integer; declare variable d5 integer; declare variable k5 integer; declare variable d6 integer; declare variable k6 integer; declare variable d7 integer; declare variable k7 integer; Declare Variable Storno Integer; Declare Variable Nbr varchar(20); Declare Variable DtPrt integer; Declare Variable DtObj integer; Declare Variable KtPrt integer; Declare Variable KtObj integer; Declare Variable Proc Double Precision; Declare Variable ProcNDS Double Precision; declare variable ANID Integer; declare variable Inp Integer; declare variable KassID1 Integer; declare variable KassID2 Integer; declare variable KassDataKey Integer; declare variable CurrTyp Integer; declare variable Curs Double precision; declare variable bCurs Double Precision; declare variable aCurs Double Precision; declare variable CSumma Double precision; declare variable CaSumma Double precision; declare variable DtGr0 integer; declare variable DtGr1 Integer; declare variable KtGr0 integer; declare variable KtGr1 Integer; declare variable OurOrgnID Integer; declare variable dt8 integer; Declare Variable dt9 integer; declare variable kt8 integer; Declare Variable kt9 Integer; declare variable VL1 integer; Declare Variable VL2 Integer; begin for select dat_,summa,comment,operid,username,prsnid, bCurs, orgnid,Nbr,ANID,KassID,KassDataKey, CurrTyp, Curs, CSumma, VL1, VL2 from KassData where id=:id into :dat_,:summa,:comment,:operid, :username,:prsnid, :bCurs, :orgnid,:Nbr,:ANID,:KassID1,:KassDataKey,:CurrTyp,:Curs,:cSumma, :VL1, :VL2 do begin KassID2 = Null; Select KassID from KassData where ID=:KassDataKey into :KassID2; Select OurOrgnID from KassList where ID=:KassID1 into :OurOrgnID; select cast(VAL as Double Precision) from SysConst where OurOrgnID=:OurOrgnID and name='ProcNDS' into :ProcNDS; if(:ProcNDS is Null) then ProcNDS = 20.0; Inp = 1; /* Inp */ if (:summa < 0.0) then begin summa=-:summa; cSumma=-:cSumma; Inp=0; /* Out */ end CaSumma = :cSumma; if ( Inp=1) then Oper = 60; else Oper = 61; for select dt,kt,sumtyp,comment,Storno,Oper,DtPrt,DtObj,KtPrt,KtObj,Proc from StorAccn where OperID = :OperID and Oper = :Oper into :Dt,:Kt,:sumtyp,:opcomment,:Storno,:Oper,:DtPrt,:DtObj,:KtPrt,:KtObj,:Proc do begin acSumma = 0.0; aCurs = :Curs; if (:SumTyp = 0) then acsumma = :summa; if (:SumTyp = 1) then acsumma = :summa*:ProcNDS/(100.0+:ProcNDS); if (:SumTyp = 2) then acsumma = :summa-(:summa*:ProcNDS/(100.0+:ProcNDS)); if (:SumTyp = 3) then begin acSumma = :cSumma * :bCurs; acSumma = Cast(acSumma * 100.0 as integer) / 100.0; /* Round */ aCurs = :bCurs; end if (:SumTyp = 4) then begin /* бирж. курс. разница */ acSumma = :cSumma * (:bCurs-:Curs); aCurs = :bCurs; end dt3=null; kt3=null; dt1=null; kt1=null; dt2=null; kt2=null; dt4=null; kt4=null; dt5=null; kt5=null; dt6=null; kt6=null; dt7=null; kt7=null; DtGr0 = Null; DtGr1 = Null; KtGr0 = Null; KtGr1 = Null; select a1,a2,a3,a4,a5,a6,a7, Group0, Group1, a8, a9 from accnplan where accn=:dt into :d1,:d2,:d3,:d4,:d5,:d6,:d7, :dtGr0, :DtGr1, :dt8, :dt9; if(:d1=1) then dt1=:OrgnID; if(:d3=1) then dt3=:PrsnID; if(:d1=1) then begin if (Dt1 is null) then dt1=:ANID; end else if(:d3=1) then begin if (dt3 is null) then dt3=:ANID; end else if(:d2=1) then dt2=:ANID; else if(:d4=1) then dt4=:ANID; else if(:d5=1) then dt5=:ANID; else if(:d6=1) then dt6=:ANID; else if(:d7=1) then begin /* аналитика по кассам */ if (:Inp=1) then begin dt7=:KassID1; end if (:Inp=0) then begin dt7=:KassID2; if (:dt7 is null) then dt7 = ANID; -- dt7=:KassID1; end end else if (:DtGr0 <> 0 and :DtGr0 is not Null and DtPrt is Null) then DtPrt = :AnID; else if (:DtGr1 <> 0 and :DtGr1 is not Null and DtObj is Null) then DtObj = :AnID; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; select a1,a2,a3,a4,a5,a6,a7, Group0, Group1, a8, a9 from AccnPlan where accn=:kt into :k1,:k2,:k3,:k4,:k5,:k6,:k7,:KtGr0, :KtGr1, :kt8, :kt9; if(:k1=1) then kt1=:OrgnID; if(:k3=1) then kt3=:prsnid; if(:k1=1) then begin if (kt1 is Null) then kt1=:ANID; end else if(:k3=1) then begin if (kt3 is Null) then kt3=:ANID; end else if(:k2=1) then kt2=:ANID; else if(:k4=1) then kt4=:ANID; else if(:k5=1) then kt5=:ANID; else if(:k6=1) then kt6=:ANID; else if(:k7=1) then begin /* аналитика по кассам */ if (:Inp=1) then begin kt7=:KassID2; if(:kt7 is null) then kt7 = :ANID; -- kt7=:KassID1; end if (:Inp=0) then kt7=:KassID1; end else if (:KtGr0 <> 0 and KtGr0 is not Null and KtPrt is Null) then KtPrt = :AnID; else if (:KtGr1 <> 0 and :KtGr1 is not Null and KtObj is Null) then KtObj = :AnID; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if (:acSumma <> 0.0) then begin if (:SumTyp=4) then CaSumma = 0.0; if(:Storno is Not Null and :Storno <> 0) then AcSumma=-:AcSumma; if(:Proc is not Null and :Proc <> 0.0) then AcSumma=:AcSumma / 100.0 * :Proc; acComment = :Comment; if(:acComment='') then acComment=:opComment; accnkey=Gen_ID(AccnProv_ID, 1); insert into AccnProv(id,OurOrgnID,Dat_,Dt,Kt,Summa,Comment, UserName, CurrTyp, Curs, CSumma, dt1,dt2,dt3,dt4,dt5,dt6,dt7, dt8, dt9, kt1,kt2,kt3,kt4,kt5,kt6,kt7, kt8, kt9, Document,DtPrt,DtObj,KtPrt,KtObj, Oper,OperID,DocID) values(:accnkey,:OurOrgnID,:dat_,:dt,:kt,:acsumma,:accomment, :username, :CurrTyp, :aCurs, :CaSumma, :dt1,:dt2,:dt3,:dt4,:dt5,:dt6,:dt7, :dt8, :dt9, :kt1,:kt2,:kt3,:kt4,:kt5,:kt6,:kt7, :kt8, :kt9, :Nbr,:DtPrt,:DtObj,:KtPrt,:KtObj, :Oper,:OperID,:ID); insert into kassaccr(ID, KassKey, AccnKey) values (gen_id(kassaccr_id,1),:ID, :AccnKey); end end end end^ ALTER PROCEDURE KASSDATA_GENSALEDT ( ID INTEGER) RETURNS ( SALEID INTEGER) AS begin suspend; end^ ALTER PROCEDURE KASSDATA_GENSALEKT ( ID INTEGER) RETURNS ( SALEID INTEGER) AS begin suspend; end^ ALTER PROCEDURE KASSDATA_MAKEAO ( ID INTEGER) RETURNS ( AVID INTEGER) AS declare variable Typ integer; declare variable KassDataID integer; declare variable OurOrgnID integer; declare variable MakeAObyRKO integer; declare variable DAT_ TimeStamp; declare variable Nbr varchar(20); declare variable UserName varchar(20); declare variable PrsnID integer; declare variable AvTyp integer; declare variable Summa double precision; declare variable Comment varchar(255); begin KassDataID = Null; AVID = Null; select KD.ID, KD.Typ, KL.OurOrgnID, KD.AVID, KD.DAT_, KD.Nbr, KD.UserName, KD.PrsnID, -KD.Summa from KassData KD left join KassList KL on KL.ID = KD.KassID where KD.ID = :ID and KD.Summa < 0.0 and KD.Typ in (1, 2) into :KassDataID, :Typ, :OurOrgnID, :AVID, :DAT_, :Nbr, :UserName, :PrsnID, :Summa; if (:KassDataID is Null) then exit; select Val from SysConst where Name = 'MakeAObyRKO' and OurOrgnID = :OurOrgnID into :MakeAObyRKO; if (:MakeAObyRKO <> 1) then exit; AVID = Gen_ID(KassAvList_ID, 1); AvTyp = 0; if (:Typ = 1) then begin AvTyp = 0; Comment = 'Хоз. нужды'; end if (:Typ = 2) then begin AvTyp = 1; Comment = 'Командировки'; end insert into KassAVList(ID, OurOrgnID, DAT_, Nbr, UserName, PrsnID, Typ, Summa, ESumma, Comment) values(:AVID, :OurOrgnID, :DAT_, :Nbr, :UserName, :PrsnID, :AvTyp, :Summa, -:Summa, :Comment); insert into KassAvData(AVID, DAT_, Comment, Summa, Nds) values(:AVID, :DAT_, '...', :Summa, 0.0); suspend; end^ ALTER PROCEDURE KASSDATA_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(kassdata_id,1); end^ ALTER PROCEDURE KASSDATA_RENBR ( ID INTEGER) AS declare variable iNbr Integer; declare variable Summa Double Precision; declare variable KassID integer; declare variable DID integer; declare variable DAT_ Date; declare variable Typ Integer; begin select KassID, DAT_, Nbr, Summa from KassData where ID=:ID into :KassID, :DAT_, :iNbr, :Summa; if (:Summa > 0) then begin for Select 0 TYP, ID from KassData where KassID=:KassID and DAT_=:DAT_ and Summa > 0 and ID > :ID Union All Select 1 TYP, ID from KassData where KassID=:KassID and DAT_>:DAT_ and Summa > 0 Order By 1, 2 into :Typ, :DID do begin iNbr = :iNbr + 1; Update KassData set Nbr=:iNbr where ID=:DID; end end if (:Summa < 0) then begin for Select 0 TYP, ID from KassData where KassID=:KassID and DAT_=:DAT_ and Summa < 0 and ID > :ID Union All Select 1 TYP, ID from KassData where KassID=:KassID and DAT_>:DAT_ and Summa < 0 Order By 1, 2 into :Typ, :DID do begin iNbr = :iNbr + 1; Update KassData set Nbr=:iNbr where ID=:DID; end end end^ ALTER PROCEDURE KASSDAYS_NEWDAY ( DAT TIMESTAMP, KASSID INTEGER) AS DECLARE VARIABLE CDAT DATE; DECLARE VARIABLE SUMMA DOUBLE PRECISION; DECLARE VARIABLE SUMM DOUBLE PRECISION; DECLARE VARIABLE CSUMM DOUBLE PRECISION; DECLARE VARIABLE CSUMMA DOUBLE PRECISION; begin for select dat_ from kassdays where dat_ = :dat and kassid = :kassid into :cdat do if (:cdat is not null) then exit; summa = 0.0; cSumma = 0.0; for select max(dat_) from kassdays where dat_ < :dat and kassid=:kassid into :cdat do if (:cdat is not null) then select summa, cSumma from kassdays where dat_= :cdat and kassid=:kassid into :summa, :cSumma; if (:cdat is null) then for select min(dat_) from kassdays where dat_ > :dat and kassid=:kassid into :cdat do if (:cdat is not null) then begin for select summa, cSumma from kassdays where dat_=:cdat and kassid=:kassid into :summa,:cSumma do for select sum(summa),Sum(cSumma) from kassdata where dat_=:cdat and kassid=:kassid into :summ,:cSumm do if(:summ is null) then summ=0.0; if(:cSumm is null) then cSumm=0.0; summa = :summa+:summ; cSumma = :cSumma+:cSumm; end insert into kassdays(dat_, summa, summ, cSumma, kassid) values(:dat, :summa, 0.0, :cSumma, :kassid); end^ ALTER PROCEDURE KASSLIST_NEWID RETURNS ( ID INTEGER) AS begin id=gen_id(kasslist_id,1); end^ ALTER PROCEDURE LEV_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(lev_id,1); end^ ALTER PROCEDURE LEV_PUTGET ( GR INTEGER, NAME VARCHAR(40)) RETURNS ( ID INTEGER) AS begin id = 0; if (:gr=0) then exit; for select id from lev where owner = :gr and name = :name into :id do id=:id; if (id = 0) then begin id = gen_ID(lev_id,1); insert into lev(id,grou_,name,owner) values(:id,1,:name,:gr); end end^ ALTER PROCEDURE LIST_ACOPER_TYPE RETURNS ( ID INTEGER, NAME VARCHAR(80)) AS begin id = 0; name = 'Оприходование Товара'; suspend; id = 1; name = 'Возврат товара Покупателем'; suspend; id = 2; name = 'Реализация товара'; suspend; id = 3; name = 'Списание ОС'; suspend; id = 4; name = 'Списание МБП'; suspend; id = 5; name = 'Списание брака'; suspend; id = 6; name = 'Дебиторы: Платежные Документы'; suspend; id = 9; name = 'Конфигурируемые операции списания по складу'; suspend; id = 10; name = 'Кредиторы: Платежные Документы'; suspend; id = 11; name = 'Внутренняя передача'; suspend; id = 12; name = 'Оприходование изделий из Производства'; suspend; id = 13; name = 'Возврат товара Поставщику'; suspend; id = 14; name = 'Переоценка товара'; suspend; id = 15; name = 'Списание Материалов и Комплектующих'; suspend; id = 16; name = 'Оприходование Импорта'; suspend; id = 17; name = 'Реализация на Экспорт'; suspend; id = 30; name = 'ОФ: Введение в эксплуатацию'; suspend; id = 31; name = 'ОФ: Списание/выбытие'; suspend; id = 32; name = 'ОФ: Начисление Амортизации'; suspend; id = 33; name = 'ОФ: изменение стоимости'; suspend; id = 40; name = 'Кредиторы: Акты на прием услуг/работ'; suspend; id = 41; name = 'Дебиторы: Акты на оказание услуг/работ'; suspend; id = 50; name = 'Ввод в эксплуатацию МБП'; suspend; id = 51; name = 'Внутренняя передача МБП'; suspend; id = 52; name = 'Списание/выбытие МБП'; suspend; id = 53; name = 'Переоценка МБП'; suspend; id = 60; name = 'Касса: Приходные кассовые Ордера'; suspend; id = 61; name = 'Касса: Расходные кассовые Ордера'; suspend; id = 62; name = 'Касса: Авансовые Отчеты'; suspend; id = 70; name = 'Начисление заработной платы'; suspend; id = 71; name = 'Выплата заработной платы'; suspend; id = 80; name = 'Распределение накладных расходов (производство)'; suspend; id = 90; name = 'Векселя'; suspend; id = 100;name = 'Движение валюты - курсовые разницы'; suspend; end^ ALTER PROCEDURE MAINAM_NL_UPDATE AS declare variable ID integer; declare variable MainMeanID Integer; declare variable GrpID integer; declare variable GrpTyp integer; declare variable MID integer; declare variable SID integer; declare variable SID1 integer; declare variable Typ Integer; begin ID = Null; select MIN(ID) from mainamslv where TYP is Null into :ID; if (:ID is Null) then exit; select ID from MainAmSlv S where S.grpid is Null into :ID; if (ID is not Null) then begin -- есть ОС с неуказанной группой амортизации в расчете for select S.ID, S.MainMeanID, M.ID, M.GrpTyp from MainAmSlv S Join MainAmMst M on M.ID=S.MstID where S.GrpID is Null into :SID, :MainMeanID, :MID, :GrpTyp do begin select Min(S.ID) from MainAmSlv S Join MainAmMst M ON M.ID=S.MSTID where S.MainMeanID = :MainMeanID and M.GrpTyp=:GrpTyp and GrpID is not Null into :SID1; select GrpID from MainAmSlv where ID=:SID1 into :GrpID; for select S.ID from MainAmSlv S join MainAmMst M on M.ID=S.MstID where S.GrpID is Null and S.MainMeanID=:MainMeanID and GrpTyp=:GrpTyp into :SID1 do begin update MainAmSlv set GrpID=:GrpID where ID=:SID1; end end end for select S.ID, G.TYP from MainAmSlv S join MainGrp G on G.ID=S.GRPID where S.TYP is Null into :SID1, :Typ do begin update MainAmSlv Set TYP=:TYP where ID=:SID1; end end^ ALTER PROCEDURE MAINAM_NLPRICE_UPDATE ( CURORGNID INTEGER, ADATE TIMESTAMP) AS declare variable MainID integer; declare variable bPrice0 double precision; declare variable bPrice1 double precision; declare variable Price double precision; declare variable aSumma0 double precision; declare variable aSumma1 double precision; declare variable pSumma0 double precision; declare variable pSumma1 double precision; declare variable amSumma0 double precision; declare variable amSumma1 double precision; declare variable HasCalc integer; declare variable Delta double precision; begin if (:aDate is Null) then aDate = '01.04.2011'; select first 1 M.ID from MainMean M join MainPrice P on P.MainID=M.ID where M.OurOrgnID = :CurorgnID and P.DAT_ = :aDate into :HasCalc; if (:hascalc is not Null) then exit; for select ID, Price, aSumma, aSumma1 from MainMean M where OurOrgnID=:CurOrgnID and Out_Date is Null and GroupID is not Null into :MainID, :Price, :aSumma0, :aSumma1 do begin -- изм. ст-ти - аморт. select CoalEsce(Sum(P.Summa), 0.0) from MainPrice P where P.mainid = :MainID and P.DAT_ < :aDate and CoalEsce(P.Excl0, 0) = 0 into :pSumma0; -- начисл. амортизация select CoalEsce(Sum(S.Summa), 0.0) from MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=0 and M1.DAT_ < :aDate into :amSumma0; -- изм. ст-ти - износ select CoalEsce(Sum(P.Summa), 0.0) from MainPrice P where P.mainid = :MainID and P.DAT_ < :aDate and CoalEsce(P.Excl1, 0) = 0 into :pSumma1; -- начисл. износ select CoalEsce(Sum(S.Summa), 0.0) from MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=1 and M1.DAT_ < :aDate into :amSumma1; bPrice0 = :Price - :aSumma0 + :pSumma0 - :amSumma0; bPrice1 = :Price - :aSumma1 + :pSumma1 - :amSumma1; Delta = :bPrice1 - :bPrice0; if (Abs(:Delta) < 0.005) then Delta = 0.0; if (:Delta <> 0.0) then begin insert into MainPrice (Dat_, Nbr, MainID, PriceOld, PriceNew, Summa, Excl0, Excl1, DelPart, Comment, System_Flag) values(:aDate, 'б/н', :MainID, :bPrice0, :bPrice0 + :Delta, :Delta, 0, 1, 0, 'Обновление балансовой стоимости в налоговом учете', 3); end end end^ ALTER PROCEDURE MAINAMMST_DELACCNREC ( ID INTEGER) AS Declare Variable CrKey integer; Declare Variable AccnKey integer; begin for select id, accnkey from mainamcr where MainKey=:ID into :CrKey, :AccnKey do begin delete from mainamcr where ID=:CrKey; delete from AccnProv where ID=:AccnKey; end end^ ALTER PROCEDURE MAINAMMST_GENACCNREC ( ID INTEGER) AS declare variable ACCNKEY integer; declare variable OPERID integer; declare variable GROUPID integer; declare variable DT varchar(5); declare variable KT varchar(5); declare variable SUMMA double precision; declare variable summa1 double precision; declare variable comment varchar(255); declare variable DAT_ date; declare variable USERNAME varchar(20); declare variable NBR varchar(20); declare variable DTPRT integer; declare variable DTOBJ integer; declare variable KTPRT integer; declare variable KTOBJ integer; declare variable OPER integer; declare variable GRPTYP integer; declare variable CurORGNID integer; declare variable VL1 integer; declare variable VL2 integer; declare variable D1 integer; declare variable K1 integer; declare variable D8 integer; declare variable D9 integer; declare variable K8 integer; declare variable K9 integer; declare variable DT1 integer; declare variable KT1 integer; declare variable DT8 integer; declare variable DT9 integer; declare variable KT8 integer; declare variable KT9 integer; declare variable PROC double precision; declare variable Storno integer; begin for Select OperID,Dat_,UserName,Nbr, GrpTyp, OurOrgnID from MainAmMst where ID=:ID into :OperID,:Dat_,:UserName,:Nbr, :GrpTyp, :CurOrgnID do begin if (OperID = 0 or OperID is null) then exit; select VL1, VL2 from AcOprLst where ID = :OperID into :VL1, :VL2; -- амортизация if (:GrpTyp = 0) then for select S.GrpID, sum(s.summa) from mainamslv s, mainmean m, maingrp g where s.MstID=:ID and m.id=s.mainmeanid and g.id=m.groupid Group By S.GrpID into :GroupID, :Summa do begin for select dt,kt,Comment,dtprt,dtobj,ktprt,ktobj,Oper, proc, CoalEsce(Storno, 0) from storaccn where OperID=:OperID and RealTyp=:GroupID into :Dt,:Kt,:Comment,:DtPrt,:DtObj,:KtPrt,:KtObj,:Oper, :proc, :Storno do begin D1 = Null; D8 = Null; D9 = Null; K1 = Null; K8 = Null; k9 = Null; select A1, A8, A9 from AccnPlan where Accn = :Dt into :D1, :D8, :D9; select A1, A8, A9 from AccnPlan where Accn = :Kt into :K1, :K8, :K9; Dt1 = Null; Dt8 = Null; Dt9 = Null; Kt1 = Null; kt8 = Null; Kt9 = Null; if (:D1=1) then Dt1 = :CurOrgnID; if (:K1=1) then Kt1 = :CurOrgnID; if (:D8 is not Null) then Dt8 = :VL1; if (:K8 is not Null) then Kt8 = :VL1; if (:D9 is not Null) then Dt9 = :VL2; if (:K9 is not Null) then Kt9 = :VL2; Summa1 = :summa; if(:Proc is Not Null and :Proc <> 0.0) then Summa1 = :summa * :Proc / 100.00; if (:Storno = 1) then Summa1 = -:Summa1; if (:Summa1 <> 0) then begin AccnKey = Gen_ID(AccnProv_ID, 1); insert into AccnProv(id,OurOrgnID,dat_,dt,kt,summa,comment,UserName, Document,DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID, Dt1, Kt1, dt8, dt9, kt8, kt9) values (:AccnKey,:CurOrgnID,:Dat_,:Dt,:Kt,:Summa1,:Comment,:UserName, :Nbr,:DtPrt,:DtObj,:KtPrt,:KtObj, :Oper,:OperID,:ID, :Dt1, :Kt1, :dt8, :dt9, :kt8, :kt9); insert into MainAmCr(id, MainKey, AccnKey) values (Gen_ID(MainAmCr_ID,1),:ID,:AccnKey); end end end -- износ if (:GrpTyp = 1) then for select S.GrpID, sum(s.summa) from mainamslv s, mainmean m, maingrp g where s.mstid=:ID and m.id=s.mainmeanid and g.id=m.GroupID1 Group By S.GrpID into :GroupID, :Summa do begin for select dt,kt,Comment,dtprt,dtobj,ktprt,ktobj,Oper, Proc, CoalEsce(Storno, 0) from storaccn where OperID=:OperID and RealTyp=:GroupID into :Dt,:Kt,:Comment,:DtPrt,:DtObj,:KtPrt,:KtObj,:Oper, :Proc, :Storno do begin D1 = Null; D8 = Null; D9 = Null; K1 = Null; K8 = Null; k9 = Null; select A1, A8, A9 from AccnPlan where Accn = :Dt into :D1, :D8, :D9; select A1, A8, A9 from AccnPlan where Accn = :Kt into :K1, :K8, :K9; Dt1 = Null; Dt8 = Null; Dt9 = Null; Kt1 = Null; kt8 = Null; Kt9 = Null; if (:D1=1) then Dt1 = :CurOrgnID; if (:K1=1) then Kt1 = :CurOrgnID; if (:D8 is not Null) then Dt8 = :VL1; if (:K8 is not Null) then Kt8 = :VL1; if (:D9 is not Null) then Dt9 = :VL2; if (:K9 is not Null) then Kt9 = :VL2; Summa1 = summa; if(:Proc is Not Null and :Proc <> 0.0) then Summa1 = :summa * :Proc / 100.00; if (:Storno = 1) then Summa1 = -:Summa1; if (:Summa1 <> 0) then begin AccnKey = Gen_ID(AccnProv_ID, 1); insert into AccnProv(id,OurOrgnID,dat_,dt,kt,summa,comment,UserName, Document,DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID, Dt1, Kt1, dt8, dt9, kt8, kt9) values (:AccnKey,:CurOrgnID,:Dat_,:Dt,:Kt,:Summa1,:Comment,:UserName, :Nbr,:DtPrt,:DtObj,:KtPrt,:KtObj, :Oper,:OperID,:ID, :Dt1, :Kt1, :dt8, :dt9, :kt8, :kt9); insert into MainAmCr(id, MainKey, AccnKey) values (Gen_ID(MainAmCr_ID,1),:ID,:AccnKey); end end end end end^ ALTER PROCEDURE MAINAMMST_NEWID RETURNS ( ID INTEGER) AS begin id= gen_id(mainammst_id,1); end^ ALTER PROCEDURE MAINAMSLV_NEWID RETURNS ( ID INTEGER) AS begin id= gen_id(mainamslv_id,1); end^ ALTER PROCEDURE MAINCHNG_DELACCNREC ( ID INTEGER) AS Declare Variable ChngKey integer; Declare Variable AccnKey integer; begin for select ID, AccnKey from MainCrCh where ChngKey=:ID into :ChngKey, :AccnKey do begin Delete From MainCrCh where ID=:ChngKey; Delete From AccnProv where ID=:AccnKey; end end^ ALTER PROCEDURE MAINCHNG_GENACCNREC ( ID INTEGER) AS declare variable Summa double precision; declare variable Summa0 double precision; declare variable Summa1 double precision; -- начальная амортизация declare variable AmSumma0 double precision; -- начальный износ declare variable AmSumma1 double precision; declare variable dat_ date; declare variable nbr varchar(20); declare variable Comment varchar(255); declare variable OperID integer; Declare Variable Dt Varchar(5); Declare Variable Kt Varchar(5); Declare Variable AccnKey integer; Declare Variable UserName Varchar(20); Declare Variable DtPrt integer; Declare Variable DtObj integer; Declare Variable KtPrt integer; Declare Variable KtObj integer; Declare Variable Oper Integer; Declare Variable Storno Integer; Declare Variable FinRes Integer; Declare Variable Proc Double Precision; Declare Variable Accn Varchar(5); Declare Variable Summ Double Precision; Declare Variable SumTyp Integer; Declare Variable Price Double Precision; Declare Variable cSumma0 Double Precision; Declare Variable cSumma1 Double Precision; Declare Variable aSumma0 Double Precision; Declare Variable aSumma1 Double Precision; Declare Variable MainID Integer; declare variable CurOrgnID integer; /* признаки аналитики по подразделениям */ Declare Variable d1 integer; declare Variable k1 integer; Declare Variable dt1 integer; Declare Variable kt1 integer; Declare Variable d5 integer; declare Variable k5 integer; Declare Variable dt5 integer; Declare Variable kt5 integer; Declare Variable PodrID integer; declare variable Excl0 integer; declare variable Excl1 integer; declare variable Period0 integer; declare variable Period1 integer; declare variable OutDate TimeStamp; declare variable AmDate0 TimeStamp; declare variable AmDate1 TimeStamp; declare variable AmDatePrev0 TimeStamp; declare variable AmDatePrev1 TimeStamp; declare variable cSumm0 double precision; declare variable cSumm1 double precision; begin for select MP.Dat_, MP.Nbr, MP.Summa, MP.OperID, MP.Comment, MP.UserName, MP.MainID, MP.Excl0, MP.Excl1, G0.Period, G1.Period, M.Out_Date, M.Price, M.OurOrgnID, M.ASumma, M.Asumma1 from MainPrice MP join MainMean M on M.ID = MP.MainID left join MainGrp G0 on G0.ID = M.GroupID left join MainGrp G1 on G1.ID = M.GroupID1 where MP.ID=:ID into :Dat_, :Nbr, :Summa, :OperID, :Comment, :UserName, :MainID, :Excl0, :Excl1, :Period0, :Period1, :OutDate, :Price, :CurOrgnID, :AmSumma0, :AmSumma1 do begin Summa0 = 0.0; Summa1 = 0.0; if (:Excl0 = 0 or :Excl0 is Null) then Summa0 = :Summa; if (:Excl1 = 0 or :Excl1 is Null) then Summa1 = :Summa; -- Сумма Амортизации AmDate0 = :DAT_; if (:Period0 = 0) then Select xDate from f_MonthLastDay(:DAT_) into :AmDate0; if (:Period0 = 1) then Select xDate from f_Quarter_End(:DAT_) into :AmDate0; if (:Period0 = 2) then Select xDate from f_Year_End(:DAT_) into :AmDate0; if (:Period0 = 0) then begin Select xDate from f_monthfirstday(:dat_) into :AmDatePrev0; Select xDate from f_MonthLastDay(:AmDatePrev0-1.0) into :AmDatePrev0; end if (:Period0 = 1) then begin Select xDate from f_Quarter_Beg(:DAT_) into :AmDatePrev0; Select xDate from f_Quarter_End(:AmDatePrev0-1.0) into :AmDatePrev0; end if (:Period0 = 2) then begin Select xDate from f_Year_Beg(:DAT_) into :AmDatePrev0; Select xDate from f_Year_End(:AmDatePrev0-1.0) into :AmDatePrev0; end Select Sum(s.Summa) from MainAmSlv s, MainAmMst M where s.MainMeanID = :MainID and M.ID=S.MstID and M.DAT_ <= :AmDate0 and (M.GrpTyp=0 or M.GrpTyp is Null) into :aSumma0; if (:aSumma0 is null) then aSumma0 = 0.0; -- Сумма Износа AmDate1 = :DAT_; if (:Period1 = 0) then Select xDate from f_MonthLastDay(:DAT_) into :AmDate1; if (:Period1 = 1) then Select xDate from f_Quarter_End(:DAT_) into :AmDate1; if (:Period1 = 2) then Select xDate from f_Year_End(:DAT_) into :AmDate1; if (:Period1 = 0) then begin Select xDate from f_monthfirstday(:dat_) into :AmDatePrev1; Select xDate from f_MonthLastDay(:AmDatePrev1-1.0) into :AmDatePrev1; end if (:Period1 = 1) then begin Select xDate from f_Quarter_Beg(:DAT_) into :AmDatePrev1; Select xDate from f_Quarter_End(:AmDatePrev1-1.0) into :AmDatePrev1; end if (:Period1 = 2) then begin Select xDate from f_Year_Beg(:DAT_) into :AmDatePrev1; Select xDate from f_Year_End(:AmDatePrev1-1.0) into :AmDatePrev1; end Select Sum(s.Summa) from MainAmSlv S, MainAmMst M where s.MainMeanID=:MainID and M.ID=S.MstID and M.DAT_ <= :AmDate1 and M.GrpTyp=1 into :aSumma1; if (:aSumma1 is null) then aSumma1 = 0.0; -- изменение стоимости (аморт.) Select Sum(MP.Summa) from MainPrice MP where MP.MainID=:MainID and (MP.Excl0 = 0 or MP.Excl0 is Null) and MP.DAT_ <= :DAT_ into :cSumma0; if (:cSumma0 is Null) then cSumma0 = 0.0; -- изменение стоимости (износ) Select Sum(MP.Summa) from MainPrice MP where MP.MainID=:MainID and (MP.Excl1 = 0 or MP.Excl1 is Null) and MP.DAT_ <= :DAT_ into :cSumma1; if (:cSumma1 is Null) then cSumma1 = 0.0; For Select Dt, Kt, DtPrt, Dtobj, KtPrt, KtObj, Oper, Storno, FinRes, Proc, SumTyp from StorAccn where OperID = :OperID into :Dt, :Kt, :DtPrt, :Dtobj, :KtPrt, :KtObj, :Oper, :Storno, :FinRes, :Proc, :SumTyp do begin D1 = Null; K1 = Null; Dt1 = Null; Kt1 = Null; D5 = Null; K5 = Null; Dt5 = Null; Kt5 = Null; PodrID = Null; Select A1, A5 from AccnPlan where Accn = :Dt into :D1, :D5; Select A1, A5 from AccnPlan where Accn = :Kt into :K1, :K5; if (:D5=1 or :K5=1) then Select PodrID from MainMean_PodrOnDate(:MainID, :DAT_) into :PodrID; if (:D1=1) then Dt1 = :CurOrgnID; if (:K1=1) then Kt1 = :CurOrgnID; if (:D5=1) then Dt5 = :PodrID; if (:K5=1) then Kt5 = :PodrID; if(:SumTyp = 0) then -- изменение стоимости (аморт.) Summ = :Summa0; if(:SumTyp = 1) then -- восстановительная стоимость (аморт.) Summ = :Price + :cSumma0; if(:SumTyp = 2) then begin -- балансовая стоимость (аморт.) -- изменение стоимости (аморт.) Select Sum(MP.Summa) from MainPrice MP where MP.MainID=:MainID and (MP.Excl0 = 0 or MP.Excl0 is Null) and MP.DAT_ <= :AmDatePrev0 into :cSumm0; if (:cSumm0 is Null) then cSumm0 = 0.0; Summ = :Price + :cSumm0 - :aSumma0 - :AmSumma0; end if(:SumTyp = 3) then -- сумма амортизации Summ = :aSumma0; if(:SumTyp = 4) then -- изменение стоимости (износ) Summ = :Summa1; if(:SumTyp = 5) then -- восстановительная стоимость (износ) Summ = :Price + :cSumma1; if (:SumTyp = 6) then begin -- балансовая стоимость (износ) -- изменение стоимости (износ) Select Sum(MP.Summa) from MainPrice MP where MP.MainID=:MainID and (MP.Excl1 = 0 or MP.Excl1 is Null) and MP.DAT_ <= :AmDatePrev1 into :cSumm1; if (:cSumm1 is Null) then cSumm1 = 0.0; Summ = :Price + :cSumm1 - :aSumma1 - :AmSumma1; end if (:SumTyp = 7) then -- сумма износа Summ = :aSumma1; if (:SumTyp = 8) then begin -- аморт. ликвидируемой части select CoalEsce(Summ0, 0.0) from MainPrice_CalcDelPart(:ID) into :Summ; end if (:SumTyp = 9) then begin -- износ ликвидируемой части select CoalEsce(Summ1, 0.0) from MainPrice_CalcDelPart(:ID) into :Summ; end if(:Proc is Not Null and :Proc <> 0.0) then Summ = :Summ * :Proc / 100.00; if(:FinRes = 0 and :Summ < 0.0) then Summ = 0.0; if(:FinRes = 2 and :Summ < 0.0) then begin Accn = :Dt; Dt = :Kt; Kt = :Accn; Summ = -:Summ; end if(:Storno is not Null and :Storno <> 0) then Summ = -:Summ; if(:Summ <> 0.0 and :Summ is Not Null) then begin AccnKey = Gen_ID(AccnProv_ID, 1); insert into AccnProv (ID, OurOrgnID, Dat_, Dt, Kt, Summa, Document, Comment, UserName, DtPrt, Dtobj, KtPrt, KtObj, Oper, OperID, DocID, Dt1, Kt1, Dt5, Kt5) Values(:AccnKey, :CurOrgnID, :Dat_, :Dt, :Kt, :Summ, :Nbr, :Comment, :UserName, :DtPrt, :Dtobj, :KtPrt, :KtObj, :Oper, :OperID, :ID, :Dt1, :Kt1, :Dt5, :Kt5); Insert into MainCrCh(AccnKey, ChngKey) values (:AccnKey, :ID); end end end end^ ALTER PROCEDURE MAINGRP_NEWID RETURNS ( ID INTEGER) AS begin id = Gen_ID(MainGrp_ID,1); end^ ALTER PROCEDURE MAINMEAN_AMMOVE ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( GRPID INTEGER, BSUMMA DOUBLE PRECISION, ESUMMA DOUBLE PRECISION, INPSUM1 DOUBLE PRECISION, INPSUM2 DOUBLE PRECISION, INPSUM3 DOUBLE PRECISION, CHGSUM1 DOUBLE PRECISION, CHGSUM2 DOUBLE PRECISION, CHGSUM3 DOUBLE PRECISION, OUTSUM1 DOUBLE PRECISION, OUTSUM2 DOUBLE PRECISION, OUTSUM3 DOUBLE PRECISION, AM_SUM DOUBLE PRECISION, BDATE1 TIMESTAMP, EDATE1 TIMESTAMP, BDATE2 TIMESTAMP, EDATE2 TIMESTAMP, BDATE3 TIMESTAMP, EDATE3 TIMESTAMP) AS declare variable S double precision; declare variable S1 double precision; declare variable MainID integer; begin select xDate from F_MonthFirstDay(:bDate) into :bDate1; select xDate from F_MonthLastDay(:bDate1) into :eDate1; bDate2 = :eDate1 + 1.0; select xDate from F_MonthLastDay(:bDate2) into :eDate2; bDate3 = :eDate2 + 1.0; select xDate from F_MonthLastDay(:bDate3) into :eDate3; bDate = :bDate1; eDate = :eDate3; for select ID from MainGrp where GrpTyp = 0 into :GrpID do begin -- амортизация select Sum(s.summa) from MainAmMst M, mainamslv s, mainmean mm where M.OurOrgnID = :OrgnID and M.DAT_ >= :bDate and M.DAT_ <= :eDate and m.grptyp = 0 and s.mstid = m.id and mm.id = s.mainmeanid and mm.groupid = :GrpID into :Am_Sum; -- изменение стоимости select Sum(P.summa) From mainmean M, MainPrice P where M.OurOrgnID = :OrgnID and P.mainid = M.ID and M.groupid = :GrpID and (P.Excl0 is Null or P.Excl0 = 0) and P.DAT_ >= :bDate1 and P.DAT_ <= :eDate1 into :ChgSum1; select Sum(P.summa) From mainmean M, MainPrice P where M.OurOrgnID = :OrgnID and P.mainid = M.ID and M.groupid = :GrpID and (P.Excl0 is Null or P.Excl0 = 0) and P.DAT_ >= :bDate2 and P.DAT_ <= :eDate2 into :ChgSum2; select Sum(P.summa) From mainmean M, MainPrice P where M.OurOrgnID = :OrgnID and P.mainid = M.ID and M.groupid = :GrpID and (P.Excl0 is Null or P.Excl0 = 0) and P.DAT_ >= :bDate3 and P.DAT_ <= :eDate3 into :ChgSum3; -- приход select Sum(M.Price-M.asumma) from MainMean M where M.OurOrgnID = :OrgnID and M.groupid = :GrpID and M.DAT_ >= :bDate1 and M.DAT_ <= :eDate1 into :InpSum1; select Sum(M.Price-M.asumma) from MainMean M where M.OurOrgnID = :OrgnID and M.groupid = :GrpID and M.DAT_ >= :bDate2 and M.DAT_ <= :eDate2 into :InpSum2; select Sum(M.Price-M.asumma) from MainMean M where M.OurOrgnID = :OrgnID and M.groupid = :GrpID and M.DAT_ >= :bDate3 and M.DAT_ <= :eDate3 into :InpSum3; -- выбытие OutSum1 = 0.0; for select M.ID, M.Price-M.asumma from MainMean M where M.OurOrgnID = :OrgnID and M.groupid = :GrpID and M.Out_Date >= :bDate1 and M.Out_Date <= :eDate1 into :MainID, :S do begin Select CoalEsce(Sum(S.Summa), 0.0) from MainAmMst M, MainAmSlv S where M.OurOrgnID = :OrgnID and M.DAT_ <= :eDate1 and M.GrpTyp = 0 and S.MstID = M.ID and S.mainmeanid = :MainID into :S1; OutSum1 = :OutSum1 + :S - :S1; Select CoalEsce(Sum(P.Summa), 0.0) from MainPrice P where P.mainid = :MainID and (P.Excl0 is Null or P.Excl0 = 0) and P.DAT_ <= :eDate1 into :S1; OutSum1 = :OutSum1 + :S1; end OutSum1 = -:OutSum1; OutSum2 = 0.0; for select M.ID, M.Price-M.asumma from MainMean M where M.OurOrgnID = :OrgnID and M.groupid = :GrpID and M.Out_Date >= :bDate2 and M.Out_Date <= :eDate2 into :MainID, :S do begin Select CoalEsce(Sum(S.Summa), 0.0) from MainAmMst M, MainAmSlv S where M.OurOrgnID = :OrgnID and M.DAT_ <= :eDate2 and M.GrpTyp = 0 and S.MstID = M.ID and S.mainmeanid = :MainID into :S1; OutSum2 = :OutSum2 + :S - :S1; Select CoalEsce(Sum(P.Summa), 0.0) from MainPrice P where P.mainid = :MainID and (P.Excl0 is Null or P.Excl0 = 0) and P.DAT_ <= :eDate2 into :S1; OutSum2 = :OutSum2 + :S1; end OutSum2 = -:OutSum2; OutSum3 = 0.0; for select M.ID, M.Price-M.asumma from MainMean M where M.OurOrgnID = :OrgnID and M.groupid = :GrpID and M.Out_Date >= :bDate3 and M.Out_Date <= :eDate3 into :MainID, :S do begin Select CoalEsce(Sum(S.Summa), 0.0) from MainAmMst M, MainAmSlv S where M.OurOrgnID = :OrgnID and M.DAT_ <= :eDate3 and M.GrpTyp = 0 and S.MstID = M.ID and S.mainmeanid = :MainID into :S1; OutSum3 = :OutSum3 + :S - :S1; Select CoalEsce(Sum(P.Summa), 0.0) from MainPrice P where P.mainid = :MainID and (P.Excl0 is Null or P.Excl0 = 0) and P.DAT_ <= :eDate3 into :S1; OutSum3 = :OutSum3 + :S1; end OutSum3 = -:OutSum3; -- остаток на начало bSumma = 0.0; for Select M.ID, M.Price-M.ASumma from MainMean M where M.OurOrgnID = :OrgnID and M.GroupID = :GrpID and M.DAT_ < :bDate and (M.Out_Date is Null or M.Out_Date >= :bDate) into :MainID, :S do begin bSumma = :bSumma + :S; Select CoalEsce(Sum(P.Summa), 0.0) from MainPrice P where P.MainID = :MainID and (P.Excl0 is Null or P.Excl0 = 0) and P.DAT_ < :bDate into :S1; bSumma = :bSumma + :S1; Select CoalEsce(Sum(S.Summa), 0.0) from MainAmMst M, MainAmSlv S where M.OurOrgnID = :OrgnID and M.DAT_ < :bDate and M.GrpTyp = 0 and S.MstID = M.ID and S.mainmeanid = :MainID into :S1; bSumma = :bSumma - :S1; end -- остаток на конец eSumma = 0.0; for Select M.ID, M.Price-M.ASumma from MainMean M where M.OurOrgnID = :OrgnID and M.GroupID = :GrpID and M.DAT_ <= :eDate and (M.Out_Date is Null or M.Out_Date > :eDate) into :MainID, :S do begin eSumma = :eSumma + :S; Select CoalEsce(Sum(P.Summa), 0.0) from MainPrice P where P.MainID = :MainID and (P.Excl0 is Null or P.Excl0 = 0) and P.DAT_ <= :eDate into :S1; eSumma = :eSumma + :S1; Select CoalEsce(Sum(S.Summa), 0.0) from MainAmMst M, MainAmSlv S where M.OurOrgnID = :OrgnID and M.DAT_ <= :eDate and M.GrpTyp = 0 and S.MstID = M.ID and S.mainmeanid = :MainID into :S1; eSumma = :eSumma - :S1; end if (:Am_Sum is Null) then Am_Sum = 0.0; if (:bSumma is Null) then bSumma = 0.0; if (:eSumma is Null) then eSumma = 0.0; if (:InpSum1 is Null) then InpSum1 = 0.0; if (:InpSum2 is Null) then InpSum2 = 0.0; if (:InpSum3 is Null) then InpSum3 = 0.0; if (:ChgSum1 is Null) then ChgSum1 = 0.0; if (:ChgSum2 is Null) then ChgSum2 = 0.0; if (:ChgSum3 is Null) then ChgSum3 = 0.0; if (:OutSum1 is Null) then OutSum1 = 0.0; if (:OutSum2 is Null) then OutSum2 = 0.0; if (:OutSum3 is Null) then OutSum3 = 0.0; suspend; end end^ ALTER PROCEDURE MAINMEAN_BYPERIOD ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER) AS begin for select MM.ID from MainMean MM where MM.OurOrgnID = :OrgnID and MM.DAT_ is not Null and (MM.DAT_ <= :eDate) and (MM.Out_Date is Null or MM.Out_Date >= :bDate) into :ID do begin suspend; end end^ ALTER PROCEDURE MAINMEAN_CALCAM ( ID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) AS DECLARE VARIABLE MAINID INTEGER; DECLARE VARIABLE DAT DATE; declare variable bpDate Date; DECLARE VARIABLE AMTYP INTEGER; DECLARE VARIABLE AMPERIOD INTEGER; DECLARE VARIABLE PERIOD INTEGER; DECLARE VARIABLE AmMult DOUBLE PRECISION; DECLARE VARIABLE bPrice DOUBLE PRECISION; DECLARE VARIABLE ASUMMA DOUBLE PRECISION; DECLARE VARIABLE GRPID INTEGER; DECLARE VARIABLE AmNorm DOUBLE PRECISION; declare variable OurOrgnID integer; declare variable M2 Integer; declare variable LPRICE double precision; begin for Select Dat_, OurOrgnID, Period from MainAmMst where ID=:ID into :Dat, :OurOrgnID, :AmPeriod do begin if (:AmPeriod=0) then Select xDate from f_MonthFirstDay(:Dat) into :bpDate; if (:AmPeriod=1) then Select xDate from f_Quarter_Beg(:Dat) into :bpDate; for Select ID from MainMean where OurOrgnID = :OurOrgnID and DAT_ < :bpDate into :MainID do begin Select M.GroupID, G.Typ, G.Mult from MainMean M, MainGrp G where M.ID=:MainID and G.ID=M.GroupID into :GrpID, :AmTyp, :AmMult; M2 = Null; LPRICE = Null; if (:AmTyp=0) then -- линейный метод (%) Select bPrice, aSumma, AmNorm from MainMean_ClcAm0(:MainID,0,:ID) into :bPrice, :aSumma, :AmNorm; if (:AmTyp=1) then -- метод уменьшающихся остатков Select bPrice, aSumma, AmNorm from MainMean_ClcAm1(:MainID,0,:ID) into :bPrice, :aSumma, :AmNorm; if (:AmTyp=2) then -- линейный (по сроку износа) Select bPrice, aSumma, AmNorm, M2, LPRICE from MainMean_ClcAm2(:MainID,0,:ID) into :bPrice, :aSumma, :AmNorm, :M2, :LPRICE; -- if (:bPrice <> 0) then begin if ((:bPrice <> 0 and :AmTyp in (0, 1)) or (:M2 > 0 and :AmTyp in (2))) then begin insert into mainamslv (id, MstID, MainMeanID, Typ, Price, summa, amnorm, mult, GrpID, M2, LPRICE) values (Gen_ID(MainAmSlv_ID, 1), :ID, :MainID, :AmTyp, :bPrice, :aSumma, :AmNorm, :AmMult, :GrpID, :M2, :LPRICE); end end end end^ ALTER PROCEDURE MAINMEAN_CALCAM00 ( ID INTEGER) AS DECLARE VARIABLE MAINID INTEGER; DECLARE VARIABLE DAT DATE; declare variable bpDate Date; DECLARE VARIABLE AMTYP INTEGER; DECLARE VARIABLE AMPERIOD INTEGER; DECLARE VARIABLE PERIOD INTEGER; DECLARE VARIABLE AmMult DOUBLE PRECISION; DECLARE VARIABLE bPrice DOUBLE PRECISION; DECLARE VARIABLE ASUMMA DOUBLE PRECISION; DECLARE VARIABLE GRPID INTEGER; DECLARE VARIABLE AmNorm DOUBLE PRECISION; declare variable OurOrgnID integer; declare variable M2 Integer; declare variable LPRICE double precision; begin for Select Dat_, OurOrgnID, Period from MainAmMst where ID=:ID into :Dat, :OurOrgnID, :AmPeriod do begin if (:AmPeriod=0) then Select xDate from f_MonthFirstDay(:Dat) into :bpDate; if (:AmPeriod=1) then Select xDate from f_Quarter_Beg(:Dat) into :bpDate; for select m.id from mainmean m left join mainmean_clcam2(m.id, 0, :ID) c on 0=0 where not exists (select id from mainamslv s where s.mainmeanid = m.id and s.mstid = :ID) and c.m2 >0 and c.bprice = 0.0 and OurOrgnID = :OurOrgnID and DAT_ < :bpDate into :MainID do begin Select M.GroupID, G.Typ, G.Mult from MainMean M, MainGrp G where M.ID=:MainID and G.ID=M.GroupID into :GrpID, :AmTyp, :AmMult; M2 = Null; LPRICE = Null; if (:AmTyp=0) then -- линейный метод (%) Select bPrice, aSumma, AmNorm from MainMean_ClcAm0(:MainID,0,:ID) into :bPrice, :aSumma, :AmNorm; if (:AmTyp=1) then -- метод уменьшающихся остатков Select bPrice, aSumma, AmNorm from MainMean_ClcAm1(:MainID,0,:ID) into :bPrice, :aSumma, :AmNorm; if (:AmTyp=2) then -- линейный (по сроку износа) Select bPrice, aSumma, AmNorm, M2, LPRICE from MainMean_ClcAm2(:MainID,0,:ID) into :bPrice, :aSumma, :AmNorm, :M2, :LPRICE; -- if (:bPrice <> 0) then begin if ((:bPrice <> 0 and :AmTyp in (0, 1)) or (:M2 > 0 and :AmTyp in (2))) then begin insert into mainamslv (id, MstID, MainMeanID, Typ, Price, summa, amnorm, mult, GrpID, M2, LPRICE) values (Gen_ID(MainAmSlv_ID, 1), :ID, :MainID, :AmTyp, :bPrice, :aSumma, :AmNorm, :AmMult, :GrpID, :M2, :LPRICE); end end end end^ ALTER PROCEDURE MAINMEAN_CALCAM1 ( ID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) AS DECLARE VARIABLE MAINID INTEGER; DECLARE VARIABLE DAT DATE; DECLARE VARIABLE INPDATE DATE; DECLARE VARIABLE OUTDATE DATE; DECLARE VARIABLE PRICE DOUBLE PRECISION; DECLARE VARIABLE RPRICE DOUBLE PRECISION; DECLARE VARIABLE AMNORM DOUBLE PRECISION; DECLARE VARIABLE AMMULT DOUBLE PRECISION; DECLARE VARIABLE AMTYP INTEGER; DECLARE VARIABLE AMPERIOD INTEGER; DECLARE VARIABLE PERIOD INTEGER; DECLARE VARIABLE BPREV DOUBLE PRECISION; DECLARE VARIABLE APREV DOUBLE PRECISION; DECLARE VARIABLE IPREV DOUBLE PRECISION; DECLARE VARIABLE OPREV DOUBLE PRECISION; DECLARE VARIABLE CSUMMA DOUBLE PRECISION; DECLARE VARIABLE BPRICE DOUBLE PRECISION; DECLARE VARIABLE ASUMMA DOUBLE PRECISION; DECLARE VARIABLE AMCLOSED INTEGER; DECLARE VARIABLE AASUMMA DOUBLE PRECISION; DECLARE VARIABLE CASUMMA DOUBLE PRECISION; DECLARE VARIABLE EPRICE DOUBLE PRECISION; declare variable GrpID integer; DECLARE VARIABLE AmSumma DOUBLE PRECISION; DECLARE VARIABLE AmSumma1 DOUBLE PRECISION; declare variable SID Integer; declare variable OurOrgnID integer; declare variable bpDate Date; declare variable M2 integer; declare variable LPRICE double precision; begin for Select Dat_, OurOrgnID, Period from MainAmMst where ID=:ID into :Dat, :OurOrgnID, :AmPeriod do begin if (:AmPeriod=0) then Select xDate from f_MonthFirstDay(:Dat) into :bpDate; if (:AmPeriod=1) then Select xDate from f_Quarter_Beg(:Dat) into :bpDate; for Select ID from MainMean where OurOrgnID = :OurOrgnID and Dat_ < :bpDate into :MainID do begin Select M.GroupID1, G.Typ, G.Mult from MainMean M, MainGrp G where M.ID=:MainID and G.ID=M.GroupID1 into :GrpID, :AmTyp, :AmMult; M2 = Null; LPRICE = Null; if (:AmTyp=0) then -- линейный метод Select bPrice, aSumma, AmNorm from MainMean_ClcAm0(:MainID,1,:ID) into :bPrice, :aSumma, :AmNorm; if (:AmTyp=1) then -- метод уменьш. остатков Select bPrice, aSumma, AmNorm from MainMean_ClcAm1(:MainID,1,:ID) into :bPrice, :aSumma, :AmNorm; if (:AmTyp=2) then -- линейный (по сроку использования) Select bPrice, aSumma, AmNorm, M2, LPRICE from MainMean_ClcAm2(:MainID,1,:ID) into :bPrice, :aSumma, :AmNorm, :M2, :LPRICE; -- if (:bPrice <> 0) then begin if ((:bPrice <> 0 and :AmTyp in (0, 1)) or (:M2 > 0 and :AmTyp in (2))) then begin insert into mainamslv (id, mstid, mainmeanid, Typ, Price, summa, amnorm, mult, GrpID, M2, LPRICE) values (Gen_ID(MainAmSlv_ID,1), :ID, :MainID, :AmTyp, :bPrice, :aSumma, :AmNorm, :AmMult, :GrpID, :M2, :LPRICE); end end end end^ ALTER PROCEDURE MAINMEAN_CLCAM0 ( MAINID INTEGER, GRPTYP INTEGER, MID INTEGER) RETURNS ( BPRICE DOUBLE PRECISION, AMNORM DOUBLE PRECISION, ASUMMA DOUBLE PRECISION) AS /* - расчет амортизации/износа линейным методом - */ declare variable GrpID integer; /* введено в эксплуатацию */ declare variable InpDate Date; /* списано */ declare variable OutDate Date; /* начислять ли амортизацию после выбытия */ declare variable AmClosed integer; /* начислять ли износ после выбытия */ declare variable AmClosed1 integer; /* изменение стоимости */ declare variable cSumma Double precision; /* 0 - линейная, 1 - метод уменьш. остатков */ declare variable AmTyp integer; /* коэффициент */ declare variable Mult double precision; declare variable Period integer; declare variable bpDate Date; declare variable aY integer; declare variable aM integer; declare variable aD integer; /* начальная амортизация/износ */ declare variable bAmSumma double precision; /* начисленная до текущего момента сумма амортизации */ declare variable AmSum double precision; declare variable aDate Date; begin bPrice = 0.0; aSumma = 0.0; Select Dat_, Period from MainAmMst where ID=:MID into :aDate, :Period; if (:aDate is Null) then begin suspend; exit; end if (:GrpTyp=0) then /* амортизация */ select M.Price, M.GroupID, M.DAT_, M.Out_Date, M.AmClosed, M.AmClosed1, G.Typ, G.Mult, G.AmNorm, aSumma from MainMean M, MainGrp G where M.ID = :MainID and G.ID=M.GroupID into :bPrice, :GrpID, :InpDate, :OutDate, :AmClosed, :AmClosed1, :AmTyp, :Mult,:AmNorm, :bAmSumma; if (:GrpTyp=1) then /* износ */ select M.Price, M.GroupID1, M.DAT_, M.Out_Date, M.AmClosed, M.AmClosed1, G.Typ, G.Mult, G.AmNorm, aSumma1 from MainMean M, MainGrp G where M.ID = :MainID and G.ID=M.GroupID1 into :bPrice, :GrpID, :InpDate, :OutDate, :AmClosed, :AmClosed1, :AmTyp, :Mult,:AmNorm, :bAmSumma; /* начальная амортизация/износ */ if (:bAmSumma is Null) then bAmSumma = 0.0; /* начало периода - bpDate */ if (:Period=0) then Select xDate from f_MonthFirstDay(:aDate) into :bpDate; if (:Period=1) then Select xDate from f_Quarter_Beg(:aDate) into :bpDate; if (:Period=2) then begin execute procedure f_DecodeDate(:aDate) returning_values (:aY, :aM, :aD); Select Result from f_EncodeDate(:aY,1,1) into :bpDate; end if ((:GrpID is Null) or /* нет такого ОС или группа не задана */ (:InpDate >= :bpDate) or /* ОС еще не введено в экспл. */ (:AmTyp <> 0) /* не линейная амортизация */ ) then begin bPrice = 0.0; suspend; exit; end if (:OutDate is not Null and :OutDate < :bpDate and ((:AmClosed=0 and :GrpTyp=0) or (:AmClosed1=0 and :GrpTyp=1)))then begin /* ОС списано и не начислять аморт. после выбытия */ bPrice = 0.0; suspend; exit; end if (:GrpTyp=0) then Select Sum(Summa) from MainPrice where MainID=:MainID and (EXCL0 is Null or Excl0=0) and DAT_ < :bpDate into :cSumma; if (:GrpTyp=1) then Select Sum(Summa) from MainPrice where MainID=:MainID and (EXCL1 is Null or Excl1=0) and DAT_ < :bpDate into :cSumma; if (:cSumma is Null) then cSumma = 0.0; bPrice = :bPrice + :cSumma; if (:Period=0) then AmNorm = :AmNorm / 12; /* месяц */ if (:Period=1) then AmNorm = :AmNorm / 4; /* квартал */ if (:bPrice < 0.0) then bPrice = 0.0; if (:bPrice *:bPrice < 0.000025) then bPrice=0.0; aSumma = :bPrice / 100 * :AmNorm * :Mult; /* проверка на полный износ */ select Sum(Summa) from MainAmSlv S, MainAmMst M where S.MainMeanID=:MainID and M.ID=S.MstID and M.GrpTyp=:GrpTyp and M.DAT_ < :aDate into :AmSum; /* общая сумма амортизации */ if (:AmSum is Null) then AmSum = 0.0; if (:bPrice - :AmSum-:bAmSumma-:aSumma < 0.0) then aSumma = :bPrice-:AmSum-:bAmSumma; Suspend; end^ ALTER PROCEDURE MAINMEAN_CLCAM1 ( MAINID INTEGER, GRPTYP INTEGER, MID INTEGER) RETURNS ( BPRICE DOUBLE PRECISION, AMNORM DOUBLE PRECISION, ASUMMA DOUBLE PRECISION) AS /* - расчет Амортизации/Износа методом уменьшающихся остатков - */ /* группа Амортизации / износа */ declare variable GrpID integer; /* введено в эксплуатацию */ declare variable InpDate Date; /* списано */ declare variable OutDate Date; /* начислять ли амортизацию после выбытия */ declare variable AmClosed integer; /* начислять ли износ после выбытия */ declare variable AmClosed1 integer; /* изменение стоимости */ declare variable cSumma Double precision; /* 0 - линейная, 1 - метод уменьш. остатков */ declare variable AmTyp integer; /* коэффициент */ declare variable Mult double precision; /* 0 - месяц, 1 - квартал, 2 - год */ declare variable Period integer; /* балансовая стоимость из последнего начисления */ declare variable mPrice double precision; /* дата последнего начисления */ declare variable mDate Date; /* сумма амортизации из пред. начисления */ declare variable amSumma double precision; /* начальная амортизация */ declare variable bAmSumma0 double precision; /* начальный износ */ declare variable bAmSumma1 double precision; /* начисление амортизации - ведомость */ declare variable MCID integer; /* начало расчетного периода */ declare variable bpDate Date; /* предыдущий период */ declare variable bp1Date Date; declare variable ep1Date Date; declare variable aY integer; declare variable aM integer; declare variable aD integer; declare variable aDate Date; declare variable PPeriod integer; declare variable bmDate Date; declare variable emDate Date; declare variable CurOrgnID integer; declare variable rPrice double precision; begin bPrice = 0.0; aSumma = 0.0; Select Dat_, Period, OurOrgnID from MainAmMst where ID=:MID into :aDate, :Period, :CurOrgnID; if (:aDate is Null) then begin suspend; exit; end if (:GrpTyp=0) then /* амортизация */ select M.ID, M.Price, M.GroupID, M.DAT_, M.Out_Date, M.AmClosed, m.AmClosed1, G.Typ, G.Mult, G.AmNorm, M.aSumma, M.aSumma1, M.rPrice from MainMean M, MainGrp G where M.ID = :MainID and G.ID=M.GroupID into :MID, :bPrice, :GrpID, :InpDate, :OutDate, :AmClosed, :AmClosed1, :AmTyp, :Mult,:AmNorm, :bAmSumma0, :bAmSumma1, :rPrice; if (:GrpTyp=1) then /* износ */ select M.ID, M.Price, M.GroupID1, M.DAT_, M.Out_Date, M.AmClosed, M.AmClosed1, G.Typ, G.Mult, G.AmNorm, M.aSumma, M.aSumma1, M.rPrice from MainMean M, MainGrp G where M.ID = :MainID and G.ID=M.GroupID1 into :MID, :bPrice, :GrpID, :InpDate, :OutDate, :AmClosed, :AmClosed1, :AmTyp, :Mult,:AmNorm, :bAmSumma0, :bAmSumma1, :rPrice; /* начало периода - bpDate */ if (:Period=0) then begin Select xDate from f_MonthFirstDay(:aDate) into :bpDate; ep1Date = bpDate - 1.0; Select xDate from f_MonthFirstDay(:ep1Date) into :bp1Date; end if (:Period=1) then begin Select xDate from f_Quarter_Beg(:aDate) into :bpDate; ep1Date = bpDate - 1.0; Select xDate from f_Quarter_Beg(:ep1Date) into :bp1Date; end if (:Period=2) then begin execute procedure f_DecodeDate(:aDate) returning_values (:aY, :aM, :aD); Select Result from f_EncodeDate(:aY,1,1) into :bpDate; ep1Date = bpDate - 1.0; execute procedure f_DecodeDate(:ep1Date) returning_values (:aY, :aM, :aD); Select Result from f_EncodeDate(:aY,1,1) into :bp1Date; end if (:rPrice is Null) then rPrice = 0.0; if (:OutDate is Null or :OutDate < bp1Date or :OutDate > :ep1Date) then rPrice = 0.0; if ((:GrpID is Null) or /* нет такого ОС или группа не задана */ (:InpDate >= :bpDate) or /* ОС еще не введено в экспл. */ (:AmTyp <> 1) ) then begin bPrice = 0.0; suspend; exit; end if (:OutDate is not Null and :OutDate < :bpDate and ((:AmClosed = 0 and :GrpTyp = 0) or (:AmClosed1 = 0 and :GrpTyp=1)))then begin /* ОС списано и не начислять аморт. после выбытия */ bPrice = 0.0; suspend; exit; end if (:GrpTyp=0) then begin /* начальная амортизация */ if (:bAmSumma0 is Null) then bAmSumma0 = 0.0; bPrice = :bPrice - :bAmSumma0; end if (:GrpTyp=1) then begin /* начальный износ */ if (:bAmSumma1 is Null) then bAmSumma1 = 0.0; bPrice = :bPrice - :bAmSumma1; end select Max(M.DAT_) from MainAmMst M, MainAmSlv S where S.MainMeanID=:MainID and M.ID=S.MstID and M.OurOrgnID=:CurOrgnID and M.GrpTyp=:GrpTyp into :mDate; if (:mDate is not Null) then begin /* производилось начисление */ select Max(M.ID) from MainAmMst M, MainAmSlv S where M.OurOrgnID=:CurOrgnID and M.Dat_=:mDate and M.GrpTyp=:GrpTyp and S.MstID=M.ID and S.MainMeanID=:MainID into :MCID; Select S.Price, S.Summa, M.Period from MainAmSlv S, MainAmMst M where S.MstID=:MCID and S.MainMeanID=:MainID and M.ID=:MCID into :mPrice, :amSumma, :PPeriod; emDate = :mDate; if (:PPeriod=0) then Select xDate from f_MonthFirstDay(:mDate) into :bmDate; if (:PPeriod=1) then Select xDate from f_Quarter_Beg(:mDate) into :bmDate; if (:PPeriod=2) then begin execute procedure f_DecodeDate(:mDate) returning_values (:aY, :aM, :aD); Select Result from f_EncodeDate(:aY,1,1) into :bmDate; end /* изменение стоимости */ if (:GrpTyp=0) then select Sum(Summa) from MainPrice where MainID = :MainID and DAT_ >= :bmDate and DAT_ <= :emDate and (EXCL0 is Null or Excl0=0) into :cSumma; if (:GrpTyp=1) then select Sum(Summa) from MainPrice where MainID = :MainID and DAT_ >= :bmDate and DAT_ <= :emDate and (EXCL1 is Null or Excl1=0) into :cSumma; bPrice = :mPrice-:amSumma; end else begin /* начисления не производилось */ if (:GrpTyp=0) then select Sum(Summa) from MainPrice where MainID = :MainID and (Excl0 is Null or Excl0=0) and DAT_ < :bpDate into :cSumma; if (:GrpTyp=1) then select Sum(Summa) from MainPrice where MainID = :MainID and (Excl1 is Null or Excl1=0) and DAT_ < :bpDate into :cSumma; end if (:cSumma is Null) then cSumma = 0.0; bPrice = :bPrice + :cSumma - :rPrice; if (:Period=0) then AmNorm = :AmNorm / 12; /* месяц */ if (:Period=1) then AmNorm = :AmNorm / 4; /* квартал */ if (:bPrice *:bPrice < 0.000025) then bPrice=0.0; aSumma = :bPrice / 100 * :AmNorm * :Mult; Suspend; end^ ALTER PROCEDURE MAINMEAN_CLCAM2 ( MAINID INTEGER, GRPTYP INTEGER, MID INTEGER) RETURNS ( BPRICE DOUBLE PRECISION, AMNORM DOUBLE PRECISION, ASUMMA DOUBLE PRECISION, ASUMMA1 DOUBLE PRECISION, OLDBSUMMA DOUBLE PRECISION, USE_PERIOD INTEGER, M1 INTEGER, M2 INTEGER, OLDTYP INTEGER, BMDATE TIMESTAMP, EMDATE TIMESTAMP, BPDATE DATE, EPDATE DATE, LPRICE DOUBLE PRECISION, CSUMMA DOUBLE PRECISION, OLDPERIOD INTEGER) AS -- расчет амортизации/износа линейным методом (по сроку использования) declare variable GrpID integer; -- введено в эксплуатацию (начало учета) declare variable InpDate Date; -- списано declare variable OutDate Date; -- начислять ли амортизацию после выбытия declare variable AmClosed integer; -- начислять ли износ после выбытия declare variable AmClosed1 integer; -- 0 - линейная, 1 - метод уменьш. остатков declare variable AmTyp integer; -- коэффициент declare variable Mult double precision; declare variable Period integer; -- дата ведомости начисления амортизации / износа declare variable aDate Date; declare variable aY integer; declare variable aM integer; declare variable aD integer; -- начальная амортизация / износ declare variable bAmSumma double precision; -- начисленная до текущего момента сумма амортизации declare variable AmSum double precision; declare variable OldGrpTyp integer; declare variable SlvID Integer; declare variable Typ integer; declare variable SID integer; -- дата ввода в эксплуатацию declare variable InpDate1 TimeStamp; declare variable pPeriod integer; begin bPrice = 0.0; aSumma = 0.0; OldBSumma = Null; Select Dat_, Period from MainAmMst where ID=:MID into :aDate, :Period; pPeriod = :Period; if (:aDate is Null) then begin suspend; exit; end Typ = 2; if (:GrpTyp=0) then begin -- амортизация OldTyp = Null; select first 1 S.ID, S.Typ, S.Price, S.Summa, M1.Period From MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=0 order by S.ID desc into :SID, :OldTyp, :OldBSumma, :aSumma1, :OldPeriod; -- предыдуший метод расчета / балансовая стоимость if (:OldTyp is not Null and :OldTyp <> :Typ) then begin if (:OldTyp=0) then begin select CoalEsce(Sum(S.Summa),0.0) from MainMean M join MainAmSlv S on S.MainMeanID=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=0 and S.ID <= :SID into :aSumma1; select CoalEsce(M.asumma, 0.0) from MainMean M where M.ID=:MainID into :bamsumma; OldBSumma = :OldBSumma - :aSumma1 - :bAmSumma; end if (:OldTyp=1) then begin select first 1 S.PRICE, S.Summa from MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=0 order by S.ID desc into :OldBSumma, :aSumma1; OldBSumma = :OldBSumma - :aSumma1; end end else begin select first 1 S.PRICE, S.Summa from MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=0 order by S.ID desc into :OldBSumma, :aSumma1; OldBSumma = :OldBSumma - :aSumma1; end select M.Price, M.GroupID, M.DAT_, M.Out_Date, M.AmClosed, M.AmClosed1, G.Typ, G.Mult, G.AmNorm, M.aSumma, M.Use_Period, M.Inp_Date, coalesce(M.LPrice,0.0) from MainMean M join MainGrp G on G.ID=M.GroupID where M.ID = :MainID into :bPrice, :GrpID, :InpDate, :OutDate, :AmClosed, :AmClosed1, :AmTyp, :Mult,:AmNorm, :bAmSumma, :Use_Period, :InpDate1, :LPRICE; end if (:GrpTyp=1) then begin-- износ OldTyp = Null; select first 1 S.ID, S.Typ, S.Price, S.Summa, M1.Period From MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=1 order by S.ID desc into :SID, :OldTyp, :OldBSumma, :aSumma1, :OldPeriod; -- предыдуший метод расчета / балансовая стоимость if (:OldTyp is not Null and :OldTyp <> :Typ) then begin -- метод расчета меняется if (:OldTyp=0) then begin select CoalEsce(Sum(S.Summa),0.0) from MainMean M join MainAmSlv S on S.MainMeanID=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=1 and S.ID <= :SID into :aSumma1; select CoalEsce(M.asumma1, 0.0) from MainMean M where M.ID=:MainID into :bamsumma; OldBSumma = :OldBSumma - :aSumma1 - :bamsumma; end if (:OldTyp = 1) then begin select first 1 S.PRICE, S.Summa from MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=1 order by S.ID desc into :OldBSumma, :aSumma1; OldBSumma = :OldBSumma - :aSumma1; end end else begin -- метод расчета не меняется select first 1 S.PRICE, S.Summa from MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=1 order by S.ID desc into :OldBSumma, :aSumma1; OldBSumma = :OldBSumma - :aSumma1; end select M.Price, M.GroupID1, M.DAT_, M.Out_Date, M.AmClosed, M.AmClosed1, G.Typ, G.Mult, G.AmNorm, M.aSumma1, M.Use_Period, M.Inp_Date, coalesce(M.LPrice,0.0) from MainMean M join MainGrp G on G.ID=M.GroupID1 where M.ID = :MainID into :bPrice, :GrpID, :InpDate, :OutDate, :AmClosed, :AmClosed1, :AmTyp, :Mult,:AmNorm, :bAmSumma, :Use_Period, :InpDate1, :LPRICE; -- начальная амортизация/износ end if (:bAmSumma is Null) then bAmSumma = 0.0; -- начало периода - bpDate if (oldperiod is null) then OldPeriod = :period; if (:OldPeriod=0) then begin -- месяц Select xDate from f_MonthFirstDay(:aDate) into :bpDate; Select xDate from f_MonthLastDay(:aDate) into :epDate; end if (:OldPeriod=1) then begin -- квартал Select xDate from f_Quarter_Beg(:aDate) into :bpDate; Select xDate from f_Quarter_End(:aDate) into :epDate; end if (:OldPeriod=2) then begin -- год execute procedure f_DecodeDate(:aDate) returning_values (:aY, :aM, :aD); Select Result from f_EncodeDate(:aY,1,1) into :bpDate; Select Result from f_EncodeDate(:aY,12,31) into :epDate; end if ( (:GrpID is Null) or (:InpDate >= :bpDate) or (:AmTyp <> 2) ) then begin -- нет такого ОС или группа не задана -- ОС еще не введено в экспл. -- не линейная амортизация bPrice = 0.0; suspend; exit; end if (:OutDate is not Null and :OutDate < :bpDate and ((:AmClosed=0 and :GrpTyp=0) or (:AmClosed1=0 and :GrpTyp=1)))then begin -- ОС списано и не начислять аморт. после выбытия bPrice = 0.0; suspend; exit; end select first 1 M1.DAT_ from MainMean M join MainAmSlv s ON s.mainmeanid=M.ID join MainAmMst M1 on M1.ID=S.MstID where M.ID=:MainID and M1.GrpTyp=:GrpTyp and M1.ID < :MID order by M1.ID desc into :emDate; emDate = bpDate - 1.0; cSumma = 0.0; if (:emDate is not Null) then begin -- ранее производилось начисление, были ли изменения стоимости if (:OldPeriod=0) then begin Select xDate from f_MonthFirstDay(:emDate) into :bmDate; end if (:OldPeriod=1) then begin Select xDate from f_Quarter_Beg(:emDate) into :bmDate; end if (:OldPeriod=2) then begin execute procedure f_DecodeDate(:emDate) returning_values (:aY, :aM, :aD); Select Result from f_EncodeDate(:aY,1,1) into :bmDate; end if (:GrpTyp=0) then begin select CoalEsce(Sum(Summa), 0.0) from MainPrice where MainID = :MainID and DAT_ >= :bmDate and DAT_ <= :emDate and (EXCL0 is Null or Excl0=0) and Bin_And(CoalEsce(System_Flag, 0), 1) = 0 into :cSumma; select :cSumma + CoalEsce(Sum(Summa), 0.0) from MainPrice where MainID = :MainID and DAT_ >= :bpDate and DAT_ <= :epDate and (EXCL0 is Null or Excl0=0) and Bin_And(CoalEsce(System_Flag, 0), 1) <> 0 into :cSumma; end if (:GrpTyp=1) then begin select CoalEsce(Sum(Summa), 0.0) from MainPrice where MainID = :MainID and DAT_ >= :bmDate and DAT_ <= :emDate and (EXCL1 is Null or Excl1=0) and Bin_And(CoalEsce(System_Flag, 0), 1) = 0 into :cSumma; select :cSumma + CoalEsce(Sum(Summa), 0.0) from MainPrice where MainID = :MainID and DAT_ >= :bpDate and DAT_ <= :epDate and (EXCL1 is Null or Excl1=0) and Bin_And(CoalEsce(System_Flag, 0), 1) <> 0 into :cSumma; end end if (:emDate is Null) then begin -- ранее амортизация / износ не начислялись -- начальная амортизация / износ if (:GrpTyp=0) then begin -- изменение стоимости select CoalEsce(Sum(Summa), 0.0) from MainPrice where MainID = :MainID and DAT_ < :aDate and (Excl0 is Null or Excl0=0) -- не исключено из начисления амортизации and Bin_And(CoalEsce(System_Flag, 0), 1) = 0 into :cSumma; select :cSumma + CoalEsce(Sum(Summa), 0.0) from MainPrice where MainID = :MainID and DAT_ >= :bpDate and DAT_ <= :epDate and (Excl0 is Null or Excl0=0) and Bin_And(CoalEsce(System_Flag, 0), 1) <> 0 into :cSumma; end if (:GrpTyp=1) then begin -- изменение стоимости select CoalEsce(Sum(Summa), 0.0) from MainPrice where MainID = :MainID and DAT_ < :aDate and (Excl1 is Null or Excl1=0) -- не исключено из начисления износа and Bin_And(CoalEsce(System_Flag, 0), 1) = 0 into :cSumma; select :cSumma + CoalEsce(Sum(Summa), 0.0) from MainPrice where MainID = :MainID and DAT_ >= :bpDate and DAT_ <= :epDate and (Excl1 is Null or Excl1=0) -- не исключено из начисления износа and Bin_And(CoalEsce(System_Flag, 0), 1) <> 0 into :cSumma; end cSumma = 187.12; bPrice = :bPrice - :bAmSumma; end if (:cSumma is Null) then cSumma = 0.0; if (:OldBSumma is not Null) then bPrice = :OldBSumma; bPrice = :bPrice + :cSumma; -- кол-во месяцев эксплуатации if (:InpDate1 is not Null) then begin select Count_months from f_Count_Months (:InpDate1, :bpDate-1.0) into :M1; end else begin select Count_months from f_Count_Months (:InpDate, :bpDate-1.0) into :M1; end M1 = :M1-1; -- остоток месяцев эксплуатации M2 = :Use_Period - :M1; aSumma = 0.0; if (:M2 <= 0) then -- срок использования исчерпан bPrice = 0.0; if (:bPrice < 0.0) then bPrice = 0.0; if (Abs(:bPrice) < 0.005) then bPrice=0.0; if (:M2 > 0) then begin if (:Period=0) then begin -- месяц aSumma = (:bPrice - :lPrice) / :M2; end if (:Period=1) then begin -- квартал aSumma = (:bPrice - :lPrice) / :M2 * 3; end end if (:aSumma > :bPrice) then aSumma = :bPrice; if (:AmSum is Null) then AmSum = 0.0; if (:aSumma > :bPrice) then begin aSumma = :bPrice; end Suspend; end^ ALTER PROCEDURE MAINMEAN_DELACCNREC ( ID INTEGER) AS Declare Variable MainKey integer; Declare Variable AccnKey integer; begin for Select ID, AccnKey from MainInpAc where MainKey = :ID into :MainKey,:AccnKey do begin /* ввод ОС в эксплуатацию */ delete from MainInpAc where ID=:MainKey; Delete From AccnProv where ID=:AccnKey; end for Select ID, AccnKey from MainOutAc where MainKey = :ID into :MainKey,:AccnKey do begin /* списание ОС */ delete from MainOutAc where ID=:MainKey; Delete From AccnProv where ID=:AccnKey; end end^ ALTER PROCEDURE MAINMEAN_GENACCNREC ( ID INTEGER) AS Declare Variable ProcNDS Double Precision; Declare Variable Summa Double Precision; Declare Variable Price Double Precision; Declare Variable iOperID integer; Declare Variable oOperID integer; Declare Variable Dt Varchar(5); Declare Variable Kt Varchar(5); Declare Variable SumTyp integer; Declare Variable Comment Varchar(255); Declare Variable Out_Date Date; Declare Variable Inp_Date Date; Declare Variable UserName Varchar(20); Declare Variable AccnKey integer; Declare Variable iNbr Varchar(20); Declare Variable oNbr Varchar(20); Declare Variable cSumma0 Double Precision; Declare Variable cSumma1 Double Precision; /* признаки аналитики по подразделениям */ Declare Variable D1 integer; declare Variable K1 integer; Declare Variable DT1 integer; declare Variable KT1 integer; Declare Variable d5 integer; declare Variable k5 integer; Declare Variable dt5 integer; declare Variable kt5 integer; /* Сумма Амортизации */ Declare Variable aSumma0 Double Precision; /* Сумма Износа */ Declare Variable aSumma1 Double Precision; /* Начальная Амортизация */ declare variable AmSumma0 Double Precision; /* Начальный износ */ declare variable AmSumma1 Double Precision; Declare Variable rSumma Double Precision; Declare Variable Storno Integer; Declare Variable FinRes Integer; Declare Variable Accn Varchar(5); Declare Variable DtPrt integer; Declare Variable DtObj integer; Declare Variable KtPrt integer; Declare Variable KtObj integer; Declare Variable Oper Integer; Declare Variable Proc Double Precision; Declare Variable PodrID integer; declare variable Period0 integer; declare variable Period1 integer; declare variable AmDate TimeStamp; declare variable CurOrgnID integer; begin for select M.InOperID, M.Out_Typ, M.Price, M.Out_Date, M.Dat_, M.iNbr, M.oNbr, M.UserName, M.rPrice, M.ASumma, M.ASumma1, G0.Period, G1.Period, M.OurOrgnID from MainMean M left join MainGrp G0 on G0.ID = M.GroupID left join MainGrp G1 on G1.ID = M.GroupID1 where M.ID=:ID into :iOperID, :oOperID, :Price, :Out_Date, :Inp_Date, :iNbr, :oNbr, :UserName, :rSumma, :AmSumma0, :AmSumma1, :Period0, :Period1, :CurOrgnID do begin ProcNDS = null; Select Cast(VAL as Double Precision) from SysConst where OurOrgnID=:CurOrgnID and Name='ProcNDS' into :ProcNDS; if(:ProcNDS is Null) then ProcNDS = 20.00; if (:iOperID is not null and :iOperID <> 0) then begin -- Ввод в эксплуатацию for select Dt,Kt,SumTyp,Comment,FinRes,Storno,DtPrt,DtObj,KtPrt,KtObj,Proc from StorAccn where OperID=:iOperID into :Dt, :Kt, :SumTyp, :Comment,:FinRes,:Storno,:DtPrt,:DtObj,:KtPrt,:KtObj,:Proc do begin D1 = Null; K1 = Null; Dt1 = Null; Kt1 = Null; D5 = Null; K5 = Null; Dt5 = Null; Kt5 = Null; PodrID = Null; Select A1, A5 from AccnPlan where Accn=:Dt into :D1, :D5; Select A1, A5 from AccnPlan where Accn=:Kt into :K1, :K5; if (:D1=1) then Dt1 = :CurOrgnID; if (:K1=1) then Kt1 = :CurOrgnID; if (:D5=1 or :K5=1) then Select PodrID from MainMean_PodrOnDate(:ID, :Inp_Date) into :PodrID; if (:D5=1) then Dt5 = :PodrID; if (:K5=1) then Kt5 = :PodrID; for Select Oper From AcOprLst where ID=:iOperID into :Oper do Oper=:Oper; Summa = :Price; if(:SumTyp=1) then Summa = :Price * :ProcNDS / 100.00; if(:SumTyp=2) then Summa = :Price + (:Price * :ProcNDS / 100.00); if (:Proc <> 0.0 and :Proc is not Null) then Summa = Summa / 100.00 * :Proc; if (:Summa <> 0) then begin if (:Storno = 1) then Summa = -:Summa; AccnKey = Gen_ID(AccnProv_ID, 1); Insert Into AccnProv (ID,OurOrgnID,Dat_,Summa,Dt,Kt,Document,Comment,UserName, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID, Dt1, Kt1, Dt5, Kt5) Values(:AccnKey,:CurOrgnID,:Inp_Date,:Summa,:Dt,:Kt,:iNbr,:Comment,:UserName, :DtPrt,:DtObj,:KtPrt,:KtObj,:Oper,:iOperID,:ID, :Dt1, :Kt1, :Dt5, :Kt5); Insert Into MainInpAc (MainKey,AccnKey) Values (:ID,:AccnKey); end end end if (:oOperID is not null and :oOperID <> 0 and :Out_Date is not null) then begin -- Проводки по выбытию ОС for select Dt,Kt,SumTyp,Comment,FinRes,Storno,DtPrt,DtObj,KtPrt,KtObj,Proc from StorAccn where OperID=:oOperID into :Dt, :Kt, :SumTyp, :Comment,:FinRes,:Storno, :DtPrt,:DtObj,:KtPrt,:KtObj,:Proc do begin D1 = Null; K1 = Null; Dt1 = Null; Kt1 = Null; D5 = Null; K5 = Null; Dt5 = Null; Kt5 = Null; PodrID = Null; Select A1,A5 from AccnPlan where Accn=:Dt into :D1, :D5; Select A1,A5 from AccnPlan where Accn=:Kt into :K1, :K5; if (:D1=1) then Dt1 = :CurOrgnID; if (:K1=1) then Kt1 = :CurOrgnID; if (:D5=1 or :K5=1) then Select PodrID from MainMean_PodrOnDate(:ID, :Out_Date) into :PodrID; if (:D5=1) then Dt5 = :PodrID; if (:K5=1) then Kt5 = :PodrID; Select Oper From AcOprLst where ID=:oOperID into :Oper; Summa = :Price; -- Сумма Амортизации AmDate = :Out_Date; if (:Period0 = 0) then Select xDate from f_MonthLastDay(:Out_Date) into :AmDate; if (:Period0 = 1) then Select xDate from f_Quarter_End(:Out_Date) into :AmDate; if (:Period0 = 2) then Select xDate from f_Year_End(:Out_Date) into :AmDate; Select Sum(s.Summa) from MainAmSlv s, MainAmMst M where s.MainMeanID = :ID and M.ID = S.MstID and M.DAT_ <= :AmDate and (M.GrpTyp = 0 or M.GrpTyp is Null) into :aSumma0; if (:aSumma0 is null) then aSumma0 = 0.0; -- Сумма Износа AmDate = :Out_Date; if (:Period1 = 0) then Select xDate from f_MonthLastDay(:Out_Date) into :AmDate; if (:Period1 = 1) then Select xDate from f_Quarter_End(:Out_Date) into :AmDate; if (:Period1 = 2) then Select xDate from f_Year_End(:Out_Date) into :AmDate; Select Sum(s.Summa) from MainAmSlv s, MainAmMst M where s.MainMeanID = :ID and M.ID=S.MstID and M.DAT_ <= :AmDate and M.GrpTyp = 1 into :aSumma1; if (:aSumma1 is null) then aSumma1 = 0.0; -- изменение стоимости (аморт.) Select Sum(MP.Summa) from MainPrice MP where MP.MainID=:ID and (MP.Excl0 = 0 or MP.Excl0 is Null) and MP.DAT_ <= :Out_Date into :cSumma0; if (:cSumma0 is Null) then cSumma0 = 0.0; -- изменение стоимости (износ) Select Sum(MP.Summa) from MainPrice MP where MP.MainID=:ID and (MP.Excl1 = 0 or MP.Excl1 is Null) and MP.DAT_ <= :Out_Date into :cSumma1; if (:cSumma1 is Null) then cSumma1 = 0.0; if (:SumTyp=0) then -- первоначальная стоимость Summa = :Price; if (:SumTyp=1) then -- НДС реализации Summa = :rSumma * :ProcNDS / 100.00; if (:SumTyp=2) then -- цена реализации с НДС Summa = :rSumma+(:rSumma * :ProcNDS / 100.00); if (:SumTyp=3) then -- восст. стоимость (аморт.) Summa = :Price + :cSumma0; if (:SumTyp=4) then -- балансовая стоимость (аморт.) Summa = :Price + cSumma0 - :aSumma0 - :AmSumma0; if (:SumTyp=5) then -- сумма амортизации Summa = :aSumma0 + :AmSumma0; if (:SumTyp=6) then -- изменение стоимости (аморт.) Summa = :cSumma0; if (:SumTyp=7) then -- сумма превышения (аморт.) Summa = :rSumma - (:Price + :cSumma0); if (:SumTyp=8) then -- сумма износа Summa = :aSumma1 + :AmSumma1; if (:SumTyp=9) then -- балансовая стоимость (износ) Summa = :Price + :cSumma1 - :aSumma1 - :AmSumma1; if (:SumTyp=10) then -- восст. стоимость (износ) Summa = :Price + :cSumma1; if (:SumTyp=11) then -- изменение стоимости (износ) Summa = :cSumma1; if (:SumTyp=12) then -- сумма превышения (износ) Summa = :rSumma - (:Price + :cSumma1); if (:SumTyp=13) then begin -- амортизация ликвидируемой части select Sum(C.Summ0) from MainPrice P left join MainPrice_CalcDelPart(P.ID) C on 0=0 where P.MainID=:ID into :Summa; end if (:SumTyp=14) then begin -- износ ликвидируемой части select Sum(C.Summ1) from MainPrice P left join MainPrice_CalcDelPart(P.ID) C on 0=0 where P.MainID=:ID into :Summa; end if (:Summa is null) then Summa = 0.0; if (:FinRes = 0) then if(:Summa < 0.0) then Summa = 0.0; if (:FinRes = 2 and :Summa < 0.0) then begin Summa = -:Summa; Accn = :Dt; Dt = :Kt; Kt = :Accn; end if (:Proc <> 0.0 and :Proc is not Null) then Summa = Summa / 100.00 * :Proc; if (:Summa <> 0.0) then begin if (:Storno = 1) then Summa = -:Summa; AccnKey = Gen_ID(AccnProv_ID, 1); Insert Into AccnProv (ID, OurOrgnID, Dat_,Summa,Dt, Kt,Document,Comment,UserName, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID, Dt1, Kt1, Dt5, Kt5) Values(:AccnKey,:CurOrgnID,:Out_Date,:Summa,:Dt,:Kt,:oNbr,:Comment,:UserName, :DtPrt,:DtObj,:KtPrt,:KtObj,:Oper,:oOperID, :ID, :Dt1, :Kt1, :Dt5, :Kt5); Insert Into MainOutAc (MainKey, AccnKey) Values (:ID, :AccnKey); end end end end end^ ALTER PROCEDURE MAINMEAN_GRPONDATE ( ID INTEGER, GRPTYP INTEGER, ADATE TIMESTAMP) RETURNS ( GRPID INTEGER) AS declare variable bDate Date; declare variable eDate Date; declare variable xDate Date; declare variable MoveID integer; begin GrpID = Null; if (GrpTyp=0) then Select GroupID from MainMean where ID=:ID into :GrpID; if (GrpTyp=1) then Select GroupID1 from MainMean where ID=:ID into :GrpID; select Min(DAT_) from MainMove where MainID=:ID into :bDate; if (:bDate is not Null) then begin select Max(DAT_) from MainMove where MainID=:ID into :eDate; if (:aDate < :bDate) then begin Select Min(ID) from MainMove where MainID=:ID and Dat_ = :bDate into :MoveID; if (:GrpTyp = 0) then Select GrpSrc0 from MainMove where ID=:MoveID into :GrpID; if (:GrpTyp = 1) then Select GrpSrc1 from MainMove where ID=:MoveID into :GrpID; end else if (:aDate > :bDate) then begin Select Max(ID) from MainMove where MainID=:ID and Dat_ = :eDate into :MoveID; if (:GrpTyp = 0) then Select GrpDst0 from MainMove where ID=:MoveID into :GrpID; if (:GrpTyp = 1) then Select GrpDst1 from MainMove where ID=:MoveID into :GrpID; end else begin Select Max(Dat_) from MainMove where MainID=:ID and Dat_<=:aDate into :xDate; Select Max(ID) from MainMove where MainID=:ID and Dat_=:xDate into :MoveID; if (:GrpTyp = 0) then Select GrpDst0 from MainMove where ID=:MoveID into :GrpID; if (:GrpTyp = 1) then Select GrpDst1 from MainMove where ID=:MoveID into :GrpID; end end end^ ALTER PROCEDURE MAINMEAN_MOVE ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, QNTB INTEGER, QNTI INTEGER, QNTO INTEGER, QNTE INTEGER, PODRID INTEGER, GROUPID0 INTEGER, GROUPID1 INTEGER, INP_DATE TIMESTAMP, OUT_DATE TIMESTAMP) AS begin for select M.ID, M.Dat_, M.Out_Date, M.GroupID, M.GroupID1 from MainMean M where M.OurOrgnID=:OrgnID into :ID, :Inp_Date, :Out_Date, :GroupID0, :GroupID1 do begin qntb = 0; qnti = 0; qnto = 0; qnte = 0; -- suspend; if (:Inp_Date < :bDate and (:Out_Date is Null or Out_Date > :bDate)) then begin qntb = 1; qnti = 0; qnto = 0; qnte = 0; Select PodrID from MainMean_PodrOnDate(:ID, :bDate) into :PodrID; suspend; end if (:Inp_Date <= :eDate and (:Out_Date is Null or :Out_Date > :eDate)) then begin qnti = 0; qnto = 0; qntb = 0; qnte = 1; suspend; end if (:Inp_Date >= :bDate and :Inp_Date <= :eDate) then begin qnte = 0; qnto = 0; qntb = 0; qnti = 1; suspend; end if (:Out_Date >= :bDate and :Out_Date <= :eDate) then begin qnti = 0; qnte = 0; qntb = 0; qnto = 1; Select PodrID from MainMean_PodrOnDate(:ID, :eDate + 1.0) into :PodrID; suspend; end end end^ ALTER PROCEDURE MAINMEAN_MOVE_DETAIL ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, QNTB INTEGER, QNTI INTEGER, QNTO INTEGER, QNTE INTEGER, PODRID INTEGER, GROUPID0 INTEGER, GROUPID1 INTEGER) AS begin for -- текущий остаток select ID, 0, 0, 0, 1, PodrID, groupid, GroupID1 from MainMean where OurOrgnID=:OrgnID and Out_Date is Null UNION -- списано после конечной даты select ID, 0, 0, 0, 1, PodrID, groupid, GroupID1 from MainMean where OurOrgnID=:OrgnID and Out_Date is not null and Out_Date > :eDate UNION select M.ID, 0, 0, 0, 1, D.podrsrc, D.grpsrc0, d.grpsrc1 from MainMove D Join MainMean M on M.ID=D.mainid where D.dat_ > :eDate UNION -- приход после конечной даты select ID, 0, 0, 0, -1, PodrID, groupid, GroupID1 from MainMean where OurOrgnID=:OrgnID and DAT_ is not null and DAT_ > :eDate UNION select M.ID, 0, 0, 0, 1, D.podrdst, D.grpdst0, d.grpdst1 from MainMove D Join MainMean M on M.ID=D.mainid where D.dat_ > :eDate UNION -- приход за период select ID, 0, 1, 0, 0, PodrID, groupid, GroupID1 from MainMean where OurOrgnID=:OrgnID and DAT_ is not null and DAT_ >= :bDate and DAT_ <= :eDate UNION select M.ID, 0, 1, 0, 0, D.podrdst, D.grpdst0, d.grpdst1 from MainMove D Join MainMean M on M.ID=D.mainid where M.OurOrgnID=:OrgnID and D.dat_ >= :bDate and D.dat_ <= :eDate UNION -- расход за период select ID, 0, 0, 1, 0, PodrID, groupid, GroupID1 from MainMean where OurOrgnID=:OrgnID and Out_Date is not null and Out_Date >= :bDate and Out_Date <= :eDate UNION select M.ID, 0, 0, 1, 0, D.podrsrc, D.grpsrc0, d.grpsrc1 from MainMove D Join MainMean M on M.ID=D.mainid where M.OurOrgnID=:OrgnID and D.dat_ >= :bDate and D.dat_ <= :eDate into :ID, :QntB, :QntI, :QntO, :QntE, :PodrID, :groupid0, :GroupID1 do begin QntB = :QntE - :QntI + :QntO; suspend; end end^ ALTER PROCEDURE MAINMEAN_NEWID RETURNS ( ID INTEGER) AS begin id=gen_id(mainmean_id,1); end^ ALTER PROCEDURE MAINMEAN_PODRONDATE ( ID INTEGER, ADATE TIMESTAMP) RETURNS ( PODRID INTEGER) AS declare variable mDate Date; declare variable mID Integer; begin PodrID = Null; Select PodrID from MainMean where ID=:ID into :PodrID; Select Min(DAT_) from MainMove where MainID=:ID into :mDate; if (:mDate is not Null) then begin /* есть перемещения */ if (:aDate < :mDate) then begin /* до начала перемещений */ Select Min(ID) from MainMove where MainID=:ID and DAT_=:mDate into :mID; Select PodrSrc from MainMove where ID=:mID into :PodrID; end else begin select Max(DAT_) from MainMove where MainID=:ID and DAT_ <= :aDate into :mDate; select Max(ID) from MainMove where MainID=:ID and DAT_=:mDate into :mID; Select PodrDst from MainMove where ID=:mID into :PodrID; end end Suspend; end^ ALTER PROCEDURE MAINPRICE_CALCDELPART ( ID INTEGER) RETURNS ( SUMM0 DOUBLE PRECISION, SUMM1 DOUBLE PRECISION) AS declare variable excl0 integer; declare variable Excl1 integer; declare variable DelPart integer; -- начальная амортизация declare variable AmSumma0 double precision; -- начальный износ declare variable AmSumma1 double precision; -- сумма изменения стоимости declare variable Summa double precision; -- сумма текущего изменения стоимости (аморт.) declare variable Summa0 double precision; -- сумма текущего изменения стоимости (износ) declare variable Summa1 double precision; -- первоначальная стоимость declare variable Price double precision; -- дата изменения стоимости declare variable Dat_1 timestamp; -- граница расчетного периода declare variable Dat_ timestamp; -- дата списания ОС declare variable OutDate timestamp; declare variable Period0 integer; declare variable Period1 integer; -- сумма амортизации до даты изменения стоимости declare variable aSumma0 double precision; -- сумма амортизации до даты изменения стоимости declare variable aSumma1 double precision; declare variable AmDate timestamp; declare variable AmDatePrev timestamp; declare variable MainID integer; declare variable cSumma0 double precision; declare variable cSumma1 double precision; declare variable dpS double precision; declare variable dpSum double precision; declare variable xID integer; begin Summ0 = 0.0; Summ1 = 0.0; select MP.Excl0, MP.Excl1, MP.DelPart, m.ASumma, m.ASumma1, mp.Summa, m.Price, mp.Dat_, m.Out_Date, g0.period, g1.period, mp.mainid from MainPrice mp join MainMean m on M.ID = mp.mainid left join MainGrp g0 on g0.id = m.groupid left join MainGrp g1 on g1.id = m.groupid1 where MP.ID = :ID into :Excl0, :Excl1, :DelPart, :AmSumma0, :AmSumma1, :Summa, :Price, :Dat_, :OutDate, :Period0, :Period1, :MainID; Summa0 = 0.0; Summa1 = 0.0; Dat_1 = Dat_; if (:DelPart = 1) then begin -- аморт./износ ликвидируемой части if (:Excl0 = 0 or :Excl0 is Null) then begin -- аморт. Summa0 = :Summa; -- Сумма Амортизации AmDate = DAT_; if (:Period0 = 0) then Select xDate from f_MonthLastDay(:DAT_) into :AmDate; if (:Period0 = 1) then Select xDate from f_Quarter_End(:DAT_) into :AmDate; if (:Period0 = 2) then Select xDate from f_Year_End(:DAT_) into :AmDate; if (:Period0 = 0) then begin Select xDate from f_monthfirstday(:dat_) into :AmDatePrev; Select xDate from f_MonthLastDay(:AmDatePrev-1.0) into :AmDatePrev; end if (:Period0 = 1) then begin Select xDate from f_Quarter_Beg(:DAT_) into :AmDatePrev; Select xDate from f_Quarter_End(:AmDatePrev-1.0) into :AmDatePrev; end if (:Period0 = 2) then begin Select xDate from f_Year_Beg(:DAT_) into :AmDatePrev; Select xDate from f_Year_End(:AmDatePrev-1.0) into :AmDatePrev; end Select Sum(s.Summa) from MainAmSlv s, MainAmMst M where s.MainMeanID = :MainID and M.ID=S.MstID and M.DAT_ <= :AmDate and (M.GrpTyp=0 or M.GrpTyp is Null) into :aSumma0; if (:aSumma0 is null) then aSumma0 = 0.0; -- изменение стоимости (аморт.) Select Sum(MP.Summa) from MainPrice MP where MP.MainID = :MainID and (MP.Excl0 = 0 or MP.Excl0 is Null) and MP.DAT_ <= :AmDatePrev into :cSumma0; if (:cSumma0 is Null) then cSumma0 = 0.0; -- аморт. ликвидируемой части Summ0 = 0.0; if (:Price + :cSumma0 - :aSumma0 <> 0.0) then begin dpSum = 0.0; for select ID from MainPrice where MainID = :MainID and DAT_ < :Dat_1 and DelPart = 1 and (Excl0 = 0 or Excl0 is Null) order by DAT_, ID into :xID do begin select Summ0 from MainPrice_CalcDelPart(:xID) into :dpS; dpSum = :dpSum + :dpS; end Summ0 = -:Summa0 / (:Price - :AmSumma0 - :aSumma0 + :cSumma0) * (:aSumma0 + :AmSumma0 - :dpSum); end end if (:Excl1 = 0 or :Excl1 is Null) then begin -- износ -- текущее изменение стоимости Summa1 = :Summa; -- Сумма Износа AmDate = DAT_; if (:Period1 = 0) then Select xDate from f_MonthLastDay(:DAT_) into :AmDate; if (:Period1 = 1) then Select xDate from f_Quarter_End(:DAT_) into :AmDate; if (:Period1 = 2) then Select xDate from f_Year_End(:DAT_) into :AmDate; if (:Period1 = 0) then begin Select xDate from f_monthfirstday(:dat_) into :AmDatePrev; Select xDate from f_MonthLastDay(:AmDatePrev-1.0) into :AmDatePrev; end if (:Period1 = 1) then begin Select xDate from f_Quarter_Beg(:DAT_) into :AmDatePrev; Select xDate from f_Quarter_End(:AmDatePrev-1.0) into :AmDatePrev; end if (:Period1 = 2) then begin Select xDate from f_Year_Beg(:DAT_) into :AmDatePrev; Select xDate from f_Year_End(:AmDatePrev-1.0) into :AmDatePrev; end Select Sum(s.Summa) from MainAmSlv s, MainAmMst M where s.MainMeanID = :MainID and M.ID=S.MstID and M.DAT_ <= :AmDate and M.GrpTyp=1 into :aSumma1; if (:aSumma1 is null) then aSumma1 = 0.0; -- изменение стоимости (износ) Select Sum(MP.Summa) from MainPrice MP where MP.MainID = :MainID and (MP.Excl1 = 0 or MP.Excl1 is Null) and MP.DAT_ <= :AmDatePrev into :cSumma1; if (:cSumma1 is Null) then cSumma1 = 0.0; -- износ ликвидируемой части Summ1 = 0.0; if ((:Price - :AmSumma1 - :aSumma1) <> 0.0) then begin dpSum = 0.0; for select ID from MainPrice where MainID = :MainID and DAT_ < :Dat_1 and DelPart = 1 and (Excl1 = 0 or Excl1 is Null) order by DAT_, ID into :xID do begin select Summ1 from MainPrice_CalcDelPart(:xID) into :dpS; dpSum = :dpSum + :dpS; end Summ1 = -:Summa1 / (:Price - :AmSumma1 - :aSumma1 + :cSumma1) * (:aSumma1 + :AmSumma1 - :dpSum); end end end suspend; end^ ALTER PROCEDURE MBPDGV_DELACCNREC ( ID INTEGER) AS Declare Variable AccnKey integer; Declare Variable RecID integer; begin for Select ID, AccnKey from MbpDgAc where DgvKey=:ID into :RecID, :AccnKey do begin Delete From MbpDgAc where ID=:RecID; Delete From AccnProv where ID=:AccnKey; end end^ ALTER PROCEDURE MBPDGV_GENACCNREC ( ID INTEGER) AS Declare Variable Dat_ Date; Declare Variable Nbr Varchar(20); Declare Variable Podr Integer; Declare Variable PodrID Integer; Declare Variable OperID Integer; Declare Variable DgvID Integer; Declare Variable Typ Integer; Declare Variable Dt Varchar(5); Declare Variable Kt Varchar(5); Declare Variable Dt1 Integer; Declare Variable Kt1 Integer; Declare Variable Dt5 Integer; Declare Variable Kt5 Integer; Declare Variable SumTyp Integer; Declare Variable Proc Double Precision; Declare Variable Summa Double Precision; Declare Variable AccnKey Integer; Declare Variable Comment Varchar(255); Declare Variable UserName Varchar(20); Declare Variable Oper Integer; Declare Variable Storno Integer; Declare Variable DtPrt Integer; Declare Variable DtObj Integer; Declare Variable KtPrt Integer; Declare Variable KtObj Integer; declare variable CurOrgnID integer; begin DgvID = Null; select ID, Dat_, Nbr, Podr, PodrID, OperID, Typ, Comment,UserName, OurOrgnID from MbpDgv Where ID=:ID into :DgvID,:Dat_,:Nbr,:Podr,:PodrID,:OperID,:Typ,:Comment,:UserName, :CurOrgnID; if (:DgvID is Null) then Exit; execute procedure MbpDgv_DelAccnRec :ID; if (:OperID is Null or :OperID=0) then Exit; Select Oper from AcOprLst where ID=:OperID into :Oper; if (:Oper is Null) then Exit; for Select Dt,Kt,SumTyp,Proc,DtPrt,DtObj,KtPrt,KtObj,Storno from StorAccn where OperID=:OperID into :Dt,:Kt,:SumTyp,:Proc,:DtPrt,:DtObj,:KtPrt,:KtObj,:Storno do begin Summa = 0.0; if(:Typ=0 or :Typ=1 or :Typ=2 or :Typ=3) then Select Sum(Price*Quant) from MbpGdd where DgvID=:ID into :Summa; Dt1 = Null; Kt1 = Null; Dt5 = Null; Kt5 = Null; Select A1, A5 from AccnPlan where Accn=:Dt into :Dt1, :Dt5; Select A1, A5 from AccnPlan where Accn=:kt into :Kt1, :Kt5; if(:Dt1 <> 0 and :Dt1 is not Null) then Dt1 = :CurOrgnID; else Dt1 = Null; if(:Kt1 <> 0 and :Kt1 is not Null) then Kt1 = :CurOrgnID; else Kt1 = Null; if(:Dt5 <> 0 and :Dt5 is not Null) then Dt5 = :PodrID; else Dt5 = Null; if(:Kt5 <> 0 and :Kt5 is not Null) then Kt5 = :Podr; else Kt5 = Null; if(:Summa <> 0.0 and :Summa is not Null) then begin if(:Storno = 1) then Summa=-:Summa; If(:Proc <> 0.0 and :Proc is not Null) then Summa = :Summa / 100.00 * :Proc; AccnKey = Gen_ID(AccnProv_ID, 1); Insert into AccnProv(ID, OurOrgnID, Dat_, Document, Dt, Kt, Summa, Comment, Dt1, Kt1, Dt5, Kt5, Oper,OperID,DocID,UserName,DtPrt,DtObj,KtPrt,KtObj) Values(:AccnKey,:CurOrgnID,:Dat_,:Nbr,:Dt,:Kt,:Summa,:Comment, :Dt1, :Kt1, :Dt5, :Kt5, :Oper,:OperID,:ID,:UserName,:DtPrt,:DtObj,:KtPrt,:KtObj); Insert Into MbpDgAc (ID, DgvKey, AccnKey) Values(Gen_ID(MbpDgAc_ID,1),:ID,:AccnKey); end end end^ ALTER PROCEDURE MBPDGV_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(MbpDgv_ID, 1); end^ ALTER PROCEDURE MBPMEAN_MOVEGOODS ( PODRID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( MBPID INTEGER, PRICE DOUBLE PRECISION, QBEG DOUBLE PRECISION, QINP DOUBLE PRECISION, QOUT DOUBLE PRECISION, QEND DOUBLE PRECISION) AS begin -- текущий остаток for select D.MbpID, D.Price, cast(0.0 as Double precision), cast(0.0 as Double precision), cast(0.0 as Double precision), D.Quant from MbpGdd D, MbpDgv DD where ((DD.Podr = :PodrID and DD.Typ = 0) or (DD.PodrID = :PodrID and DD.Typ = 1)) and D.DgvID = DD.ID and D.Quant <> 0.0 union All -- минус - приход после окончания периода select D.MbpID, D.Price, cast(0.0 as Double precision), cast(0.0 as Double precision), cast(0.0 as Double precision), -D.Source from MbpGdd D, MbpDgv DD where ((DD.Podr = :PodrID and DD.Typ = 0) or (DD.PodrID = :PodrID and DD.Typ = 1)) and DD.DAT_ > :eDate and D.DgvID = DD.ID and D.Quant <> 0.0 union All -- плюс - расход после окончания периода select D.MbpID, D.Price, cast(0.0 as Double precision), cast(0.0 as Double precision), cast(0.0 as Double precision), D.Source from MbpGdd D, MbpDgv DD where ((DD.Podr = :PodrID and DD.Typ = 2) or (DD.Podr = :PodrID and DD.Typ = 1)) and DD.DAT_ > :eDate and D.DgvID = DD.ID and D.Quant <> 0.0 union All -- приход за период select D.MbpID, D.Price, cast(0.0 as Double precision), D.Source, cast(0.0 as Double precision), cast(0.0 as Double precision) from MbpGdd D, MbpDgv DD where ((DD.Podr = :PodrID and DD.Typ = 0) or (DD.PodrID = :PodrID and DD.Typ = 1)) and DD.DAT_ >= :bDate and DD.DAT_ <= :eDate and D.DgvID = DD.ID and D.Quant <> 0.0 union All -- расход за период select D.MbpID, D.Price, cast(0.0 as Double precision), cast(0.0 as Double precision), D.Source, cast(0.0 as Double precision) from MbpGdd D, MbpDgv DD where ((DD.Podr = :PodrID and DD.Typ = 2) or (DD.Podr = :PodrID and DD.Typ = 1)) and DD.DAT_ >= :bDate and DD.DAT_ <= :eDate and D.DgvID = DD.ID and D.Quant <> 0.0 into :MbpID, :Price, :qBeg, :qInp, :qOut, :qEnd do begin qBeg = :qEnd - :qInp + :qOut; suspend; end end^ ALTER PROCEDURE NBR_GEN_NBR ( NAME VARCHAR(20), ORGNID INTEGER) RETURNS ( ID INTEGER) AS begin select Cast(val as integer) from SysConst_GetValue(:OrgnID, :Name) into :ID; if (:ID is Null) then ID = 0; if (:ID < 0) then exit; ID = :ID + 1; execute procedure SysConst_SetValue(:OrgnID, :Name, :ID); suspend; end^ ALTER PROCEDURE ORGN_BLNS_KREDIT ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP, DAYS INTEGER) RETURNS ( ORGID INTEGER, MGRID INTEGER, PRSID INTEGER, DGVID INTEGER, BI DOUBLE PRECISION, BS DOUBLE PRECISION, SI DOUBLE PRECISION, SS DOUBLE PRECISION, CALCDAYS INTEGER, CDAYS INTEGER, BCDATE TIMESTAMP, SDATE TIMESTAMP) AS declare variable OrgnInfoID integer; declare variable OMAXTIME integer; declare variable OIMAXTIME integer; declare variable dSumma double precision; declare variable iSumma double precision; declare variable dDate TimeStamp; declare variable sSumma double precision; declare variable S double precision; declare variable S1 double precision; declare variable bsDate TimeStamp; begin if (:OrgnID is Null or :OrgnID=0) then Select ID From Orgn WHERE OURORGN=1 INTO :OrgnID; for select DD.ID, DD.NameID, DD.Manager, OI.ID, DD.Out_Date, CoalEsce(O.MAXTIME, 0), CoalEsce(OI.MAXTIME, 0), DD.PrsnID from StorList S JOIN DGVDT DD ON DD.Stor=S.ID AND DD.Manager is not Null AND DD.TYP=0 JOIN ORGN O ON O.ID=DD.NameID LEFT JOIN ORGNINFO OI ON OI.ID=DD.ORGNINFOID WHERE S.OurOrgnID = :ORGNID AND DD.OUT_DATE is not Null and (DD.SALEDATE IS NULL or DD.SALEDATE >= :BDATE) INTO :DgvID, :OrgID, :MgrID, :OrgnInfoID, :dDate, :OMAXTIME, :OIMAXTIME, :PrsID do begin CalcDays = :Days; if (:OrgnInfoID is not Null and :OIMaxTime > 0) then CalcDays = :OIMaxtime; else if (:OMaxTime > 0) then CalcDays = :OMaxTime; -- bSumma = 0.0; -- Summa = 0.0; -- eSumma = 0.0; dSumma = 0.0; iSumma = 0.0; select sum(D.Price * D.Quant), Sum(K.Price * D.Quant) from GddDt D Join GddKt K on K.ID=D.GddKey WHERE D.DgvKey=:DgvID into :dSumma, :iSumma; s = 0.0; if (:dDate + :CalcDays < :bDate) then begin s = :dSumma; s1 = 0.0; select coalesce(sum(sc.summa),0.0) from salecros sc, sale s where sc.dgvkey=:dgvid and s.id=sc.salekey and s.dat_ <= :bDate into :s1; s = :s - :s1; end BS = :s; -- начальная задолженность if (:dSumma != 0) then BI = :BS / :dSumma * :iSumma; else BI = BS; bcDate = :bDate; -- дата возникновения задолженности if (:dDate + :CalcDays <= :eDate) then begin -- задолженность в периоде if (:dDate + :CalcDays >= :bDate and :dDate + :CalcDays <= :eDate) then begin bcDate = :dDate + :CalcDays; s = :dSumma; s1 = 0.0; select coalesce(sum(sc.summa),0.0) from salecros sc, sale s where sc.dgvkey=:dgvid and s.id=sc.salekey and s.dat_ - :CalcDays <= :dDate into :s1; s = :s - :s1; end if (exists(select S.DAT_, SC.SUMMA FROM SaleCros SC JOIN Sale S ON S.ID=SC.SaleKey WHERE SC.DgvKey = :DgvID and s.dat_ > :bcDate and s.dat_ <= :eDate and s.dat_ > :dDate)) then begin -- оплаты в периоде bsDate = :bcDate; for select S.DAT_, SC.SUMMA FROM SaleCros SC JOIN Sale S ON S.ID=SC.SaleKey WHERE SC.DgvKey = :DgvID and s.dat_ > :bcDate and s.dat_ <= :eDate and s.dat_ > :dDate ORDER BY S.dat_, s.id into :sDate, :sSumma do begin cDays = :sDate-:bsDate; SS = :s; if (:dSumma != 0) then SI = :SS / :dSumma * :iSumma; else SI = SS; suspend; s = :s - :sSumma; bsDate = :sDate; end cDays = :eDate-:sDate+1; SS = :s; if (:dSumma != 0) then SI = :SS / :dSumma * :iSumma; else SI = SS; suspend; end else begin -- нет оплат в периоде cDays = :eDate - :bcDate+1; SS = :s; if (:dSumma != 0) then SI = :SS / :dSumma * :iSumma; else SI = SS; suspend; end end end end^ ALTER PROCEDURE ORGN_GRP_NEWID RETURNS ( ID INTEGER) AS begin ID= Gen_ID(Orgn_Grp_ID,1); end^ ALTER PROCEDURE ORGN_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(orgn_id,1); end^ ALTER PROCEDURE ORGN_REPLACEANDREMOVE ( KEEPID INTEGER, DELID INTEGER) AS declare Variable KID integer; Declare Variable DID integer; begin -- ? разные записи if (:KeepID=:DelID) then exit; -- существуют ли записи и действительно ли коды ОКПО одинаковы Select G1.ID, G2.ID from Orgn G1, Orgn G2 where G1.ID=:KEEPID and G2.ID=:DELID and G1.OkpoCode=G2.OkpoCode into :KID, :DID; if (:KID is Null) then exit; if (:DID is Null) then exit; -- заменяем DELID на KEEPID Update AccnProv set dt1 = :KeepID where dt1 = :DelID; Update AccnProv set kt1 = :KeepID where kt1 = :DelID; Update BookSlDt set NameID = :KeepID where NameID = :DelID; Update BookSlKt set NameID = :KeepID where NameID = :DelID; Update Contacts set OrgnID = :KeepID where OrgnID = :DelID; Update CsDtKt set NameID = :KeepID where NameID = :DelID; Update CurrStor set OrgnID = :KeepID where OrgnID = :DelID; Update CurrStorDtKt set NameID = :KeepID where NameID = :DelID; Update DgvDtUD set OrgnID = :KeepID where OrgnID = :DelID; Update DgvDtU set NameID = :KeepID where NameID = :DelID; Update DgvKtU set NameID = :KeepID where NameID = :DelID; Update DgvDt set NameID = :KeepID where NameID = :DelID; Update DgvDt set SNameID = :KeepID where SNameID = :DelID; Update DgvKt set NameID = :KeepID where NameID = :DelID; Update DkBill set OrgnID = :KeepID where OrgnID = :DelID; Update DocmDocDocument set OrgnID = :KeepID where OrgnID = :DelID; Update DocmTask set OrgnID = :KeepID where OrgnID = :DelID; Update DocmTaskFinance set OrgnID = :KeepID where OrgnID = :DelID; Update GddKtDDU set OrgnID = :KeepID where OrgnID = :DelID; Update GddDtDDU set NameID = :KeepID where NameID = :DelID; Update Hb_Vehicle set OrgnID=:KeepID where OrgnID = :DelID; Update KassData set OrgnID = :KeepID where OrgnID = :DelID; Update KassAvData set NameID = :KeepID where NameID = :DelID; Update Orgn set NalOrgnID = :KeepID where NalOrgnID = :DelID; Update OrgnBankAccn set OrgnID = :KeepID where OrgnID = :DelID; Delete from OrgnGrpRef where OrgnID = :DelID; -- Update OrgnGrpRef set OrgnID = :KeepID where OrgnID = :DelID; Update OrgnInfo set OrgnID = :KeepID where OrgnID = :DelID; Update OrgnPriceList set OrgnID = :KeepID where OrgnID = :DelID; Update Personal set NalOrgnID = :KeepID where NalOrgnID = :DelID; Update PrsnCard set NalOrgnID = :KeepID where NalOrgnID = :DelID; Update PrsnOper set Orgn_ID = :KeepID where Orgn_ID = :DelID; Update Sc_CardT set OrgnID = :KeepID where OrgnID = :DelID; Update Sale set NameID = :KeepID where NameID = :DelID; Update SaleKt set NameID = :KeepID where NameID = :DelID; Update StorZakazDt set OrgnID = :KeepID where OrgnID = :DelID; Update Sc_CardT set OrgnID = :KeepID where OrgnID = :DelID; Update TradePoint set OrgnID = :KeepID where OrgnID = :DelID; Update VkSl set OrgnSLID = :KeepID where OrgnSLID = :DelID; Update VkSl set OrgnDTID = :KeepID where OrgnDTID = :DelID; Update VkSl set OrgnKTID = :KeepID where OrgnKTID = :DelID; Update VkSl set OrgnVKDTID = :KeepID where OrgnVKDTID = :DelID; Update VkSl set OrgnVKKTID = :KeepID where OrgnVKKTID = :DelID; Update ZpltDecr set OrgnID = :KeepID where OrgnID = :DelID; Update ZpltDecrFot set OrgnID = :KeepID where OrgnID = :DelID; Update ZpltJobGrpMst set OrgnID = :KeepID where OrgnID = :DelID; Update ZpltJobPrsnMst set OrgnID = :KeepID where OrgnID = :DelID; Update BDG_PAPER set Orgn_ID = :KeepID where Orgn_ID = :DelID; MERGE INTO DK_BNS_ORGN bo USING (SELECT * FROM DK_BNS_ORGN WHERE ORGN_ID = :DelID) bot ON (bo.ORGN_ID = :KeepID AND bo.DK_BNS_ID = bot.DK_BNS_ID) WHEN MATCHED THEN UPDATE SET bo.CNT = bo.CNT + bot.CNT WHEN NOT MATCHED THEN INSERT (DK_BNS_ID, ORGN_ID, CNT) VALUES(bot.DK_BNS_ID, :KeepID, bot.CNT); MERGE INTO DK_BNS_ORGN_LOG bol USING ( SELECT bon.ID NewBOId, boo.ID OldBOId FROM DK_BNS_ORGN bon JOIN DK_BNS_ORGN boo ON boo.DK_BNS_ID = bon.DK_BNS_ID AND boo.ORGN_ID = :DelID WHERE bon.ORGN_ID = :KeepID) bo ON (bol.DK_BNS_ORGN_ID = bo.OldBOId) WHEN MATCHED THEN UPDATE SET bol.DK_BNS_ORGN_ID = bo.NewBOId; DELETE FROM DK_BNS_ORGN WHERE ORGN_ID = :DelID; Delete From Orgn where ID = :DelID; end^ ALTER PROCEDURE ORGNACCN_NEWID RETURNS ( ID INTEGER) AS begin ID= Gen_ID(OrgnAccn_ID, 1); end^ ALTER PROCEDURE ORGNBANKACCN_NEWID RETURNS ( ID INTEGER) AS begin ID=Gen_ID(OrgnBankAccn_ID,1); end^ ALTER PROCEDURE ORGNGRPREF_NEWID RETURNS ( ID INTEGER) AS begin ID= Gen_ID(OrgnGrpRef_ID,1); end^ ALTER PROCEDURE ORGNINFO_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(orgninfo_id,1); end^ ALTER PROCEDURE PODRLIST_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(PODRLIST_ID,1); end^ ALTER PROCEDURE PRICEGOODS_NEWID RETURNS ( ID INTEGER) AS begin id = Gen_ID(PriceGoods_ID,1); end^ ALTER PROCEDURE PRICELIST_NEWID RETURNS ( ID INTEGER) AS begin id = Gen_ID(PriceList_ID,1); end^ ALTER PROCEDURE PRICELIST_ORGN_PRICE ( GODSID INTEGER, ORGNID INTEGER, STORID INTEGER, IDKT INTEGER) RETURNS ( PRICE DOUBLE PRECISION, PRICEID INTEGER, PRCODE VARCHAR(230)) AS declare variable typ integer; declare variable pgid integer; declare variable proc double precision; declare variable Rnd double precision; declare variable StorTyp integer; begin Price = Null; PriceID = Null; PrCode = Null; Rnd = Null; -- есть ли производные прайсы, берем с наименьшей ценой с учетом пересчета % скидки Select first 1 S.Typ from StorList S where S.ID = :StorID into :StorTyp; StorTyp = CoalEsce(:StorTyp, 0); if (:stortyp <> 1) then begin select first 1 cast(0 as integer) Typ, pg.price - (pg.price * p.proc / 100.00) as price, p.id as priceid, pg.id as pgid, p.proc, p.Rnd, p.Code as PrCode from orgnpricelist o join pricelist p on p.id = o.prlsid join pricelist p1 on p1.id = p.basepriceid join pricegoods pg on pg.priceid = p1.id and pg.gdskey = :GodsID where o.orgnid = :OrgnID and p.baseprice = 0 and p.basepriceid is not null and (:StorTyp <> 1 or (:StorTyp=1 and p.price_Rozn=1) ) order by 1, 2 into :typ, :price, :PriceID, :pgid, :proc, :Rnd, :prcode; end else begin -- розничный склад select first 1 cast(0 as integer) Typ, k.price - (k.price * p.proc / 100.00) as price, p.id as priceid, Null as pgid, p.proc, p.Rnd, p.Code as PrCode from orgnpricelist o join pricelist p on p.id = o.prlsid join GddKt K on K.ID=:IdKt where o.orgnid = :OrgnID and p.price_Rozn=1 order by 1, 2 into :typ, :price, :PriceID, :pgid, :proc, :Rnd, :prcode; end if (:priceid is not null) then begin -- есть производный прайс if (:StorTyp = 1) then begin -- склад в рознице, берем вх. цену (цену реализации) на складе -- select Price from GddKt where ID=:IDKT into :Price; -- Price = :Price - (:Price * :Proc / 100.00); end end if (:PriceID is Null and :StorTyp <> 1) then begin -- производного прайса нет, есть ли базовые select first 1 cast(0 as integer) as Typ, pg.price, p.id as priceid, pg.id as pgid, p.proc, p.rnd, p.Code as PrCode from orgnpricelist o join pricelist p on p.id = o.prlsid join pricegoods pg on pg.priceid = p.id and pg.gdskey = :GodsID where o.orgnid = :OrgnID and p.baseprice = 1 order by 1, 2 into :typ, :Price, :PriceID, :PgId, :Proc, :Rnd, :PrCode; end if (PriceID is Null) then begin -- к заказчику не привязаны никакие прайсы if (:StorTyp = 1) then begin -- склад в рознице, берем вх. цену (цену реализации) на складе select Price from GddKt where ID=:IDKT into :Price; end else begin Select k1price from Goods where ID=:GodsID into :Price; end end Price = CoalEsce(:Price, 0.0); Rnd = CoalEsce(:Rnd, 0.0); if (:Rnd = 0.0) then Rnd = 0.01; -- степень округления по умолчанию 1 коп. Price = Cast((Price / :Rnd) as Integer) * :Rnd; suspend; end^ ALTER PROCEDURE PRSN_INIT_OPERTYPE AS Declare Variable ID integer; begin ID = Null; select Min(ID) from PrsnOperType into :ID; if (:ID is Null) then begin /* SET GENERATOR GEN_PRSNOPERTYPE_ID TO 0; */ Select Gen_ID(Gen_PrsnOperType_ID, -Gen_ID(GEN_PRSNOPERTYPE_ID, 0)) from rdb$database into :ID; INSERT INTO PRSNOPERTYPE (ID, NAME, CODE, ATYPE, STRVAL1_NAME, STRVAL2_NAME, INTVAL1_NAME, ORGNID_NAME, POSTID_NAME, USERNAME, LASTEDIT) VALUES (NULL, 'Собеседование', '01', 0, NULL, NULL, NULL, NULL, 'Должность', NULL, NULL); INSERT INTO PRSNOPERTYPE (ID, NAME, CODE, ATYPE, STRVAL1_NAME, STRVAL2_NAME, INTVAL1_NAME, ORGNID_NAME, POSTID_NAME, USERNAME, LASTEDIT) VALUES (NULL, 'Командировка', '02', 0, 'Номер командировочного', NULL, NULL, 'Организация', NULL, NULL, NULL); INSERT INTO PRSNOPERTYPE (ID, NAME, CODE, ATYPE, STRVAL1_NAME, STRVAL2_NAME, INTVAL1_NAME, ORGNID_NAME, POSTID_NAME, USERNAME, LASTEDIT) VALUES (NULL, 'Отпуск', '03', 0, 'Тип отпуска', NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO PRSNOPERTYPE (ID, NAME, CODE, ATYPE, STRVAL1_NAME, STRVAL2_NAME, INTVAL1_NAME, ORGNID_NAME, POSTID_NAME, USERNAME, LASTEDIT) VALUES (NULL, 'Мероприятие', '04', 0, 'Название', NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO PRSNOPERTYPE (ID, NAME, CODE, ATYPE, STRVAL1_NAME, STRVAL2_NAME, INTVAL1_NAME, ORGNID_NAME, POSTID_NAME, USERNAME, LASTEDIT) VALUES (NULL, 'Поощрение', '05', 0, 'Меры', 'Запись в трудовой', NULL, NULL, NULL, NULL, NULL); INSERT INTO PRSNOPERTYPE (ID, NAME, CODE, ATYPE, STRVAL1_NAME, STRVAL2_NAME, INTVAL1_NAME, ORGNID_NAME, POSTID_NAME, USERNAME, LASTEDIT) VALUES (NULL, 'Наказание', '06', 0, 'Меры', 'Запись в трудовой', NULL, NULL, NULL, NULL, NULL); INSERT INTO PRSNOPERTYPE (ID, NAME, CODE, ATYPE, STRVAL1_NAME, STRVAL2_NAME, INTVAL1_NAME, ORGNID_NAME, POSTID_NAME, USERNAME, LASTEDIT) VALUES (NULL, 'Обучение', '07', 0, 'Цель обучения', NULL, NULL, 'Обучающая организация', NULL, NULL, NULL); INSERT INTO PRSNOPERTYPE (ID, NAME, CODE, ATYPE, STRVAL1_NAME, STRVAL2_NAME, INTVAL1_NAME, ORGNID_NAME, POSTID_NAME, USERNAME, LASTEDIT) VALUES (NULL, 'Изменение фамилии', '08', 0, 'Старая фамилия', 'Новая фамилия', NULL, NULL, NULL, NULL, NULL); end suspend; end^ ALTER PROCEDURE PRSNMOVE_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(PrsnMove_ID, 1); end^ ALTER PROCEDURE PRSNMOVE_UPDATEPRSN ( PRSNID INTEGER) AS declare variable MoveID integer; declare variable PodrPostID integer; declare variable PodrID integer; declare variable PostID integer; declare variable InpDate TimeStamp; declare variable OutDate TimeStamp; declare variable aDate TimeStamp; declare variable Typ integer; declare variable WTyp integer; declare variable FotGrpID integer; declare variable TabelID integer; declare variable DayWTime double precision; begin InpDate = Null; OutDate = Null; PodrID = Null; PostID = Null; for Select ID, DAT_, Typ, PodrPostID, WTyp, FotGrpID, TabelID, DayWTime from PrsnMove where PrsnID = :PrsnID order by DAT_, ID into :MoveID, :aDate, :Typ, :PodrPostID, :WTyp, :FotGrpID, :TabelID, :DayWTime do begin if (:Typ = 0) then -- прием на работу InpDate = :aDate; if (:Typ = 2) then -- увольнение OutDate = :aDate; if (:Typ <> 2 and :OutDate is not Null) then OutDate = Null; end Select PodrID, PostID from PodrPost where ID = :PodrPostID into :PodrID, :PostID; Update Personal Set PostID = :PostID, PodrID = :PodrID, Inp_Date=:InpDate, Out_Date = :OutDate, WTyp=:WTyp, FotGrpID=:FotGrpID, TabelID=:TabelID, DayWTime=:DayWTime where ID = :PrsnID; /* and (PostID <> :PostID or PodrID <> :PodrID or Inp_Date <> :InpDate or Out_Date <> :OutDate); + проверка на null */ end^ ALTER PROCEDURE PRSNPOST_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(PrsnPost_ID, 1); end^ ALTER PROCEDURE RDB$CHECK_METADATA RETURNS ( TABLE_NAME CHAR(31) CHARACTER SET UNICODE_FSS, FIELD_NAME CHAR(31) CHARACTER SET UNICODE_FSS, NAME1 CHAR(31) CHARACTER SET UNICODE_FSS, NAME2 CHAR(31) CHARACTER SET UNICODE_FSS) AS begin for select table_name, field_name, name1, name2 from rdb$fix_metadata ('UTF8') into :table_name, :field_name, :name1, :name2 do begin suspend; end end^ ALTER PROCEDURE RDB$FIX_METADATA ( CHARSET VARCHAR(31) CHARACTER SET ASCII) RETURNS ( TABLE_NAME CHAR(31) CHARACTER SET UNICODE_FSS, FIELD_NAME CHAR(31) CHARACTER SET UNICODE_FSS, NAME1 CHAR(31) CHARACTER SET UNICODE_FSS, NAME2 CHAR(31) CHARACTER SET UNICODE_FSS) AS declare variable system integer; declare variable field1 char(31) character set unicode_fss; declare variable field2 char(31) character set unicode_fss; declare variable has_records integer; begin for select rf.rdb$relation_name, rf.rdb$field_name, (select 1 from rdb$relation_fields where rdb$relation_name = rf.rdb$relation_name and rdb$field_name = 'RDB$SYSTEM_FLAG'), case rdb$relation_name when 'RDB$CHARACTER_SETS' then 'RDB$CHARACTER_SET_NAME' when 'RDB$COLLATIONS' then 'RDB$COLLATION_NAME' when 'RDB$EXCEPTIONS' then 'RDB$EXCEPTION_NAME' when 'RDB$FIELDS' then 'RDB$FIELD_NAME' when 'RDB$FILTERS' then 'RDB$INPUT_SUB_TYPE' when 'RDB$FUNCTIONS' then 'RDB$FUNCTION_NAME' when 'RDB$GENERATORS' then 'RDB$GENERATOR_NAME' when 'RDB$INDICES' then 'RDB$INDEX_NAME' when 'RDB$PROCEDURES' then 'RDB$PROCEDURE_NAME' when 'RDB$PROCEDURE_PARAMETERS' then 'RDB$PROCEDURE_NAME' when 'RDB$RELATIONS' then 'RDB$RELATION_NAME' when 'RDB$RELATION_FIELDS' then 'RDB$RELATION_NAME' when 'RDB$ROLES' then 'RDB$ROLE_NAME' when 'RDB$TRIGGERS' then 'RDB$TRIGGER_NAME' else NULL end, case rdb$relation_name when 'RDB$FILTERS' then 'RDB$OUTPUT_SUB_TYPE' when 'RDB$PROCEDURE_PARAMETERS' then 'RDB$PARAMETER_NAME' when 'RDB$RELATION_FIELDS' then 'RDB$FIELD_NAME' else NULL end from rdb$relation_fields rf join rdb$fields f on (rf.rdb$field_source = f.rdb$field_name) where f.rdb$field_type = 261 and f.rdb$field_sub_type = 1 and f.rdb$field_name <> 'RDB$SPECIFIC_ATTRIBUTES' and rf.rdb$relation_name starting with 'RDB$' order by rf.rdb$relation_name into :table_name, :field_name, :system, :field1, :field2 do begin name1 = null; name2 = null; if (field1 is null and field2 is null) then begin has_records = null; execute statement 'select first 1 1 from ' || table_name || ' where ' || field_name || ' is not null' || iif(system = 1, ' and coalesce(rdb$system_flag, 0) in (0, 3)', '') into :has_records; if (has_records = 1) then begin suspend; execute statement 'update ' || table_name || ' set ' || field_name || ' = ' || ' cast(cast(' || field_name || ' as blob sub_type text character set none) as ' || ' blob sub_type text character set ' || charset || ') ' || iif(system = 1, 'where coalesce(rdb$system_flag, 0) in (0, 3)', ''); end end else begin for execute statement 'select ' || field1 || ', ' || coalesce(field2, ' null') || ' from ' || table_name || ' where ' || field_name || ' is not null' || iif(system = 1, ' and coalesce(rdb$system_flag, 0) in (0, 3)', '') into :name1, :name2 do begin suspend; execute statement 'update ' || table_name || ' set ' || field_name || ' = ' || ' cast(cast(' || field_name || ' as blob sub_type text character set none) as ' || ' blob sub_type text character set ' || charset || ') ' || ' where ' || field1 || ' = ''' || name1 || '''' || iif(name2 is null, '', ' and ' || field2 || ' = ''' || name2 || ''''); end end end end^ ALTER PROCEDURE REGION_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(region_id, 1); end^ ALTER PROCEDURE SALE_DELACCNREC ( ID INTEGER) AS declare variable accnkey integer; declare variable saleaccnkey integer; begin for select id, accnkey from saleaccn where salekey=:id into :saleaccnkey, :accnkey do begin delete from saleaccn where id=:saleaccnkey; delete from accnprov where id=:accnkey; end end^ ALTER PROCEDURE SALE_GENACCNREC ( ID INTEGER) AS declare variable summa double precision; declare variable summ double precision; declare variable nameid integer; declare variable comment varchar(255); declare variable typ integer; declare variable dt varchar(5); declare variable kt varchar(5); declare variable accn varchar(5); declare variable sumtyp integer; declare variable procnds Double Precision; declare variable dat_ date; declare variable accnkey integer; declare variable a1 integer; Declare Variable a3 integer; Declare Variable a6 integer; declare variable dt1 integer; Declare Variable dt3 integer; declare variable kt1 integer; Declare Variable kt3 Integer; declare variable dt6 integer; Declare Variable kt6 Integer; declare variable accnsumma Double Precision; declare variable nbr varchar(20); declare variable username varchar(20); Declare Variable OperID integer; Declare Variable OpID integer; Declare Variable Oper Integer; Declare Variable PrsnID integer; Declare Variable Storno Integer; Declare Variable DtPrt Integer; Declare Variable DtObj Integer; Declare Variable KtPrt Integer; Declare Variable KtObj Integer; declare variable Proc Double Precision; declare variable OurAcnID integer; declare variable CurrTyp Integer; declare variable Curs Double Precision; declare variable CSumma Double Precision; declare variable CTyp Integer; declare variable OurOrgnID integer; declare variable OrgAcnID integer; declare variable dt8 integer; Declare Variable dt9 integer; declare variable kt8 integer; Declare Variable kt9 Integer; declare variable VL1 integer; declare Variable VL2 Integer; declare variable DateTyp integer; declare variable CalcNds Integer; declare variable NdsProc double precision; declare variable Nds double precision; begin select dat_,summa,summ,nameid,comment,typ,nbr,username, VL1, VL2, OperID,PrsnID,OurAccnID, AccnID, CTyp, Curs, CSumma, CurrTyp, OurOrgnID, CalcNds, NdsProc, Nds from sale where ID=:ID into :dat_,:summa,:summ,:nameid,:comment,:typ,:nbr,:username, :VL1, :VL2, :OperID,:PrsnID,:OurAcnID, :OrgAcnID, :CTyp,:Curs,:CSumma,:CurrTyp, :OurOrgnID, CalcNds, NdsProc, Nds; if(:CTyp<>1) then begin CurrTyp=Null; Curs=1.0; CSumma=0.0; end Oper = 6; ProcNDS = 20; select cast (VAL as Double Precision) from SysConst where OurOrgnID = :OurOrgnID and name='ProcNDS' into :ProcNds; if (:CalcNds is Null) then begin -- по умолчанию (для старых записей) if (:CTyp = 1) then begin -- в иностранной валюте NdsProc = 0.0; Nds = 0.0; end else begin -- в национальной валюте NdsProc = :ProcNds; Nds = :Summa / (100 + :NdsProc) * :NdsProc; end end for select ID, dt,kt,sumtyp,storno,DtPrt,DtObj,KtPrt,KtObj,Proc, AccnDate from storaccn where operID=:operID and Oper=:Oper into :OpID, :dt,:kt,:sumtyp,:Storno,:DtPrt,:DtObj,:KtPrt,:KtObj,:Proc, :DateTyp do begin dt1=null; dt6=null; kt1=null; kt6=null; select accn, a1, a3, a6, a8, a9 from accnplan where accn=:dt into :accn,:a1,:a3,:a6, :dt8, :dt9; if ((:a1 is not null) and (:a1<>0)) then dt1=:nameid; else dt1=Null; if ((:a3 is not null) and (:a3<>0)) then dt3=:PrsnID; else dt3=Null; if ((:a6 is not null) and (:a6<>0)) then dt6=:OurAcnID; else dt6=Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; select accn, a1, a3, a6, a8, a9 from accnplan where accn=:kt into :accn,:a1,:a3,:a6, :kt8, :kt9; if ((:a1 is not null) and (:a1<>0)) then kt1=:nameid; else kt1=Null; if ((:a3 is not null) and (:a3<>0)) then kt3=:PrsnID; else kt3=Null; if ((:a6 is not null) and (:a6<>0)) then kt6=:OrgAcnID; else kt6=Null; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if (:Summa<>0.0) then begin AccnKey = Gen_ID(AccnProv_ID, 1); AccnSumma = :Summa; -- сумма платежа с НДС if (:SumTyp = 0) then AccnSumma = :Summa; -- НДС if (:SumTyp = 1) then AccnSumma = :Nds; --accnsumma=:summa*:procnds/(100.0+:procnds); -- сумма без НДС if (:SumTyp = 2) then AccnSumma = :Summa - :Nds; -- accnsumma=summa-(:summa*:procnds/(100.0+:procnds)); -- остаток суммы if (:SumTyp = 3) then AccnSumma=:Summ; -- курсовая разница if (:DateTyp in (1, 2, 3) or :SumTyp = 4) then begin Execute Procedure Sale_GenAccnRecSale (:ID, :OpID); AccnSumma = 0.0; end if (:AccnSumma <> 0.0) then begin if(:Storno <> 0) then AccnSumma=-:AccnSumma; if(:Proc <> 0.0 and :Proc is not Null) then AccnSumma = :AccnSumma / 100.0 * :Proc; if(:Curs = 0.0 or :Curs is Null) then Curs = 1.0; CSumma = :AccnSumma / :Curs; insert into accnprov(id,OurOrgnID,dat_,dt,kt,summa,document,comment,dt6,kt6, username,dt1,kt1,dt3,kt3,Oper,OperID,DocID,DtPrt,DtObj,KtPrt,KtObj, CurrTyp,Curs,CSumma, dt8, dt9, kt8, kt9) values(:accnkey,:OurOrgnID,:dat_,:dt,:kt,:accnsumma,:nbr,:comment,:dt6,:kt6, :username,:dt1,:kt1,:dt3,:kt3,:Oper,:OperID,:ID,:DtPrt,:DtObj,:KtPrt,:KtObj, :CurrTyp,:Curs,:CSumma, :dt8, :dt9, :kt8, :kt9); insert into saleaccn (id,salekey,accnkey) values(gen_id(saleaccn_id,1),:id,:accnkey); end end end end^ ALTER PROCEDURE SALE_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS Declare Variable Dt Varchar(5); Declare Variable Kt Varchar(5); Declare Variable SumTyp integer; Declare Variable DateTyp integer; Declare Variable Storno integer; Declare Variable FinRes integer; Declare Variable Proc double precision; /* дата оплаты */ Declare Variable sDate Date; /* дата отгрузки / оказания услуг */ Declare Variable dDate Date; /* дата проводки */ Declare Variable aDate Date; /* курс оплаты */ Declare Variable sCurs double precision; /* курс отгрузки */ Declare Variable dCurs double precision; /* курс проводки */ Declare Variable aCurs double precision; -- сумма разнесенной оплаты Declare Variable Summa double precision; -- сумма платежа (по документу, общая) declare variable SSumma double precision; /* сумма разнесенной оплаты в валюте */ Declare Variable cSumma double precision; /* курсовая разница (бухг.) */ Declare Variable Summ double precision; /* сумма проводки (валюта) */ Declare Variable acSumma double precision; /* сумма проводки */ Declare Variable aSumma double precision; /* 0 - расх. накладная, 1 - акт на услуги */ Declare Variable Typ integer; Declare Variable sNbr varchar(20); Declare Variable dNbr varchar(20); Declare Variable aNbr varchar(20); Declare Variable sComment varchar(255); Declare Variable dComment varchar(255); Declare Variable aComment varchar(255); Declare Variable UserName varchar(20); Declare Variable AccnKey integer; Declare Variable Oper integer; Declare Variable OperID integer; Declare Variable DtPrt integer; Declare Variable DtObj integer; Declare Variable KtPrt integer; Declare Variable KtObj integer; Declare Variable dtCurrTyp integer; Declare Variable ktCurrTyp integer; Declare Variable d1 integer; declare variable k1 integer; declare variable dt1 integer; declare variable kt1 integer; Declare Variable d3 integer; declare variable k3 integer; declare variable dt3 integer; declare variable kt3 integer; declare variable sCurrTyp integer; declare variable dCurrTyp integer; declare variable aCurrTyp integer; declare variable NameID integer; declare variable PrsnID integer; declare variable dt8 integer; Declare Variable dt9 integer; declare variable kt8 integer; Declare Variable kt9 Integer; declare variable VL1 integer; Declare Variable VL2 Integer; declare variable CurOrgnID integer; declare variable CalcNds Integer; -- ставка НДС из платежного документа declare variable NdsProc double precision; -- общий НДС (из платежного документа) declare variable SNds double precision; -- часть НДС (в проводке) пропорционально разнесенной сумме оплаты declare variable Nds double precision; -- ставка НДС из общих настроек (SysConst) declare variable ProcNds double precision; declare variable cTyp integer; declare variable OurOrgnID integer; begin for Select Dt, Kt, SumTyp, AccnDate, Storno, FinRes, Proc, Oper, OperID, DtPrt, DtObj, KtPrt, KtObj from StorAccn where ID = :OpID into :Dt, :Kt, :SumTyp, :DateTyp, :Storno, :FinRes, :Proc, :Oper, :OperID, :DtPrt, :DtObj, :KtPrt, :KtObj do begin for Select Cast (0 as integer) Typ, S.Dat_, DD.Out_Date, S.Curs, DD.Curs, SC.Summa, SC.cSumma, SC.Summ, S.Nbr, DD.Nbr, S.Comment, DD.Comment, S.UserName, S.CurrTyp, DD.CurrTyp, S.NameID, S.PrsnID, DD.VL1, DD.VL2, S.OurOrgnID, S.CalcNds, S.NdsProc, S.Nds, S.Summa, S.OurOrgnID, S.cTyp from Sale S, SaleCros SC, DgvDt DD where S.ID=:ID and SC.SaleKey = S.ID and DD.ID = SC.DgvKey Union All Select Cast (1 as integer) Typ, S.Dat_, DD.Out_Date, S.Curs, DD.Curs, SC.Summa, SC.cSumma, SC.Summ, S.NBr, DD.Nbr, S.Comment, DD.Comment, S.UserName, S.CurrTyp, DD.CurrTyp, S.NameID, S.PrsnID, DD.VL1, DD.VL2, S.OurOrgnID, S.CalcNds, S.NdsProc, S.Nds, S.Summa, S.OurOrgnID, S.cTyp from Sale S, SaleDuCr SC, DgvDtU DD where S.ID=:ID and SC.SaleKey = S.ID and DD.ID = SC.DgvKey into :Typ, :sDate, :dDate, :sCurs, :dCurs, :Summa, :cSumma, :Summ, :sNbr, :dNbr, :sComment, :dComment, :UserName, :sCurrTyp, :dCurrTyp, :NameID, :PrsnID, :VL1, :VL2, :CurOrgnID, :CalcNds, :NdsProc, :SNds, :SSumma, :OurOrgnID, :cTyp do begin ProcNDS = 20; select cast (VAL as Double Precision) from SysConst where OurOrgnID = :OurOrgnID and name='ProcNDS' into :ProcNds; if (:CalcNds is Null) then begin -- старые записи, НДС по умолчанию if (:cTyp = 1) then begin NdsProc = 0.0; SNds = 0.0; end else begin NdsProc = :ProcNds; SNds = :SSumma / (100 + :NdsProc) * :NdsProc; end end else begin end Nds = 0.0; if (:SSumma <> 0.0) then begin -- часть НДС - пропорционально разнесенной сумме Nds = :SNds / :SSumma * :Summa; end aDate = Null; aSumma = 0.0; acSumma = 0.0; aCurs = 0.0; aCurrTyp = Null; aNbr = :dNbr; dt1 = Null; kt1 = Null; dt3 = Null; kt3 = Null; select A1, A3, a8, a9, CurrTyp from AccnPlan where Accn = :Dt into :d1, :d3, :dt8, :dt9, :dtCurrTyp; select A1, A3, a8, a9, CurrTyp from AccnPlan where Accn = :Kt into :k1, :k3, :kt8, :kt9, :ktCurrTyp; if (:d1 = 1) then dt1 = :NameID; if (:k1 = 1) then kt1 = :NameID; if (:d3 = 1) then dt3 = :PrsnID; if (:k3 = 1) then kt3 = :PrsnID; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if (:DateTyp = 0 and :SumTyp = 4) then begin /* по дате оплаты */ aDate = :sDate; aCurs = :sCurs; aNbr = :sNbr; aComment = :sComment; aCurrTyp = :sCurrTyp; end else begin if (:DateTyp = 0 and :sDate is not Null) then aDate = :sDate; if (:DateTyp = 1 and :dDate is not Null) then aDate = :dDate; if (:DateTyp = 2 and (:sDate is not Null or :dDate is not Null)) then begin if (sDate is not Null and dDate is Null) then aDate = :sDate; else if (:sDate is Null and :dDate is not Null) then aDate = :dDate; else if (:dDate < :sDate) then aDate = dDate; else aDate = :sDate; end if (:DateTyp = 3 and :sDate is not Null and :dDate is not Null) then begin if (:dDate > sDate) then aDate = :dDate; else aDate = :sDate; end end if (:SumTyp = 0) then begin -- сумма платежа (разнесенной оплаты) aSumma = :Summa; aCurs = :sCurs; if (:aCurs <> 0.0) then acSumma = :aSumma / :aCurs; end if (:SumTyp = 1) then -- НДС aSumma = :Nds; if (:SumTyp = 2) then -- Сумма без НДС aSumma = :Summa - :Nds; if (:SumTyp = 4) then begin -- курсовая разница aSumma = :Summ; aCurs = 0.0; acSumma = 0.0; end if (:Storno = 1) then aSumma = -:aSumma; if (:Proc is not Null and :Proc <> 0.0) then begin aSumma = :aSumma / 100.0 * :Proc; acSumma = :acSumma / 100.0 * :Proc; end if (:dtCurrTyp is Null and :ktCurrTyp is Null) then begin aCurrTyp = Null; acSumma = 0.0; aCurs = 0.0; end -- при отриц. сумме - обнулить if (:FinRes = 0 and :aSumma < 0.0) then begin aSumma = 0.0; acSumma = 0.0; end if (:aSumma <> 0.0 and :aDate is not Null) then begin -- формирование проводки AccnKey = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, OurOrgnID, DAT_, Document, Dt, Kt, Comment, DtPrt, DtObj, KtPrt, KtObj, Summa, Curs, cSumma, CurrTyp, Oper, OperID, DocID, UserName, dt1, kt1, dt3, kt3, dt8, dt9, kt8, kt9) values(:AccnKey, :CurOrgnID, :aDate, :aNbr, :Dt, :Kt, :aComment, :DtPrt, :DtObj, :KtPrt, :KtObj, :aSumma, :aCurs, :acSumma, :aCurrTyp, :Oper, :OperID, :ID, :UserName, :dt1, :kt1, :dt3, :kt3, :dt8, :dt9, :kt8, :kt9); Insert into SaleAccn (SaleKey, AccnKey) Values(:ID, :AccnKey); end end end end^ ALTER PROCEDURE SALE_NEWID RETURNS ( ID INTEGER) AS begin id = GEN_ID(sale_id,1); end^ ALTER PROCEDURE SALEACCN_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(saleaccn_id, 1); end^ ALTER PROCEDURE SALEDTDATA_GENACCNREC ( ID INTEGER) AS declare variable summa double precision; declare variable summ double precision; declare variable nameid integer; declare variable comment varchar(255); declare variable typ integer; declare variable dt varchar(5); declare variable kt varchar(5); declare variable accn varchar(5); declare variable sumtyp integer; declare variable procnds Double Precision; declare variable dat_ date; declare variable accnkey integer; declare variable a1 integer; Declare Variable a3 integer; Declare Variable a6 integer; declare variable dt1 integer; Declare Variable dt3 integer; declare variable kt1 integer; Declare Variable kt3 Integer; declare variable dt6 integer; Declare Variable kt6 Integer; declare variable accnsumma Double Precision; declare variable nbr varchar(20); declare variable username varchar(20); Declare Variable OperID integer; Declare Variable OpID integer; Declare Variable Oper Integer; Declare Variable PrsnID integer; Declare Variable Storno Integer; Declare Variable DtPrt Integer; Declare Variable DtObj Integer; Declare Variable KtPrt Integer; Declare Variable KtObj Integer; declare variable Proc Double Precision; declare variable OurAcnID integer; declare variable CurrTyp Integer; declare variable Curs Double Precision; declare variable CSumma Double Precision; declare variable CTyp Integer; declare variable OurOrgnID integer; declare variable OrgAcnID integer; declare variable dt8 integer; Declare Variable dt9 integer; declare variable kt8 integer; Declare Variable kt9 Integer; declare variable VL1 integer; declare Variable VL2 integer; declare variable SaleID integer; begin select S.dat_, D.summa, summ, S.nameid, D.comment, S.typ, S.nbr, D.username, S.VL1, S.VL2, D.OperID, S.PrsnID, S.OurAccnID, S.AccnID, S.CTyp, S.Curs, S.CurrTyp, S.OurOrgnID, D.SaleID from saledtdata d, sale s where D.ID=:ID and S.ID = D.SaleID into :dat_,:summa,:summ,:nameid,:comment,:typ,:nbr,:username, :VL1, :VL2, :OperID,:PrsnID,:OurAcnID, :OrgAcnID, :CTyp,:Curs,:CurrTyp, :OurOrgnID, :SaleID; if (:Curs = 0.0) then cSumma = :Summa; else cSumma = :Summa / :Curs; if(:CTyp <> 1) then begin CurrTyp = Null; Curs=1.0; CSumma = 0.0; end Oper = 6; ProcNDS = 20.00; select cast (VAL as Double Precision) from SysConst where OurOrgnID = :OurOrgnID and name='ProcNDS' into :procnds; for select ID, dt,kt,sumtyp,storno,DtPrt,DtObj,KtPrt,KtObj,Proc from storaccn where operID=:operID and Oper=:Oper into :OpID, :dt,:kt,:sumtyp,:Storno,:DtPrt,:DtObj,:KtPrt,:KtObj,:Proc do begin dt1=null; dt6=null; kt1=null; kt6=null; select accn, a1, a3, a6, a8, a9 from accnplan where accn=:dt into :accn,:a1,:a3,:a6, :dt8, :dt9; if ((:a1 is not null) and (:a1<>0)) then dt1=:nameid; else dt1=Null; if ((:a3 is not null) and (:a3<>0)) then dt3=:PrsnID; else dt3=Null; if ((:a6 is not null) and (:a6<>0)) then dt6=:OurAcnID; else dt6=Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; select accn, a1, a3, a6, a8, a9 from accnplan where accn=:kt into :accn,:a1,:a3,:a6, :kt8, :kt9; if ((:a1 is not null) and (:a1<>0)) then kt1=:nameid; else kt1=Null; if ((:a3 is not null) and (:a3<>0)) then kt3=:PrsnID; else kt3=Null; if ((:a6 is not null) and (:a6<>0)) then kt6=:OrgAcnID; else kt6=Null; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if (:Summa<>0.0) then begin AccnKey = Gen_ID(AccnProv_ID, 1); AccnSumma = :Summa; /* сумма платежа с НДС */ if (:SumTyp = 0) then AccnSumma = :Summa; /* НДС */ if (:SumTyp = 1) then accnsumma=:summa*:procnds/(100.0+:procnds); /* сумма без НДС */ if (:SumTyp = 2) then accnsumma=summa-(:summa*:procnds/(100.0+:procnds)); /* остаток суммы */ -- if (:SumTyp = 3) then AccnSumma=:Summ; /* курсовая разница */ -- if (:SumTyp = 4) then begin -- Execute Procedure Sale_GenAccnRecSale (:ID, :OpID); -- AccnSumma = 0.0; -- end if (:AccnSumma <> 0.0) then begin if(:Storno <> 0) then AccnSumma=-:AccnSumma; if(:Proc <> 0.0 and :Proc is not Null) then AccnSumma = :AccnSumma / 100.0 * :Proc; if(:Curs = 0.0 or :Curs is Null) then Curs = 1.0; CSumma = :AccnSumma / :Curs; insert into accnprov(id,OurOrgnID,dat_,dt,kt,summa,document,comment,dt6,kt6, username,dt1,kt1,dt3,kt3,Oper,OperID,DocID,DtPrt,DtObj,KtPrt,KtObj, CurrTyp,Curs,CSumma, dt8, dt9, kt8, kt9) values(:accnkey,:OurOrgnID,:dat_,:dt,:kt,:accnsumma,:nbr,:comment,:dt6,:kt6, :username,:dt1,:kt1,:dt3,:kt3,:Oper,:OperID,:ID,:DtPrt,:DtObj,:KtPrt,:KtObj, :CurrTyp,:Curs,:CSumma, :dt8, :dt9, :kt8, :kt9); insert into saleaccn (id, salekey, accnkey) values(gen_id(saleaccn_id, 1), :SaleID, :accnkey); end end end end^ ALTER PROCEDURE SALEKT_DELACCNREC ( ID INTEGER) AS declare variable accnkey integer; declare variable saleaccnkey integer; begin for select id, accnkey from salektac where salekey=:id into :saleaccnkey, :accnkey do begin delete from salektac where id=:saleaccnkey; delete from accnprov where id=:accnkey; end end^ ALTER PROCEDURE SALEKT_GENACCNREC ( ID INTEGER) AS declare variable DT varchar(5); declare variable KT varchar(5); declare variable comment varchar(255); declare variable SALEKTCOMMENT varchar(255); declare variable SUMTYP integer; declare variable DATTYP integer; declare variable ACCNKEY integer; declare variable SALEKEY integer; declare variable NAMEID integer; declare variable SUMMA double precision; declare variable SUMM double precision; declare variable PROVSUMMA double precision; declare variable DT1 integer; declare variable KT1 integer; declare variable DT3 integer; declare variable KT3 integer; declare variable DT6 integer; declare variable KT6 integer; declare variable D1 integer; declare variable K1 integer; declare variable D3 integer; declare variable K3 integer; declare variable D6 integer; declare variable K6 integer; declare variable NBR varchar(20); declare variable DAT_ timestamp; declare variable USERNAME varchar(20); declare variable OPERID integer; declare variable PRSNID integer; declare variable STORNO integer; declare variable DTPRT integer; declare variable DTOBJ integer; declare variable KTPRT integer; declare variable KTOBJ integer; declare variable OPER integer; declare variable OPID integer; declare variable PROC double precision; declare variable OURACNID integer; declare variable CTYP integer; declare variable CURRTYP integer; declare variable BDATE timestamp; declare variable CURS double precision; declare variable CSUMMA double precision; declare variable BSUMMA double precision; declare variable BKSUMMA double precision; declare variable BESUMMA double precision; declare variable OURORGNID integer; declare variable ORGACCNID integer; declare variable FINRES integer; declare variable ACCNTEMP varchar(5); declare variable ATEMP integer; declare variable BCURS double precision; declare variable B1CURS double precision; declare variable E1CURS double precision; declare variable ACSUMMA double precision; declare variable ADATE timestamp; declare variable DT8 integer; declare variable DT9 integer; declare variable KT8 integer; declare variable KT9 integer; declare variable VL1 integer; declare variable VL2 integer; declare variable BACCNID integer; declare variable CALCNDS integer; declare variable NDSPROC double precision; declare variable NDS double precision; declare variable PROCNDS double precision; begin for select id,nameid,summa,summ,nbr,saledate, BAccnID, BCurs, username,operid,comment,PrsnID, OurAccnID, AccnID, CTyp, CurrTyp, Curs, CSumma, BDATE, bSumma, bKSumma, bESumma, OurOrgnID, VL1, VL2, CalcNds, NdsProc, Nds from salekt where id=:id into :salekey,:nameid,:summa,:summ,:nbr,:dat_, :BAccnID, :BCurs, :username,:operid, :salektcomment,:PrsnID, :OurAcnID, :OrgAccnID, :CTyp, :CurrTyp, :Curs, :CSumma, :BDATE, :bSumma,:bKSumma,:bESumma, :OurOrgnID, :VL1, :VL2, :CalcNds, :NdsProc, :Nds do begin aDate = :DAT_; ProcNDS = 20; select cast(val as double precision) from sysconst where OurOrgnID=:OurOrgnID and name='ProcNDS' into :procNDS; if (:CalcNds is Null) then begin -- по умолчанию (для старых записей) if (:CTyp = 1) then begin -- в иностранной валюте NdsProc = 0.0; Nds = 0.0; end else begin -- в национальной валюте NdsProc = :ProcNds; Nds = :Summa / (100 + :NdsProc) * :NdsProc; end end if (:dat_ is null) then exit; if(:CTyp<>1) then begin CurrTyp=Null; Curs=1.0; CSumma=0.0; end for select ID,dt,kt,sumtyp,comment,storno, AccnDate, dtprt,dtobj,ktprt,ktobj, Oper, Proc, FinRes from storaccn where oper=10 and operid=:operid into :OpID,:dt,:kt,:sumtyp,:comment,:storno, :DatTyp, :dtprt,:dtobj,:ktprt,:ktobj,:Oper, :Proc, :FinRes do begin if(:DatTyp = 2 or :DatTyp=3) then execute procedure SaleKt_GenAccnRecSale(:ID, :OpID); else begin if(:DatTyp=4) then aDate = :BDATE; provsumma = 0.0; aCSumma = 0.0; if((:salektcomment <> '') and (:salektcomment is not null)) then Comment = :SaleKtComment; -- Сумма платежа if (:sumtyp=0) then begin provsumma = :summa; aCSumma = :cSumma; end -- НДС с суммы if (:sumtyp=1) then begin provsumma = :Nds;--:summa*:ProcNDS/(100.0+:ProcNDS); -- aCSumma = :cSumma * :ProcNDS /(100.0+:ProcNDS); end -- Сумма без НДС if (:sumtyp=2) then begin provsumma = :Summa - :Nds; --:summa-(:summa*:ProcNDS/(100+:ProcNDS)); -- aCSumma = :cSumma-(:cSumma*:ProcNDS/(100+:ProcNDS)); end -- Остаток Суммы (неразнесенный) if (:sumtyp=3) then provsumma = :summ; -- Сумма продажи (продажа валюты) if (:SumTyp=5) then ProvSumma = :BSumma; -- Сумма зачисления (продажа/покупка валюты) if (:SumTyp=6) then begin if (:CTyp = 1) then -- продажа ProvSumma = :BESumma; else begin -- покупка CurrTyp = Null; Curs = 0.0; select CurrTyp from OrgnBankAccn where ID = :BAccnID into :CurrTyp; --select Val from Currency_GetValue(:CurrTyp, :BDate) into :Curs; select curs from salekt where id = :Id into :Curs; ProvSumma = 0.0; if (:Curs <> 0.0) then ProvSumma = :BESumma * :Curs; aCSumma = :BESumma; end end /* Сумма комиссионых банку (продажа валюты) */ if (:SumTyp=7) then ProvSumma = :BKSumma; -- Прибыль с продажи (продажа/покупка валюты) if (:SumTyp=8) then begin if (:CTyp = 1) then -- продажа ProvSumma = :BSumma-:Summa; else begin -- покупка CurrTyp = Null; Curs = 0.0; select CurrTyp from OrgnBankAccn where ID = :BAccnID into :CurrTyp; --select Val from Currency_GetValue(:CurrTyp, :BDate) into :Curs; select curs from salekt where id=:id into :Curs; ProvSumma = 0.0; if (:Curs <> 0.0) then begin ProvSumma = :BESumma * (:Curs - :BCurs); aCSumma = ProvSumma / :Curs; end end end /* Курсовая разница (НБ) */ if (:SumTyp=9) then begin Select Val from Currency_GetValue(:CurrTyp, :DAT_ ) into :b1Curs; Select Val from Currency_GetValue(:CurrTyp, :BDate) into :e1Curs; ProvSumma = :CSumma * (:e1Curs-:b1Curs); end d1 = null; dt1=null; k1=null; kt1=null; select a1,a3,a6, a8, a9 from accnplan where accn=:dt into :d1,:d3,:d6,:dt8,:dt9; select a1,a3,a6, a8, a9 from accnplan where accn=:kt into :k1,:k3,:k6,:kt8,:kt9; if(:d1 is not null and :d1 <> 0) then dt1=:NameID; else dt1=Null; if(:d3 is not null and :d3 <> 0) then dt3=:PrsnID; else dt3=Null; if(:d6 is not null and :d6 <> 0) then begin dt6 = :OrgAccnID; if (:SumTyp = 6) then dt6 = :BAccnID; end else dt6 = Null; if(:k1 is not null and :k1 <> 0) then kt1=:NameID; else kt1=Null; if(:k3 is not null and :k3 <> 0) then kt3=:PrsnID; else kt3=Null; if(:k6 is not null and :k6 <> 0) then begin kt6 = :OurAcnID; if (:SumTyp = 6) then kt6 = :BAccnID; end else kt6 = Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if(:Storno<>0) then begin ProvSumma=-:ProvSumma; aCSumma = -:cSumma; end if(:Proc<>0.0 and :Proc is not Null) then begin ProvSumma = :ProvSumma / 100.00 * :Proc; aCSumma = :aCSumma / 100.00 * :Proc; end if(:FinRes = 0) then begin /* при отриц. сумме - обнулить */ if (:ProvSumma < 0.0) then begin ProvSumma = 0.0; aCSumma = 0.0; end end if(:FinRes = 2) then begin /* при отриц. сумме - поменять корреспонденцию */ if (:ProvSumma < 0.0) then begin ProvSumma = -:ProvSumma; aCSumma = -:aCSumma; AccnTemp = Dt; Dt = Kt; Kt = AccnTemp; aTemp = dt1; dt1=kt1; kt1=aTemp; aTemp = dt3; dt3=kt3; kt3=aTemp; aTemp = dt6; dt6=kt6; kt6=aTemp; aTemp = dt8; dt8=kt8; kt8=aTemp; aTemp = dt9; dt9=kt9; kt9=aTemp; end end if((:provsumma <> 0.0) and (:DAT_ is not null)) then begin if(:Curs=0.0 or :Curs is null) then Curs=1.0; AccnKey = Gen_ID(AccnProv_ID, 1); insert into accnprov(ID,OurOrgnID,DAT_,dt,kt,summa,dt1,kt1,dt3,kt3, comment,document,username,dt6,kt6, dtprt,dtobj,ktprt,ktobj,Oper,OperID,DocID, CurrTyp,Curs,CSumma, dt8, dt9, kt8, kt9) values(:accnkey,:OurOrgnID,:aDate,:dt,:kt,:provsumma,:dt1,:kt1,:dt3,:kt3, :comment,:nbr,:username,:dt6,:kt6, :dtprt,:dtobj,:ktprt,:ktobj,:Oper,:OperID,:ID, :CurrTyp,:Curs,:aCSumma, :dt8, :dt9, :kt8, :kt9); insert into salektac (id,salekey,accnkey) values(gen_id(salektac_id, 1),:salekey,:accnkey); end end /* not salecros */ end end end^ ALTER PROCEDURE SALEKT_GENACCNRECSALE ( ID INTEGER, OPID INTEGER) AS Declare Variable xSumma Double Precision; Declare Variable Summa Double Precision; Declare Variable sDate Date; Declare Variable dDate Date; Declare Variable xDate Date; Declare Variable Typ Integer; Declare Variable cSumma Double Precision; Declare Variable Summ Double Precision; Declare Variable CID integer; Declare Variable SumTyp Integer; Declare Variable DatTyp Integer; Declare Variable FinRes Integer; Declare Variable Dt VarChar(5); Declare Variable Kt VarChar(5); Declare Variable DK VarChar(5); Declare Variable Storno Integer; Declare Variable DtPrt Integer; Declare Variable DtObj Integer; Declare Variable KtPrt Integer; Declare Variable KtObj Integer; Declare Variable dCurs Double Precision; Declare Variable sCurs Double Precision; Declare Variable xCurs Double Precision; Declare Variable Comment VarChar(255); Declare Variable ProvID Integer; declare variable CTyp Integer; declare variable CurrTyp Integer; declare variable A1 integer; /* аналитика - организации */ declare variable A3 integer; /* аналитика - сотрудники */ declare variable A4 integer; /* аналитика - склады */ declare variable A6 integer; /* аналитика - расч. счета */ declare variable dt1 integer; /* аналитика - организации */ declare variable dt3 integer; /* аналитика - сотрудники */ declare variable dt4 integer; /* аналитика - склады */ declare variable dt6 integer; /* аналитика - расч. счета */ declare variable kt1 integer; /* аналитика - организации */ declare variable kt3 integer; /* аналитика - сотрудники */ declare variable kt4 integer; /* аналитика - склады */ declare variable kt6 integer; /* аналитика - расч. счета */ declare variable OrgnID integer; declare variable PrsnID integer; declare variable StorID integer; declare variable AccnID integer; declare variable UserName Varchar(20); declare variable OurOrgnID integer; DECLARE VARIABLE dt8 INTEGER; DECLARE VARIABLE dt9 INTEGER; DECLARE VARIABLE kt8 INTEGER; DECLARE VARIABLE kt9 INTEGER; DECLARE VARIABLE VL1 INTEGER; DECLARE VARIABLE VL2 INTEGER; declare variable Nbr varchar(20); declare variable CurOrgnID integer; declare variable CalcNds Integer; -- ставка НДС из платежного документа declare variable NdsProc double precision; declare variable Nds double precision; declare variable SNds double precision; -- ставка НДС из общих настроек (SysConst) declare variable ProcNds double precision; -- сумма платежа (по документу, общая) declare variable SSumma double precision; begin for Select SaleDate, Summa, Curs, CTyp, CurrTyp, NameID, PrsnID, OurAccnID, UserName, OurOrgnID, VL1, VL2, S.Nbr, S.CalcNds, S.NdsProc, S.Nds from SaleKt S where ID=:ID into :sDate, :SSumma, :sCurs, :CTyp, :CurrTyp, :OrgnID, :PrsnID, :AccnID, :UserName, :OurOrgnID, :VL1, :VL2, :Nbr, :CalcNds, :NdsProc, :SNds do begin if (:sDate is Null) then exit; ProcNDS = 20; select cast (VAL as Double Precision) from SysConst where OurOrgnID = :OurOrgnID and name='ProcNDS' into :ProcNds; if (:CalcNds is Null) then begin -- старые записи, НДС по умолчанию if (:cTyp = 1) then begin NdsProc = 0.0; SNds = 0.0; end else begin NdsProc = :ProcNds; SNds = :SSumma / (100 + :NdsProc) * :NdsProc; end end else begin end for Select c1.ID, 0 Typ, c1.Summa, c1.cSumma, c1.Summ, D.DAT_ DDATE, D.Curs, D.Stor from SaleKtCr C1, DgvKt D where c1.SaleKey=:ID and D.ID=c1.DgvKey and D.DAT_ is not null union Select c2.ID, 1 Typ, c2.Summa, c2.cSumma, c2.Summ, D.IN_DATE DDATE, D.Curs, D.StorID from SaleKuCr C2, DgvKtU D where c2.SaleKey=:ID and D.ID=C2.DgvKey and D.In_Date is not null into :CID, :TYP, :Summa, :cSumma, :Summ, :dDate, :dCurs, :StorID do begin Nds = 0.0; if (:SSumma <> 0.0) then begin -- часть НДС - пропорционально разнесенной сумме Nds = :SNds / :SSumma * :Summa; end select AccnDate, SumTyp, FinRes, Storno, dt, kt, Comment, DtPrt, DtObj, KtPrt, KtObj from StorAccn where ID=:OpID into :DatTyp, :SumTyp, :FinRes, :Storno, :dt, :kt, :Comment, :DtPrt, :DtObj, :KtPrt, :KtObj; if(:DatTyp=0) then xDate = :sDate; /* по оплате */ if(:DatTyp=1) then xDate = :dDate; /* по отгрузке */ if(:DatTyp=2) then begin /* По Отгрузке или Оплате */ if(:sDate<:dDate) then xDate=:sDate; else xDate=:dDate; end if(:DatTyp=3) then begin /* По Отгрузке и Отлате */ if(:sDate<:dDate) then xDate=:dDate; else xDate=:sDate; if(:sDate<:dDate) then xCurs=:sCurs; else xCurs=:dCurs; end if (:CurrTyp is not Null) then if(:sDate is null or :dDate is null) then xDate = Null; if(:SumTyp=0) then begin -- Сумма Оплаты (разнесенная сумма) if (:CurrTyp is not Null) then xSumma = :cSumma * :xCurs; else xSumma = :Summa; end if (:SumTyp = 1) then -- НДС xSumma = :Nds; if (:SumTyp = 2) then -- Сумма без НДС xSumma = :Summa - :Nds; -- Курсовая разница if(:SumTyp=4) then xSumma = :Summ; if(:Storno=1) then xSumma= -:xSumma; -- при отрицательной сумме - обнулить if(:Finres=0 and :xSumma < 0.0) then xSumma = 0.0; -- при отрицательной сумме - поменять корреспонденцию if(:FinRes=2 and :xSumma < 0.0) then begin xSumma = -:xSumma; DK = :Kt; Dt = :Kt; Kt=:DK; end Select a1, a3, a4, a6, a8, a9 from AccnPlan where Accn = :DT into :A1, :A3, :a4, :A6, :dt8, :dt9; if (:a1 = 1) then dt1 = :OrgnID; if (:a3 = 1) then dt3 = :PrsnID; if (:a4 = 1) then dt4 = :StorID; if (:a6 = 1) then dt6 = :AccnID; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; Select a1, a3, a4, a6, a8, a9 from AccnPlan where Accn = :KT into :A1, :A3, :a4, :A6, :dt8, :dt9; if (:a1 = 1) then kt1 = :OrgnID; if (:a3 = 1) then kt3 = :PrsnID; if (:a4 = 1) then kt4 = :StorID; if (:a6 = 1) then kt6 = :AccnID; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if(:xSumma is null) then xSumma=0; if(:xSumma <> 0 and :xDate is not null) then begin ProvID = Gen_ID(AccnProv_ID,1); if(:CTyp<>1) then begin CurrTyp=null; CSumma=0.0; end if (:xCurs=0.0 or :xCurs is null) then xCurs=1.0; CSumma=:xSumma/:xCurs; if (:SumTyp=4) then begin xCurs = 0.0; CSumma = 0.0; end Insert Into AccnProv(ID,OurOrgnID,DAT_,Summa,Dt,Kt,Comment, Document, DtPrt,DtObj,KtPrt,KtObj,CurrTyp,Curs,CSumma, UserName, dt1,dt3,dt4,dt6,kt1,kt3,kt4,kt6, Oper, OperID, DocID, dt8, dt9, kt8, kt9) Values(:ProvID,:OurOrgnID,:xDate,:xSumma,:Dt,:Kt,:Comment, :Nbr, :DtPrt,:DtObj,:KtPrt,:KtObj,:CurrTyp,:xCurs,:CSumma, :UserName, :dt1,:dt3,:dt4,:dt6,:kt1,:kt3,:kt4,:kt6, 10, :OpID, :ID, :dt8, :dt9, :kt8, :kt9); Insert Into SaleKtAc(ID,SaleKey,AccnKey) Values(Gen_ID(SaleKtAc_ID,1),:ID,:ProvID); end end end end^ ALTER PROCEDURE SALEKT_NEWID RETURNS ( ID INTEGER) AS begin id=gen_id(salekt_id,1); end^ ALTER PROCEDURE SALEKTDATA_GENACCNREC ( ID INTEGER) AS DECLARE VARIABLE DT VARCHAR(5); DECLARE VARIABLE KT VARCHAR(5); DECLARE VARIABLE COMMENT VARCHAR(255); DECLARE VARIABLE SALEKTCOMMENT VARCHAR(255); DECLARE VARIABLE SUMTYP INTEGER; DECLARE VARIABLE DATTYP INTEGER; DECLARE VARIABLE PROCNDS DOUBLE PRECISION; DECLARE VARIABLE ACCNKEY INTEGER; DECLARE VARIABLE NAMEID INTEGER; DECLARE VARIABLE SUMMA DOUBLE PRECISION; DECLARE VARIABLE PROVSUMMA DOUBLE PRECISION; DECLARE VARIABLE DT1 INTEGER; DECLARE VARIABLE KT1 INTEGER; DECLARE VARIABLE DT3 INTEGER; DECLARE VARIABLE KT3 INTEGER; DECLARE VARIABLE DT6 INTEGER; DECLARE VARIABLE KT6 INTEGER; DECLARE VARIABLE D1 INTEGER; DECLARE VARIABLE K1 INTEGER; DECLARE VARIABLE D3 INTEGER; DECLARE VARIABLE K3 INTEGER; DECLARE VARIABLE D6 INTEGER; DECLARE VARIABLE K6 INTEGER; DECLARE VARIABLE NBR VARCHAR(20); DECLARE VARIABLE DAT_ TimeStamp; DECLARE VARIABLE USERNAME VARCHAR(20); DECLARE VARIABLE OPERID INTEGER; DECLARE VARIABLE PRSNID INTEGER; DECLARE VARIABLE STORNO INTEGER; DECLARE VARIABLE DTPRT INTEGER; DECLARE VARIABLE DTOBJ INTEGER; DECLARE VARIABLE KTPRT INTEGER; DECLARE VARIABLE KTOBJ INTEGER; DECLARE VARIABLE OPER INTEGER; DECLARE VARIABLE OPID INTEGER; DECLARE VARIABLE PROC DOUBLE PRECISION; DECLARE VARIABLE OurACNID INTEGER; DECLARE VARIABLE CTYP INTEGER; DECLARE VARIABLE CURRTYP INTEGER; DECLARE VARIABLE BDATE TimeStamp; DECLARE VARIABLE CURS DOUBLE PRECISION; DECLARE VARIABLE CSUMMA DOUBLE PRECISION; declare variable BSUMMA double precision; declare variable BKSUMMA double precision; declare variable BESUMMA double precision; declare variable OurOrgnID integer; declare variable OrgAccnID integer; Declare Variable FinRes integer; Declare Variable AccnTemp varchar(5); Declare Variable ATemp integer; Declare Variable bCurs double precision; Declare Variable aCSumma double precision; /* дата формируемой проводки */ Declare Variable aDate TimeStamp; DECLARE VARIABLE dt8 INTEGER; DECLARE VARIABLE dt9 INTEGER; DECLARE VARIABLE kt8 INTEGER; DECLARE VARIABLE kt9 INTEGER; DECLARE VARIABLE VL1 INTEGER; DECLARE VARIABLE VL2 INTEGER; declare variable BAccnID integer; declare variable SaleID integer; begin for select D.SaleID, S.nameid, D.summa, S.nbr, S.saledate, S.BAccnID, S.BCurs, D.username, D.OperID, D.Comment, S.PrsnID, S.OurAccnID, S.AccnID, S.CTyp, S.CurrTyp, S.Curs, S.BDATE, S.bSumma, S.bKSumma, S.bESumma, OurOrgnID, S.VL1, S.VL2 from SaleKtData D, SaleKt S where D.ID = :ID and S.ID = D.SaleID into :SaleID, :nameid,:summa,:nbr,:dat_, :BAccnID, :BCurs, :username,:operid, :salektcomment,:PrsnID, :OurAcnID, :OrgAccnID, :CTyp, :CurrTyp, :Curs, :BDATE, :bSumma,:bKSumma,:bESumma, :OurOrgnID, :VL1, :VL2 do begin aDate = :DAT_; ProcNDS = null; select cast(val as double precision) from sysconst where OurOrgnID=:OurOrgnID and name='ProcNDS' into :procNDS; if (:ProcNDS is null or ProcNDS=0.0) then ProcNDS=20.0; if (:dat_ is null) then exit; if(:CTyp <> 1) then begin CurrTyp=Null; Curs=1.0; CSumma=0.0; end for select ID,dt,kt,sumtyp,comment,storno, AccnDate, dtprt,dtobj,ktprt,ktobj, Oper, Proc, FinRes from storaccn where oper=10 and operid=:operid into :OpID,:dt,:kt,:sumtyp,:comment,:storno, :DatTyp, :dtprt,:dtobj,:ktprt,:ktobj,:Oper, :Proc, :FinRes do begin if(:DatTyp=4) then aDate = :BDATE; provsumma=0.0; aCSumma = 0.0; if((:salektcomment <> '') and (:salektcomment is not null)) then Comment = :SaleKtComment; /* Сумма платежа */ if (:sumtyp=0) then begin provsumma = :summa; aCSumma = :cSumma; end /* НДС с суммы */ if (:sumtyp=1) then begin provsumma = :summa*:ProcNDS/(100.0+:ProcNDS); aCSumma = :cSumma * :ProcNDS /(100.0+:ProcNDS); end /* Сумма без НДС */ if (:sumtyp=2) then begin provsumma = :summa-(:summa*:ProcNDS/(100+:ProcNDS)); aCSumma = :cSumma-(:cSumma*:ProcNDS/(100+:ProcNDS)); end d1 = null; dt1=null; k1=null; kt1=null; select a1,a3,a6, a8, a9 from accnplan where accn=:dt into :d1,:d3,:d6,:dt8,:dt9; select a1,a3,a6, a8, a9 from accnplan where accn=:kt into :k1,:k3,:k6,:kt8,:kt9; if(:d1 is not null and :d1 <> 0) then dt1=:NameID; else dt1=Null; if(:d3 is not null and :d3 <> 0) then dt3=:PrsnID; else dt3=Null; if(:d6 is not null and :d6 <> 0) then dt6=:OrgAccnID; else dt6=Null; if(:k1 is not null and :k1 <> 0) then kt1=:NameID; else kt1=Null; if(:k3 is not null and :k3 <> 0) then kt3=:PrsnID; else kt3=Null; if(:k6 is not null and :k6 <> 0) then kt6=:OurAcnID; else kt6=Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if(:Storno<>0) then begin ProvSumma=-:ProvSumma; aCSumma = -:cSumma; end if(:Proc<>0.0 and :Proc is not Null) then begin ProvSumma = :ProvSumma / 100.00 * :Proc; aCSumma = :aCSumma / 100.00 * :Proc; end if(:FinRes = 0) then begin /* при отриц. сумме - обнулить */ if (:ProvSumma < 0.0) then begin ProvSumma = 0.0; aCSumma = 0.0; end end if(:FinRes = 2) then begin /* при отриц. сумме - поменять корреспонденцию */ if (:ProvSumma < 0.0) then begin ProvSumma = -:ProvSumma; aCSumma = -:aCSumma; AccnTemp = Dt; Dt = Kt; Kt = AccnTemp; aTemp = dt1; dt1=kt1; kt1=aTemp; aTemp = dt3; dt3=kt3; kt3=aTemp; aTemp = dt6; dt6=kt6; kt6=aTemp; end end if((:provsumma <> 0.0) and (:DAT_ is not null)) then begin if(:Curs=0.0 or :Curs is null) then Curs=1.0; AccnKey = Gen_ID(AccnProv_ID, 1); insert into accnprov(ID,OurOrgnID,DAT_,dt,kt,summa,dt1,kt1,dt3,kt3, comment,document,username,dt6,kt6, dtprt,dtobj,ktprt,ktobj,Oper,OperID,DocID, CurrTyp,Curs,CSumma, dt8, dt9, kt8, kt9) values(:accnkey,:OurOrgnID,:aDate,:dt,:kt,:provsumma,:dt1,:kt1,:dt3,:kt3, :comment,:nbr,:username,:dt6,:kt6, :dtprt,:dtobj,:ktprt,:ktobj,:Oper,:OperID,:ID, :CurrTyp,:Curs,:aCSumma, :dt8, :dt9, :kt8, :kt9); insert into salektac (id, salekey, accnkey) values(gen_id(salektac_id, 1), :SaleID, :accnkey); end end /* not salecros */ end end^ ALTER PROCEDURE SELECT_MOVEGOODS ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, NAME VARCHAR(40), CODE VARCHAR(20), PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, AKCIZ DOUBLE PRECISION, QB DOUBLE PRECISION, QI DOUBLE PRECISION, QO DOUBLE PRECISION, QE DOUBLE PRECISION) AS Declare Variable b Double Precision; Declare Variable i Double Precision; Declare Variable o Double Precision; Declare Variable S integer; Declare Variable sID integer; Declare Variable sp Double Precision; Declare Variable sn Double Precision; Declare Variable sa Double Precision; begin S = 6; sID = Null; sp = null; sn = null; sa = null; Qb = 0; Qi = 0; Qo = 0; Qe = 0; for select G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz, Sum(K.Source) B, Cast(0.0 as Double Precision) I, Cast(0.0 as Double Precision) O from DgvKt, GddKt K, Goods G where DgvKt.Stor = :S and DgvKt.Dat_ < :bDate and DgvKt.Dat_ is not null and K.DgvKey = DgvKt.Id and G.Id = K.GdsKey group by G.ID, G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz UNION select G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz, -Sum(GddDt.Quant) B, Cast(0.0 as Double Precision) I, Cast(0.0 as Double Precision) O from DgvDt, GddDt, GddKt K, DgvKt, Goods G where DgvDt.Out_Date < :bDate and DgvDt.Out_Date is not null and GddDt.DgvKey = DgvDt.Id and K.Id = GddDt.GddKey and K.DgvKey = DgvKt.Id and DgvKt.Stor = :S and G.Id = K.GdsKey group by G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz UNION select G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz, Cast(0.0 as Double Precision) B, Sum(K.SOURCE) I, Cast(0.0 as Double Precision) O from GddKt K, DgvKt, Goods G where DgvKt.Stor = :S and DgvKt.Dat_ >= :bDate and DgvKt.Dat_ <= :eDate and DgvKt.Dat_ is not null and K.DgvKey = DgvKt.Id and G.Id = K.GdsKey group by G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz UNION select G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz, Cast(0.0 as Double Precision) B, Cast(0.0 as Double Precision) I, Sum(GddDt.Quant) O from DgvDt, GddDt, GddKt K, DgvKt, Goods G where DgvDt.Out_Date >= :bDate and DgvDt.Out_Date <= :eDate and DgvDt.Out_Date is not null and GddDt.DgvKey = DgvDt.Id and GddDt.GddKey = K.Id and K.DgvKey = DgvKt.Id and DgvKt.Stor = :S and G.Id = K.GdsKey group by G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz into :Name, :Code, :ID, :Price, :Nds, :Akciz, :b, :i, :o do begin if(:b is null) then b = 0; if(:i is null) then i = 0; if(:o is null) then o = 0; if (:sID <> :ID or sp <> Price or sn <> Nds or sa <> Akciz) then begin Qe = Qb + Qi - Qo; if(Qb=0) then Qb=null; if(Qi=0) then Qi=null; if(Qo=0) then Qo=null; if(Qe=0) then Qe=null; if(Qb is not Null or Qi is not Null or Qo is not Null) then Suspend; Qb = b; Qi = i; Qo = o; end else begin Qb = Qb + b; Qi = Qi + i; Qo = Qo + o; end sID = ID; sp = Price; sn = Nds; sa = Akciz; end if (sID is not Null) then begin Qe = Qb + Qi - Qo; if(Qb=0) then Qb=null; if(Qi=0) then Qi=null; if(Qo=0) then Qo=null; if(Qe=0) then Qe=null; if(Qb is not Null or Qi is not Null or Qo is not Null) then Suspend; end end^ ALTER PROCEDURE SELECT_MOVEGOODSDGV ( DGVID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ID INTEGER, NAME VARCHAR(40), CODE VARCHAR(20), PRICE DOUBLE PRECISION, NDS DOUBLE PRECISION, AKCIZ DOUBLE PRECISION, QB DOUBLE PRECISION, QI DOUBLE PRECISION, QO DOUBLE PRECISION, QE DOUBLE PRECISION) AS Declare Variable b Double Precision; Declare Variable i Double Precision; Declare Variable o Double Precision; Declare Variable sID integer; Declare Variable sp Double Precision; Declare Variable sn Double Precision; Declare Variable sa Double Precision; Declare Variable sName Varchar(40); Declare Variable sCode Varchar(20); begin sID = Null; sp = null; sn = null; sa = null; Qb = 0; Qi = 0; Qo = 0; Qe = 0; sName = null; sCode = null; for select G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz, Sum(K.Source) B, Cast(0.0 as Double Precision) I, Cast(0.0 as Double Precision) O from DgvKt, GddKt K, Goods G where DgvKt.ID = :DgvID and DgvKt.Dat_ < :bDate and DgvKt.Dat_ is not null and K.DgvKey = DgvKt.Id and G.Id = K.GdsKey group by G.ID, G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz UNION select G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz, -Sum(GddDt.Quant) B, Cast(0.0 as Double Precision) I, Cast(0.0 as Double Precision) O from DgvDt, GddDt, GddKt K, DgvKt, Goods G where DgvDt.Out_Date < :bDate and DgvDt.Out_Date is not null and GddDt.DgvKey = DgvDt.Id and K.Id = GddDt.GddKey and K.DgvKey = DgvKt.Id and DgvKt.ID = :DgvID and G.Id = K.GdsKey group by G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz UNION select G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz, Cast(0.0 as Double Precision) B, Sum(K.SOURCE) I, Cast(0.0 as Double Precision) O from GddKt K, DgvKt, Goods G where DgvKt.ID = :DgvID and DgvKt.Dat_ >= :bDate and DgvKt.Dat_ <= :eDate and DgvKt.Dat_ is not null and K.DgvKey = DgvKt.Id and G.Id = K.GdsKey group by G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz UNION select G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz, Cast(0.0 as Double Precision) B, Cast(0.0 as Double Precision) I, Sum(GddDt.Quant) O from DgvDt, GddDt, GddKt K, DgvKt, Goods G where DgvDt.Out_Date >= :bDate and DgvDt.Out_Date <= :eDate and DgvDt.Out_Date is not null and GddDt.DgvKey = DgvDt.Id and GddDt.GddKey = K.Id and K.DgvKey = DgvKt.Id and DgvKt.ID = :DgvID and G.Id = K.GdsKey group by G.Name, G.Code, G.ID, K.Price, K.Nds, K.Akciz into :sName, :sCode, :ID, :sp, :sn, :sa, :b, :i, :o do begin if(:b is null) then b = 0; if(:i is null) then i = 0; if(:o is null) then o = 0; if (:sID <> :ID or sp <> Price or sn <> Nds or sa <> Akciz) then begin Qe = Qb + Qi - Qo; if(Qb=0) then Qb=null; if(Qi=0) then Qi=null; if(Qo=0) then Qo=null; if(Qe=0) then Qe=null; /*if(Qb is not Null or Qi is not Null or Qo is not Null) then*/ Suspend; Qb = b; Qi = i; Qo = o; end else begin Qb = Qb + b; Qi = Qi + i; Qo = Qo + o; end sID = ID; Price = sp; Nds = sn; Akciz = sa; Name = sName; Code = sCode; end if (sID is not Null) then begin Qe = Qb + Qi - Qo; if(Qb=0) then Qb=null; if(Qi=0) then Qi=null; if(Qo=0) then Qo=null; if(Qe=0) then Qe=null; /*if(Qb is not Null or Qi is not Null or Qo is not Null) then*/ Suspend; end end^ ALTER PROCEDURE SELECT_WORKGODSFREE ( MSTID INTEGER) RETURNS ( ID INTEGER, QUANT DOUBLE PRECISION, QUANTN DOUBLE PRECISION) AS declare variable MID Integer; declare variable MQUANT Double Precision; declare variable DQUANT Double Precision; begin Delete From WorkGodsTemp; Insert Into WorkGodsTemp(ID) Select W.GODSID from WorkPlanSlv S, WorkLink W where S.MSTID=:MSTID and W.OWNER=S.MAINID Group By W.GodsID; for Select K.GDSKEY, K.Quant from WorkPlanStor W, DgvKt D, GddKt K where W.MSTID=:MSTID and W.TYP=0 and D.Stor=W.STORID and K.DgvKey=D.ID and K.Quant > 0.0 into :ID, :QUANT do Update WorkGodsTemp Set Quant=Quant+:Quant where ID=:ID; for Select MainID, Quant from WorkPlanSlv where MSTID=:MSTID into :MID, :MQUANT do begin for Select GODSID, Quant from WorkLink where OWNER=:MID into :ID, :DQUANT do begin Update WorkGodsTemp set QUANTN=QUANTN+:DQUANT where ID=:ID; end end for Select ID, Quant, QUANTN from WorkGodsTemp into :ID,:Quant,:QUANTN do Suspend; end^ ALTER PROCEDURE SERVICESVD_IMPORT ( ORGNID INTEGER, USERID INTEGER) AS -- ID склада declare variable SID integer; -- ID товара declare variable GID integer; -- ID записи исходной таблицы данных declare variable RecID integer; -- наименование склада declare variable SName varchar(255); -- подразделение -> склад (код) declare variable SCod varchar(20); -- товар (код) declare variable GCod varchar(20); -- наименование товара declare variable GName varchar(255); -- артикул товара declare variable GCode varchar(20); -- наименование товара (полное) declare variable GFullName varchar(255); -- ID группы товара declare variable GdsGrpID integer; -- ID изделия declare variable WMID integer; declare variable WMID1 integer; declare variable Dat_ timestamp; -- ID произв. заказа declare variable ZID integer; -- ID организации declare variable OID integer; declare variable Org_ID integer; declare variable OrgFullName varchar(255); -- склад (для резервирования) declare variable rStorID integer; -- организация (для резервирования) declare variable rOrgnID integer; declare variable NonCash double precision; declare variable DgvDtID integer; declare variable Comment varchar(255); declare variable UserName varchar(20); declare variable Price double precision; declare variable Quant double precision; declare variable Quant1 double precision; declare variable Discount integer; begin select Name from UserList where ID = :UserID into :UserName; -- группа товаров GdsGrpID = Null; Select Min(ID) from Goods where Grou_ = 0 and Name = 'УСЛУГИ' into :GdsGrpID; if (:GdsGrpID is Null) then begin GdsGrpID = Gen_ID(Goods_ID, 1); insert into Goods(ID, name, Grou_) values(:GdsGrpID, 'УСЛУГИ', 0); end for select ID, I_D, Div_ID, Div_Name, Cash_Code, Name, Org_ID, Org_Name from ServicesVD into :RecID, :GCod, :SCod, :SName, :GCode, :GName, :Org_ID, :OrgFullName do begin SName = Substring(:SName from 1 for 40); GFullName = :GName; GName = Substring(:GName from 1 for 40); -- подразделения / склады SID = Null; select Min(ID) from storlist where OurOrgnID = :OrgnID and (Cod = :SCod or Name = :SName) into :SID; if (:SID is Null) then begin SID = Gen_ID(StorList_ID, 1); Insert into StorList(ID, OurOrgnID, Cod, Name, Typ, NdsTyp, NdsProc) values(:SID, :OrgnID, :SCod, :SName, 3, 1, 20.00); end -- товары GID = Null; select Min(ID) from Goods where Cod = :GCod into :GID; if (:GID is Null) then begin GID = Gen_ID(Goods_ID, 1); insert into Goods(ID, Name, Code, Grou_, Owner, Cod, FullName) values(:GID, :GName, :GCode, 1, :GdsGrpID, :GCod, :GFullName); end -- изделия WMID = Null; select Min(ID) from WorkMain where GodsID = :GID into :WMID; if (:WMID is Null) then begin WMID = Gen_ID(WorkMain_ID, 1); Insert into WorkMain(ID, GodsID, Cod) values(:WMID, :GID, :GCod); end -- организации OID = Null; if (:Org_ID is not Null and :Org_ID <> 0) then begin select Min(ID) from Orgn where ClNbr = Cast(:Org_ID as Varchar(20)) into :OID; if (:OID is Null) then begin OID = Gen_ID(Orgn_ID, 1); Insert into Orgn(ID, Name, FullName, ClNbr) values(:OID, Substring(:OrgFullName from 1 for 40), :OrgFullName, :Org_ID); end end update ServicesVD set StorID = :SID, GodsID=:GID, WorkMainID = :WMID, OrgnID = :OID where ID = :RecID; end -- заказы for select Dat_, StorID, Div_Name from ServicesVD group by dat_, StorID, Div_Name into :Dat_, :SID, :SName do begin ZID = Gen_ID(WorkZakaz_ID, 1); insert into WorkZakaz(ID, OurOrgnID, Dat_, Nbr, Stor, Comment) values(:ZID, :OrgnID, :DAT_, :ZID, :SID, :SName); update ServicesVD set ZID = :ZID where DAT_ = :DAT_ and StorID = :SID; end -- изделия в заказах insert into WorkZMst (ZID, MID, GodsID, Source, Quant) select ZID, WorkMainID, GodsID, Sum(Quant), 0.0 from ServicesVD Group by ZID, WorkMainID, GodsID; -- резервирование изделий rStorID = Null; select Val from SysConst C join storlist S on S.ID = C.Val and S.OurOrgnID = :OrgnID where C.OurOrgnID = :OrgnID and C.UserID = :UserID and C.Name = 'ZakazReservStor' into :rStorID; if (:rStorID is Null) then exception common_exception 'Не указан склад резервирования в параметрах настройки.'; rOrgnID = Null; select Val from SysConst where OurOrgnID = :OrgnID and UserID = :UserID and Name = 'DgvDt0OrgnID' into :rOrgnID; if (:rOrgnID is Null) then exception common_exception 'Не указан контрагент для резервирования в параметрах настройки.'; if (:rStorID is not Null and :rOrgnID is not Null) then begin -- выписанные счета for select DAT_, Non_Cash, OrgnID from ServicesVD group by DAT_, Non_Cash, OrgnID into :DAT_, :NonCash, :OID do begin DgvDtID = Gen_ID(DgvDt_ID, 1); if (:NonCash is Null) then Comment = 'Оплата на месте (наличный расчет)'; else if (:nonCash = 0.0) then Comment = 'Безналичный расчет'; else Comment = 'Услуги застрахованным клиентам'; insert into DgvDt(ID, DAT_, Nbr, Stor, Typ, RealTyp, NdsTyp, ProcNds, NameID, Comment, UserName) values(:DgvDtID, :DAT_, :DgvDtID, :rStorID, 11, 0, 1, 20.00, CoalEsce(:OID, :rOrgnID), :Comment, :UserName); if (:NonCash is Null and :OID is not Null) then Update ServicesVD set DgvDtID = :DgvDTID where DAT_ = :DAT_ and OrgnID = :OID and Non_Cash is Null; if (:NonCash is not Null and :OID is Null) then Update ServicesVD set DgvDtID = :DgvDTID where DAT_ = :DAT_ and OrgnID is Null and Non_Cash = :NonCash; if (:NonCash is not Null and :OID is not Null) then Update ServicesVD set DgvDtID = :DgvDTID where DAT_ = :DAT_ and OrgnID = :OID and Non_Cash = :NonCash; if (:NonCash is Null and :OID is Null) then Update ServicesVD set DgvDtID = :DgvDTID where DAT_ = :DAT_ and OrgnID is Null and Non_Cash is Null; end -- товар в выписанных счетах for select GodsID, DgvDtID, Price, Cast(Discount as integer), Sum(Quant) from ServicesVD group by GodsID, DgvDtID, Price, Discount into :GID, :DgvDtID, :Price, :Discount, :Quant do begin insert into GddDt(DgvKey, Price, Nds, PriceN, Quant, GdsKey) values(:DgvDtID, :Price, :Price / 6.00, :Price - (:Price / 6.00), :Quant, :GID); end for select distinct DgvDtID from ServicesVD into :DgvDtID do Update DgvDt set Summa = Summa where ID = :DgvDtID; end -- заказы на полуфабрикаты for select S.DAT_, S.WorkMainID, Sum(S.Quant) from ServicesVD S group by S.DAT_, S.WorkMainID into :DAT_, :WMID1, :Quant1 do begin for select S.ID, S.Qnt, M.StorID, M.GodsID from ServicesVD_SubDetail(:WMID1, :Quant1) S join WorkMain M on M.ID = S.ID into :WMID, :Quant, :SID, :GID do begin ZID = Null; Select Z.ID from WorkZakaz Z where Z.DAT_ = :DAT_ and Z.Stor = :SID into :ZID; if (:ZID is Null) then begin ZID = Gen_ID(WorkZakaz_ID, 1); insert into WorkZakaz(ID, OurOrgnID, DAT_, Nbr, Stor, Comment) values(:ZID, :OrgnID, :DAT_, :ZID, :SID, 'Полуфабрикаты'); end insert into WorkZMst (ZID, MID, GodsID, Source, Quant) values(:ZID, :WMID, :GID, :Quant, 0.0); end end end^ ALTER PROCEDURE SERVICESVD_SUBDETAIL ( WORKMAINID INTEGER, QUANT DOUBLE PRECISION) RETURNS ( ID INTEGER, QNT DOUBLE PRECISION) AS declare variable Q double precision; declare variable ID1 integer; declare variable QNT1 double precision; declare variable ID2 integer; declare variable QNT2 double precision; begin for select M1.ID, Sum(L.Quant) from WorkMain M join WorkLink L on L.owner = M.ID join WorkMain M1 on M1.GodsID = L.GodsID where M.ID = :WorkMainID group by M1.ID into :ID1, :QNT1 do begin ID = :ID1; Qnt = :QNT1 * :Quant; suspend; for select ID, Qnt from ServicesVD_SubDetail(:ID, :Qnt) into :ID2, :QNT2 do begin ID = :ID2; Qnt = :QNT2; suspend; end end end^ ALTER PROCEDURE SP_BDG_APPLY_CALC_PRICE ( CALC_ID INTEGER, USERID INTEGER) AS DECLARE VARIABLE BGL_ID INTEGER; DECLARE VARIABLE BG_ID INTEGER; DECLARE VARIABLE BG_GOODS_ID INTEGER; DECLARE VARIABLE CG_PRICE DOUBLE PRECISION; DECLARE VARIABLE PLAN_ID INTEGER; DECLARE VARIABLE BDATE TIMESTAMP; DECLARE VARIABLE EDATE TIMESTAMP; begin select pr.bdate, pr.edate, coalesce(c.plan_id, 0) from bdg_calc c left join bdg_period pr on pr.id = c.period_id where c.id = :calc_id into :bdate, :edate, :plan_id; /* Присваеваем калькуляции статус основной */ update bdg_calc set adefault = 1 where id = :calc_id; /* Обновляем себестоимость выпущенной продукции */ for select bg.id, cg.price / cg.quant from bdg_paper p left join bdg_goods bg on bg.paper_id = p.id and bg.link_to is null left join bdg_calc_goods cg on cg.goods_id = bg.goods_id and cg.center_id = p.center_id and cg.calc_id = :calc_id where p.dat_ between :bdate and :edate and p.atype = 2 and ((0 = :plan_id and p.plan_id is null) or (0 <> :plan_id and p.plan_id = :plan_id)) and bg.id is not null into :bg_id, :cg_price do update bdg_goods bg set bg.price = :cg_price where bg.id = :bg_id; /* Обновляем себестоимость реализованной продукции */ /* Т.к. нет информации о том, который из ЦФУ произвел продукцию, то берется средняя производственная себестоимость. */ for select bg.id, bg.goods_id, null,--bgl.id, (select avg(cg.price / cg.quant) from bdg_calc_goods cg where cg.goods_id = bg.goods_id -- and cg.center_id = p.center_id and cg.atype = 0 and cg.calc_id = :calc_id) from bdg_paper p left join bdg_goods bg on bg.paper_id = p.id and bg.link_to is null -- left join bdg_goods bgl on bgl.paper_id is null and bgl.link_to = bg.id where p.dat_ between :bdate and :edate and p.source_type = 1 and ((0 = :plan_id and p.plan_id is null) or (0 <> :plan_id and p.plan_id = :plan_id)) and bg.id is not null into :bg_id, :bg_goods_id, :bgl_id, :cg_price do /* if (bgl_id is null) then insert into bdg_goods (goods_id, paper_id, quant, price, userid, obj_gdd_id, link_to) values (:bg_goods_id, null, 0.0, :cg_price, :userid, null, :bg_id); else */ update bdg_goods set src_price = :cg_price, userid = :userid -- price = :cg_price, userid = :userid where id = :bg_id; suspend; end^ ALTER PROCEDURE SP_BDG_CHECK_PAPER_DATA_STATE ( PAPER_DAT_ TIMESTAMP, PAPER_PLAN_ID INTEGER, PAPER_ITEM_ID INTEGER, PAPER_ATYPE INTEGER) AS DECLARE VARIABLE DATA_TYPE INTEGER; DECLARE VARIABLE PERIOD_ID INTEGER; DECLARE VARIABLE ASTATE INTEGER; begin select first 1 astate, id from bdg_period where grou_ = 1 and :paper_dat_ between bdate and edate into :astate, :period_id; if (period_id is not null) then begin if (astate = 2) then exception bdg_closed_period; else begin /* Определяем тип данных */ select case when (result_type = 1) and (:paper_atype = 1) then 1 when (result_type = -1) and (:paper_atype = 1) then 2 when (result_type = 1) and (:paper_atype = 0) then 10 when (result_type = -1) and (:paper_atype = 0) then 20 when (:paper_atype = 2) then 30 end from bdg_item where id = :paper_item_id into :data_type; /* Определяем статус данных */ if (:paper_plan_id is null) then select astate from bdg_data_state where period_id = :period_id and plan_id is null and atype = :data_type into :astate; else select astate from bdg_data_state where period_id = :period_id and plan_id = :paper_plan_id and atype = :data_type into :astate; if (astate = 2) then exception bdg_closed_data; end end suspend; end^ ALTER PROCEDURE SP_BDG_CLEAR_DISTR ( PLAN_ID INTEGER, PERIOD_ID INTEGER) AS begin if (plan_id is null) then delete from bdg_doc d where d.period_id = :period_id and d.plan_id is null; else delete from bdg_doc d where d.period_id = :period_id and d.plan_id = :plan_id; suspend; end^ ALTER PROCEDURE SP_BDG_DO_CALC ( CALC_ID INTEGER) RETURNS ( NBR INTEGER, ORDER_NBR INTEGER, ORDER_NAME VARCHAR(255)) AS DECLARE VARIABLE SCHEME_ATYPE INTEGER; /* Тип схемы калькуляции */ DECLARE VARIABLE BDATE TIMESTAMP; /* Начало период затрат */ DECLARE VARIABLE EDATE TIMESTAMP; /* Конец периода затрат */ DECLARE VARIABLE SCHEME_ID INTEGER; /* Схема калькуляции */ DECLARE VARIABLE SCHEME_ORDER_GROUP_ID INTEGER; /* Группа шагов схемы калькуляции */ DECLARE VARIABLE SCHEME_ORDER_ID INTEGER; /* Шаг схемы калькуляции */ DECLARE VARIABLE CALC_ORDER_ID INTEGER; /* Шаг калькуляции */ DECLARE VARIABLE CALC_ORDER_GROUP_ID INTEGER; /* Группа шагов калькуляции */ DECLARE VARIABLE CALC_PLAN_ID INTEGER; DECLARE VARIABLE GROU_ INTEGER; DECLARE VARIABLE SUM_AMOUNT DOUBLE PRECISION; DECLARE VARIABLE CENTER_ID INTEGER; DECLARE VARIABLE CALC_GOODS_ID INTEGER; begin nbr = 0; select coalesce(plan_id, 0) from bdg_calc where id = :calc_id into :calc_plan_id; /* Контрольное обновление записей, для предотвращения их изменения во время калькуляции (ДОДЕЛАТЬ) */ -- update bdg_calc -- set id = id -- where id = :calc_id; -- update bdg_scheme_order -- set id = id -- where scheme_id = :scheme_id; select c.scheme_id, c.scheme_atype, p.bdate, p.edate from bdg_calc c left join bdg_period p on p.id = c.period_id where c.id = :calc_id into :scheme_id, :scheme_atype, :bdate, :edate; /* Удаление старых данных: */ delete from bdg_calc_goods where calc_id = :calc_id; delete from bdg_calc_order where calc_id = :calc_id; /* Заполнение списка продукции/товаров: */ if (scheme_atype = 0) then begin /* Произведенная продукция */ insert into bdg_calc_goods (calc_id, center_id, goods_id, quant) select :calc_id, p.center_id, g.goods_id, sum(g.quant) from bdg_paper p left join bdg_goods g on g.paper_id = p.id where p.source_type = 4 and p.dat_ between :bdate and :edate and ((0 = :calc_plan_id and p.plan_id is null) or (0 <> :calc_plan_id and p.plan_id = :calc_plan_id)) and g.quant <> 0 and g.link_to is null group by p.center_id, g.goods_id; end else begin /* Реализованные продукция и товары (исключая возвраты покупателей) */ insert into bdg_calc_goods (calc_id, center_id, goods_id, atype, quant) select :calc_id, p.center_id, g.goods_id, case when p.source_type = 1 then 0 else 1 end, sum(g.quant) from bdg_paper p left join bdg_goods g on g.paper_id = p.id where p.source_type in (1, 2) and p.dat_ between :bdate and :edate and ((0 = :calc_plan_id and p.plan_id is null) or (0 <> :calc_plan_id and p.plan_id = :calc_plan_id)) and g.quant > 0 and g.link_to is null group by p.center_id, g.goods_id, p.source_type; end -- update bdg_scheme_order -- set id = id -- where scheme_id = :scheme_id; /* Пошаговый расчет: */ for select id, grou_ from bdg_scheme_order where scheme_id = :scheme_id and grou_ in (0, 2) order by nbr into :scheme_order_group_id, :grou_ do begin /* Добавляем группу калькуляции: */ calc_order_group_id = gen_id(gen_bdg_calc_order_id, 1); insert into bdg_calc_order (calc_id, id, grou_, name, nbr, owner, comment) select :calc_id, :calc_order_group_id, grou_, name, nbr, null, comment from bdg_scheme_order where id = :scheme_order_group_id; insert into bdg_calc_data (calc_order_id, calc_goods_id, amount) select :calc_order_group_id, cg.id, 0.0 from bdg_calc_goods cg where cg.calc_id = :calc_id; /* Для обычной группы:*/ if (grou_ = 0) then begin /* Производим калькуляцию по всем шагам текущей группы: */ for select id, name, nbr from bdg_scheme_order where owner = :scheme_order_group_id and grou_ = 1 order by nbr into :scheme_order_id, :order_name, :order_nbr do begin /* Добавляем шаг калькуляции: */ calc_order_id = gen_id(gen_bdg_calc_order_id, 1); insert into bdg_calc_order (calc_id, id, item_id, center_id, grou_, name, nbr, owner, goods_center_id, atype, comment) select :calc_id, :calc_order_id, item_id, center_id, grou_, name, nbr, :calc_order_group_id, goods_center_id, atype, comment from bdg_scheme_order where id = :scheme_order_id; /* Делаем расчеты: */ execute procedure sp_bdg_do_calc_order_step(:scheme_order_id, :calc_order_id); /* Суммируем рассчитанные данные для группы: */ update bdg_calc_data cd set cd.amount = cd.amount + (select coalesce(sum(amount), 0.0) from bdg_calc_data cd1 where cd1.calc_order_id = :calc_order_id and cd1.calc_goods_id = cd.calc_goods_id and cd1.amount is not null) where cd.calc_order_id = :calc_order_group_id; nbr = nbr + 1; suspend; end end /* Для агрегатной группы:*/ if (grou_ = 2) then begin execute procedure sp_bdg_do_calc_order_oper(:calc_id, :scheme_order_group_id, :grou_, :calc_order_group_id, null); end end for select cd.calc_goods_id, coalesce(co.center_id, 0), sum(cd.amount) from bdg_calc_order co left join bdg_calc_data cd on cd.calc_order_id = co.id where co.calc_id = :calc_id and co.grou_ = 0 group by cd.calc_goods_id, co.center_id into :calc_goods_id, :center_id, :sum_amount do update bdg_calc_goods cg set price = :sum_amount where cg.id = :calc_goods_id and (0 = :center_id or cg.center_id = :center_id); end^ ALTER PROCEDURE SP_BDG_DO_CALC_ORDER_OPER ( C_ID INTEGER, SO_ID INTEGER, SO_GROU_ INTEGER, CO_ID INTEGER, CO_GOODS_CENTER_ID INTEGER) AS declare variable CG_ID integer; declare variable CG_QUANT double precision; declare variable BASE_CO_ID integer; declare variable PORTION double precision; declare variable OPER_TYPE integer; declare variable VAL_TYPE integer; declare variable VAL_FLOAT double precision; declare variable VAL_BASIS_ID integer; declare variable VAL_ORDER_ID integer; begin for select oper_type, val_type, val_float, val_basis_id, val_order_id from bdg_scheme_oper where order_id = :so_id order by nbr into :oper_type, :val_type, :val_float, :val_basis_id, :val_order_id do begin /* Операнд: "Заданное значение" */ if (val_type = 0) then begin if (oper_type = 0 and val_float <> 0) then update bdg_calc_data set amount = amount + :val_float where calc_order_id = :co_id; if (oper_type = 1 and val_float <> 0) then update bdg_calc_data set amount = amount - :val_float where calc_order_id = :co_id; if (oper_type = 2 and val_float <> 0) then update bdg_calc_data set amount = amount * :val_float where calc_order_id = :co_id; if (oper_type = 3 and val_float <> 0) then update bdg_calc_data set amount = amount / :val_float where calc_order_id = :co_id; end /* Операнд: "База распределения" */ if (val_type = 1) then begin for select cg.id, bp.portion from bdg_calc_goods cg left join bdg_basis_portion bp on bp.goods_id = cg.goods_id and bp.basis_id = :val_basis_id where cg.calc_id = :c_id and bp.portion is not null and (0 = :co_goods_center_id or cg.center_id = :co_goods_center_id) into :cg_id, :portion do begin if (oper_type = 0 and portion <> 0) then update bdg_calc_data set amount = amount + :portion where calc_order_id = :co_id and calc_goods_id = :cg_id; else if (oper_type = 1 and portion <> 0) then update bdg_calc_data set amount = amount - :portion where calc_order_id = :co_id and calc_goods_id = :cg_id; else if (oper_type = 2 and portion <> 0) then update bdg_calc_data set amount = amount * :portion where calc_order_id = :co_id and calc_goods_id = :cg_id; else if (oper_type = 3 and portion <> 0) then update bdg_calc_data set amount = amount / :portion where calc_order_id = :co_id and calc_goods_id = :cg_id; end end /* Операнд: "Шаг разнесения" */ if (val_type = 2) then begin /* По номеру ищем ID шага, откуда брать сумму */ select id from bdg_calc_order where calc_id = :c_id and nbr = (select nbr from bdg_scheme_order where id = :val_order_id) and grou_ = (select grou_ from bdg_scheme_order where id = :val_order_id) into :base_co_id; /* Для всех изделий выполняем операнды */ for select cd.calc_goods_id, cd.amount, cg.quant from bdg_calc_data cd left join bdg_calc_goods cg on cg.id = cd.calc_goods_id where cd.calc_order_id = :base_co_id and cd.amount is not null into :cg_id, :portion, :cg_quant do begin if (so_grou_ = 1) then portion = portion / cg_quant; if (oper_type = 0) then update bdg_calc_data set amount = amount + :portion where calc_order_id = :co_id and calc_goods_id = :cg_id; else if (oper_type = 1) then update bdg_calc_data set amount = amount - :portion where calc_order_id = :co_id and calc_goods_id = :cg_id; else if (oper_type = 2) then update bdg_calc_data set amount = amount * :portion where calc_order_id = :co_id and calc_goods_id = :cg_id; else if (oper_type = 3 and portion <> 0) then update bdg_calc_data set amount = amount / :portion where calc_order_id = :co_id and calc_goods_id = :cg_id; end end end end^ ALTER PROCEDURE SP_BDG_DO_CALC_ORDER_STEP ( SCHEME_ORDER_ID INTEGER, CALC_ORDER_ID INTEGER) AS DECLARE VARIABLE C_ID INTEGER; /* BDG_CALC_ORDER.ID */ DECLARE VARIABLE C_PLAN_ID INTEGER; DECLARE VARIABLE C_PLAN_ID_0 INTEGER; DECLARE VARIABLE C_PERIOD_ID INTEGER; DECLARE VARIABLE CO_GOODS_CENTER_ID INTEGER; DECLARE VARIABLE CO_GOODS_ATYPE INTEGER; DECLARE VARIABLE CO_ITEM_ID INTEGER; DECLARE VARIABLE CO_CENTER_ID INTEGER; DECLARE VARIABLE CO_ATYPE INTEGER; DECLARE VARIABLE CD_ID INTEGER; DECLARE VARIABLE CG_ID INTEGER; DECLARE VARIABLE CG_GOODS_ID INTEGER; DECLARE VARIABLE S_ATYPE INTEGER; DECLARE VARIABLE SUM_GOODS_AMOUNT DOUBLE PRECISION; DECLARE VARIABLE SUM_AMOUNT DOUBLE PRECISION; DECLARE VARIABLE K DOUBLE PRECISION; DECLARE VARIABLE BDATE TIMESTAMP; DECLARE VARIABLE EDATE TIMESTAMP; begin select first 1 c.id, c.plan_id, coalesce(c.plan_id, 0), c.period_id, s.atype, co.atype, coalesce(co.goods_atype, -1), coalesce(co.goods_center_id, 0), coalesce(co.item_id, 0), coalesce(co.center_id, 0), p.bdate, p.edate from bdg_calc_order co left join bdg_calc c on c.id = co.calc_id left join bdg_scheme s on s.id = c.scheme_id left join bdg_period p on p.id = c.period_id where co.id = :calc_order_id into :c_id, :c_plan_id, :c_plan_id_0, :c_period_id, :s_atype, :co_atype, :co_goods_atype, :co_goods_center_id, :co_item_id, :co_center_id, :bdate, :edate; /* Для произв-й калькуляции устанавливаем "Продукция по всем ЦФУ" (!!!) */ /* if (s_atype = 0) then co_goods_center_id = 0;*/ /* Инициализируем значение расчетов нулем (0.0) */ insert into bdg_calc_data (calc_order_id, calc_goods_id, amount) select :calc_order_id, cg.id, 0.0 from bdg_calc_goods cg where cg.calc_id = :c_id and (0 = :co_goods_center_id or cg.center_id = :co_goods_center_id) and (-1 = :co_goods_atype or (0 = :co_goods_atype and cg.atype = 0) or (1 = :co_goods_atype and cg.atype = 1)); if (co_atype = 0) then begin /* Расчет материальной себестоимости / Себестоимости / Входной цены */ for select cd.id, cg.goods_id from bdg_calc_data cd left join bdg_calc_goods cg on cg.id = cd.calc_goods_id where cd.calc_order_id = :calc_order_id into :cd_id, :cg_goods_id do begin select coalesce(sum(bg.quant * bg.src_price), 0.0) from bdg_goods bg left join bdg_paper p on p.id = bg.paper_id where bg.goods_id = :cg_goods_id and p.dat_ between :bdate and :edate and ((0 = :c_plan_id_0 and p.plan_id is null) or (0 <> :c_plan_id_0 and p.plan_id = :c_plan_id_0)) and ((0 = :s_atype and p.source_type = 4) or (1 = :s_atype and p.source_type in (1, 2))) and (0 = :co_goods_center_id or p.center_id = :co_goods_center_id) into :sum_amount; if (:sum_amount <> 0) then update bdg_calc_data set amount = :sum_amount where id = :cd_id; end end else begin /* Расчет базы распределения -------------------------------------------- */ execute procedure sp_bdg_do_calc_order_oper(:c_id, :scheme_order_id, 1, :calc_order_id, :co_goods_center_id); for select cg.id, cg.quant from bdg_calc_goods cg where cg.calc_id = :c_id and (0 = :co_goods_center_id or cg.center_id = :co_goods_center_id) into :cg_id, :k do update bdg_calc_data cd set cd.amount = cd.amount * :k where cd.calc_order_id = :calc_order_id and cd.calc_goods_id = :cg_id; /* Разнесение затрат ---------------------------------------------------- */ /* Узнаем общую сумму затрат: */ select coalesce(sum(d.amount), 0.0) from sp_bdg_item_children(:co_item_id, 1) sp left join bdg_doc d on d.item_id = sp.id and d.doc_type = 0 and d.period_id = :c_period_id and d.center_id = :co_center_id and ((0 = :c_plan_id_0 and d.plan_id is null) or (0 <> :c_plan_id_0 and d.plan_id = :c_plan_id_0)) into :sum_amount; /* Узнаем общую сумму баз разнесения: */ select coalesce(sum(cd.amount), 0.0) from bdg_calc_data cd where calc_order_id = :calc_order_id into :sum_goods_amount; /* Разносим затраты: */ if (sum_goods_amount = 0.0) then k = 0.0; else k = :sum_amount / :sum_goods_amount; update bdg_calc_data set amount = amount * :k where calc_order_id = :calc_order_id; end suspend; end^ ALTER PROCEDURE SP_BDG_DO_DISTR ( DISTR_ID INTEGER, PLAN_ID INTEGER, PERIOD_ID INTEGER) RETURNS ( DISTR_ORDER_ID INTEGER) AS DECLARE VARIABLE PLAN_ID_0 INTEGER; DECLARE VARIABLE BDATE TIMESTAMP; DECLARE VARIABLE EDATE TIMESTAMP; DECLARE VARIABLE CENTER_ID INTEGER; DECLARE VARIABLE ITEM_ID INTEGER; DECLARE VARIABLE DOC_ITEM_ID INTEGER; DECLARE VARIABLE ITEM_GROU_ INTEGER; DECLARE VARIABLE DISTR_BASIS_ID INTEGER; begin select bdate, edate from bdg_period where id = :period_id into :bdate, :edate; if (plan_id is null) then plan_id_0 = 0; else plan_id_0 = plan_id; delete from bdg_doc where period_id = :period_id and ((0 = :plan_id_0 and plan_id is null) or (0 <> :plan_id_0 and plan_id = :plan_id_0)); /* Начальные распределяемые данные */ insert into bdg_doc (center_id, item_id, plan_id, amount, period_id, doc_type) select center_id, item_id, :plan_id, sum(amount), :period_id, 0 from bdg_paper where dat_ between :bdate and :edate and atype = 0 and source_type not in (5, 7) and ((0 = :plan_id_0 and plan_id is null) or (0 <> :plan_id_0 and plan_id = :plan_id_0)) group by center_id, item_id; /* Начальные нераспределяемые данные */ insert into bdg_doc (center_id, item_id, plan_id, amount, period_id, doc_type) select center_id, item_id, :plan_id, sum(amount), :period_id, 1 from bdg_paper where dat_ between :bdate and :edate and atype = 0 and source_type in (5, 7) and ((0 = :plan_id_0 and plan_id is null) or (0 <> :plan_id_0 and plan_id = :plan_id_0)) group by center_id, item_id; /* Пошаговое разнесение данных */ for select d.id, d.center_id, d.item_id, d.distr_basis_id, i.grou_ from bdg_distr_order d left join bdg_item i on i.id = d.item_id where distr_id = :distr_id order by d.nbr into :distr_order_id, :center_id, :item_id, :distr_basis_id, :item_grou_ do begin /* Разнесение: "Все статьи" */ if (item_id is null) then begin for select distinct item_id from bdg_doc where center_id = :center_id and period_id = :period_id and doc_type = 0 and ((0 = :plan_id_0 and plan_id is null) or (0 <> :plan_id_0 and plan_id = :plan_id_0)) into :doc_item_id do execute procedure sp_bdg_do_distr_item(:center_id, :plan_id, :doc_item_id, :distr_basis_id, :period_id); end /* Разнесение: "Группа статей" */ if ((item_id is not null) and (item_grou_ = 0)) then begin for select i.id from sp_bdg_item_children(:item_id, 0) sp left join bdg_item i on i.id = sp.id where i.grou_ = 1 into :doc_item_id do execute procedure sp_bdg_do_distr_item(:center_id, :plan_id, :doc_item_id, :distr_basis_id, :period_id); end /* Разнесение: "Статья" */ if ((item_id is not null) and (item_grou_ = 1)) then begin execute procedure sp_bdg_do_distr_item(:center_id, :plan_id, :item_id, :distr_basis_id, :period_id); end suspend; end end^ ALTER PROCEDURE SP_BDG_DO_DISTR_ITEM ( CENTER_ID INTEGER, PLAN_ID INTEGER, ITEM_ID INTEGER, DISTR_BASIS_ID INTEGER, PERIOD_ID INTEGER) AS DECLARE VARIABLE PLAN_ID_0 INTEGER; DECLARE VARIABLE SUM_AMOUNT DOUBLE PRECISION; DECLARE VARIABLE SUM_PORTION DOUBLE PRECISION; DECLARE VARIABLE PORTION DOUBLE PRECISION; DECLARE VARIABLE NEW_CENTER_ID INTEGER; DECLARE VARIABLE ID INTEGER; begin if (plan_id is null) then plan_id_0 = 0; else plan_id_0 = plan_id; select coalesce(sum(amount), 0.0) from bdg_doc where center_id = :center_id and period_id = :period_id and item_id = :item_id and doc_type = 0 and ((0 = :plan_id_0 and plan_id is null) or (0 <> :plan_id_0 and plan_id = :plan_id_0)) into :sum_amount; if (sum_amount <> 0.0) then begin select sum(portion) from bdg_distr_portion where distr_basis_id = :distr_basis_id and period_id = :period_id into :sum_portion; delete from bdg_doc where center_id = :center_id and period_id = :period_id and item_id = :item_id and doc_type = 0 and ((0 = :plan_id_0 and plan_id is null) or (0 <> :plan_id_0 and plan_id = :plan_id_0)); for select portion, center_id from bdg_distr_portion where distr_basis_id = :distr_basis_id and period_id = :period_id into :portion, :new_center_id do begin id = null; if (portion <> 0.0) then select first 1 id from bdg_doc where period_id = :period_id and item_id = :item_id and center_id = :new_center_id and doc_type = 0 and ((0 = :plan_id_0 and plan_id is null) or (0 <> :plan_id_0 and plan_id = :plan_id_0)) into :id; if (id is null) then insert into bdg_doc (period_id, plan_id, item_id, center_id, doc_type, amount) values (:period_id, :plan_id, :item_id, :new_center_id, 0, (:portion / :sum_portion) * :sum_amount); else update bdg_doc set amount = amount + (:portion / :sum_portion) * :sum_amount where id = :id; end end suspend; end^ ALTER PROCEDURE SP_BDG_FACT_REG_SALE ( OBJ_ID INTEGER, DAT_ TIMESTAMP, CENTER_ID INTEGER, DIRECTION_ID INTEGER, GSALE_ITEM_ID INTEGER, GCOST_ITEM_ID INTEGER, WSALE_ITEM_ID INTEGER, REASON VARCHAR(255), COMMENT VARCHAR(255), USERID INTEGER, ORGN_ID INTEGER, ORGNINFO_ID INTEGER, WPRICE_BY_CALC INTEGER, WORK_AS_GOODS INTEGER, NDS INTEGER) AS declare variable D_ORGNINFO_ID integer; declare variable D_ORGN_ID integer; declare variable NEW_GSALE_PAPER_ID integer; declare variable NEW_GCOST_PAPER_ID integer; declare variable NEW_WSALE_PAPER_ID integer; declare variable NEW_BDG_GOODS_ID integer; declare variable DGV_DATE timestamp; declare variable GK_ID integer; declare variable GDD_ID integer; declare variable GDD_GOODS_ID integer; declare variable GDD_QUANT double precision; declare variable GDD_PRICE double precision; declare variable GDD_PRICE_SRC double precision; declare variable CNT integer; declare variable uPaperID integer; declare variable uLinkTo integer; declare variable uSumma double precision; declare variable uNds double precision; declare variable OurOrgnID integer; begin delete from bdg_paper where obj_id = :obj_id; select dd.out_date, dd.nameid, dd.orgninfoid, s.ourorgnid from dgvdt dd join StorList s on s.id=dd.stor where dd.objid = :obj_id into :dgv_date, :d_orgn_id, :d_orgninfo_id, :OurOrgnID; if (dat_ is null) then dat_ = dgv_date; if (:orgn_id is not null) then d_orgn_id = :orgn_id; if (:orgninfo_id is not null) then d_orgninfo_id = :orgninfo_id; /* -- Добавляем упр. документы -------------------------------------------- */ /* Документ: Реализация продукции */ if (work_as_goods = 0) then begin cnt = null; select first 1 gk.id from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey where dd.objid = :obj_id and wm.id is not null -- Продукция - товары, на которые есть производственные нормы into :cnt; if (cnt is null) then new_wsale_paper_id = null; else begin if (wsale_item_id is null) then exception bdg_bad_sp_param; select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_wsale_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_wsale_paper_id, 0, null, :wsale_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 1, null, null, 2, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); end end /* Документы по реализация товаров */ cnt = null; select first 1 gk.id from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey where dd.objid = :obj_id and (wm.id is null or (:work_as_goods = 1)) into :cnt; if (cnt is null) then begin new_gsale_paper_id = null; new_gcost_paper_id = null; end else begin if (gsale_item_id is null or gcost_item_id is null) then exception bdg_bad_sp_param; /* Документ: Доходы от реализации */ select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_gsale_paper_id; uLinkTo = :new_gsale_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_gsale_paper_id, 0, null, :gsale_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 2, null, null, 2, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); /* Документ: Затраты на закупку */ select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_gcost_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_gcost_paper_id, 0, null, :gcost_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 7, :new_gsale_paper_id, null, 1, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); -- регистрация услуг в накладной SELECT CoalEsce(SUM(U.QUANT*U.PRICE),0.0) SUMMA, CoalEsce(SUM(U.QUANT*U.NDS),0.0) NDS FROM DGVDT DD JOIN GDDDTDDU U ON U.DGVKEY=DD.ID WHERE DD.OBJID=:OBJ_ID into :uSumma, :uNds; if (:uSumma <> 0.0) then begin if (:Nds = 0) then uSumma = :uSumma - :uNds; select gen_id(gen_bdg_paper_id, 1) from rdb$database into :uPaperID; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:uPaperID, 0, null, :gsale_item_id, :center_id, :direction_id, :dat_, :uSumma, 0.0, :reason, :comment, :obj_id, :userid, 2, :uLinkTo, null, 1, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); end end /* -- Добавляем номенклатуру товаров в упр-е документы -------------------- */ for select gd.id, sgk.gdskey, gd.quant, case :nds when 0 then gd.price - gd.nds else gd.price end, case :nds when 0 then sgk.price - sgk.nds else sgk.price end from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey left join gdddt_srcktid(gd.id) src on gd.id = gd.id left join gddkt sgk on sgk.id = src.ktid where dd.objid = :obj_id and (wm.id is null or (:work_as_goods = 1)) into :gdd_id, :gdd_goods_id, :gdd_quant, :gdd_price, :gdd_price_src do begin select gen_id(gen_bdg_goods_id, 1) from rdb$database into :new_bdg_goods_id; if (not :gdd_goods_id is null) then /* Доходы от реализации товаров */ insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_gsale_paper_id, :gdd_quant, :gdd_price, :gdd_price_src, :userid, :gdd_id); /* Затраты на закупочную стоимость товаров */ /* -- Добавляются через тригер при вставке доходов -- */ /*$$IBEC$$ insert into bdg_goods (goods_id, paper_id, quant, price, userid, obj_gdd_id, link_to) values (:gdd_goods_id, :new_gcost_paper_id, :gdd_quant, :gdd_price_src, :userid, :gdd_id, :new_bdg_goods_id); $$IBEC$$*/ end /* -- Добавляем номенклатуру продукции в упр-е документы ------------------ */ if (work_as_goods = 0) then begin for select gd.id, gk.gdskey, gd.quant, case :nds when 0 then gd.price - gd.nds else gd.price end, gk.id from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey where dd.objid = :obj_id and wm.id is not null into :gdd_id, :gdd_goods_id, :gdd_quant, :gdd_price, :gk_id do begin select gen_id(gen_bdg_goods_id, 1) from rdb$database into :new_bdg_goods_id; execute procedure gdddt_srcktid(:gdd_id) returning_values :gk_id; /* Узнаем себестоимость продукции */ if (wprice_by_calc = 1) then select first 1 -- защита от ошибки, если там окажется 2 записи coalesce(bg.price, gk.price - gk.nds) from gddkt gk left join bdg_goods bg on bg.obj_gdd_id = gk.id where gk.id = :gk_id into :gdd_price_src; else select gk.price - gk.nds from gddkt gk where gk.id = :gk_id into :gdd_price_src; /* Доходы от реализации продукции */ insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_wsale_paper_id, :gdd_quant, :gdd_price, :gdd_price_src, :userid, :gdd_id); /* Себестоимость реализованной продукции */ /* -- Теперь хранится в поле SRC_PRICE */ /*$$IBEC$$ insert into bdg_goods (goods_id, paper_id, quant, price, userid, obj_gdd_id, link_to) values (:gdd_goods_id, null, 0.0, :gdd_price_src, :userid, null, :new_bdg_goods_id); $$IBEC$$*/ end end update obj_class set bdg_state = 1 where id = :obj_id; end^ ALTER PROCEDURE SP_BDG_FACT_REG_SALE_PRM ( OBJ_ID INTEGER, DAT_ TIMESTAMP, CENTER_ID INTEGER, DIRECTION_ID INTEGER, GSALE_ITEM_ID INTEGER, GCOST_ITEM_ID INTEGER, WSALE_ITEM_ID INTEGER, REASON VARCHAR(255), COMMENT VARCHAR(255), USERID INTEGER, ORGN_ID INTEGER, ORGNINFO_ID INTEGER, WPRICE_BY_CALC INTEGER, WORK_AS_GOODS INTEGER, NDS INTEGER) AS declare variable D_ORGNINFO_ID integer; declare variable D_ORGN_ID integer; declare variable NEW_GSALE_PAPER_ID integer; declare variable NEW_GCOST_PAPER_ID integer; declare variable NEW_WSALE_PAPER_ID integer; declare variable NEW_BDG_GOODS_ID integer; declare variable DGV_DATE timestamp; declare variable GK_ID integer; declare variable GDD_ID integer; declare variable GDD_GOODS_ID integer; declare variable GDD_QUANT double precision; declare variable GDD_PRICE double precision; declare variable GDD_PRICE_SRC double precision; declare variable CNT integer; declare variable uPaperID integer; declare variable uLinkTo integer; declare variable uSumma double precision; declare variable uNds double precision; declare variable aSumma double precision; declare variable aNds double precision; declare variable OurOrgnID integer; declare variable BdgtItem1 integer; declare variable BdgtItem2 integer; begin -- При регистрации по параметрам продукцию регистрируем как товар work_as_goods = 1; delete from bdg_paper where obj_id = :obj_id; select dd.out_date, dd.nameid, dd.orgninfoid, s.ourorgnid from dgvdt dd join StorList s on s.id=dd.stor where dd.objid = :obj_id into :dgv_date, :d_orgn_id, :d_orgninfo_id, :OurOrgnID; if (dat_ is null) then dat_ = dgv_date; if (:orgn_id is not null) then d_orgn_id = :orgn_id; if (:orgninfo_id is not null) then d_orgninfo_id = :orgninfo_id; /* -- Добавляем упр. документы -------------------------------------------- */ /* Документ: Реализация продукции */ if (work_as_goods = 0) then begin cnt = null; select first 1 gk.id from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey where dd.objid = :obj_id and wm.id is not null -- Продукция - товары, на которые есть производственные нормы into :cnt; if (cnt is null) then new_wsale_paper_id = null; else begin if (wsale_item_id is null) then exception bdg_bad_sp_param 'WSale_Item_ID is null'; select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_wsale_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_wsale_paper_id, 0, null, :wsale_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 1, null, null, 2, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); end end /* Документы по реализация товаров */ cnt = null; select first 1 gk.id from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey where dd.objid = :obj_id and (wm.id is null or (:work_as_goods = 1)) into :cnt; if (:Direction_ID is Null) then exception bdg_bad_sp_param 'Direction_ID is Null'; if (:Center_ID is Null) then exception bdg_bad_sp_param 'Center_ID is Null'; if (cnt is null) then begin new_gsale_paper_id = null; new_gcost_paper_id = null; end else begin -- if (gsale_item_id is null or gcost_item_id is null) then -- exception bdg_bad_sp_param; -- Документ: Доходы от реализации for select v.bdgtitem2, sum(d.quant*d.price), sum(d.quant*d.nds) from dgvdt dd join gdddt d on d.dgvkey=dd.id join gddkt k on k.id=d.gddkey join goods g on g.id=k.gdskey join gdsparamgdsref r on r.goodsid=g.id join gdsparamval v on v.paramid=r.paramid and v.id=r.fixval where dd.objid=:obj_id and v.bdgtitem2 is not null group by v.bdgtitem2 into :gsale_item_id, :aSumma, :aNds do begin select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_gsale_paper_id; uLinkTo = :new_gsale_paper_id; if (:Nds = 0) then aSumma = :aSumma-:aNds; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_gsale_paper_id, 0, null, :gsale_item_id, :center_id, :direction_id, :dat_, 0.0 ,0.0, /* :aSumma, :aNds, */ :reason, :comment, :obj_id, :userid, 2, null, null, 2, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); -- Документ: Затраты на закупку for select v.bdgtitem1, sum(d.quant*k.price), sum(d.quant*k.nds) from dgvdt dd join gdddt d on d.dgvkey=dd.id join gddkt k on k.id=d.gddkey join goods g on g.id=k.gdskey join gdsparamgdsref r on r.goodsid=g.id join gdsparamval v on v.paramid=r.paramid and v.id=r.fixval where dd.objid=:obj_id and v.bdgtitem1 is not null and v.bdgtitem2 = :gsale_item_id group by v.bdgtitem1 into :gcost_item_id, :aSumma, :aNds do begin select gen_id(gen_bdg_paper_id, 1) from rdb$database into : new_gcost_paper_id; uLinkTo = :new_gsale_paper_id; if (:Nds = 0) then aSumma = :aSumma-:aNds; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_gcost_paper_id, 0, null, :gcost_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, -- :aSumma, :aNds, :reason, :comment, :obj_id, :userid, 7, :uLinkTo, null, 1, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); -- Добавляем номенклатуру товаров в упр-е документы -------------------- for select gd.id, sgk.gdskey, gd.quant, case :nds when 0 then gd.price - gd.nds else gd.price end, case :nds when 0 then sgk.price - sgk.nds else sgk.price end from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey left join gdddt_srcktid(gd.id) src on gd.id = gd.id left join gddkt sgk on sgk.id = src.ktid join goods g on g.id=gk.gdskey join gdsparamgdsref r on r.goodsid=g.id join gdsparamval v on v.paramid=r.paramid and v.id=r.fixval where dd.objid = :obj_id and v.bdgtitem2 = :gsale_item_id and v.bdgtitem1 = :gcost_item_id and (wm.id is null or (:work_as_goods = 1)) into :gdd_id, :gdd_goods_id, :gdd_quant, :gdd_price, :gdd_price_src do begin select gen_id(gen_bdg_goods_id, 1) from rdb$database into :new_bdg_goods_id; if (not :gdd_goods_id is null) then -- Доходы от реализации товаров insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_gsale_paper_id, :gdd_quant, :gdd_price, :gdd_price_src, :userid, :gdd_id); end end end /* select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_gsale_paper_id; uLinkTo = :new_gsale_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_gsale_paper_id, 0, null, :gsale_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 2, null, null, 2, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); */ /* -- Добавляем номенклатуру товаров в упр-е документы -------------------- for select gd.id, sgk.gdskey, gd.quant, case :nds when 0 then gd.price - gd.nds else gd.price end, case :nds when 0 then sgk.price - sgk.nds else sgk.price end from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey left join gdddt_srcktid(gd.id) src on gd.id = gd.id left join gddkt sgk on sgk.id = src.ktid join goods g on g.id=gk.gdskey join gdsparamgdsref r on r.goodsid=g.id join gdsparamval v on v.paramid=r.paramid and v.id=r.fixval where dd.objid = :obj_id and v.bdgtitem1 = :gcost_item_id and (wm.id is null or (:work_as_goods = 1)) into :gdd_id, :gdd_goods_id, :gdd_quant, :gdd_price, :gdd_price_src do begin select gen_id(gen_bdg_goods_id, 1) from rdb$database into :new_bdg_goods_id; if (not :gdd_goods_id is null) then -- Доходы от реализации товаров insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_gcost_paper_id, :gdd_quant, :gdd_price, :gdd_price_src, :userid, :gdd_id); end */ /* select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_gcost_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_gcost_paper_id, 0, null, :gcost_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 7, :new_gsale_paper_id, null, 1, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); -- регистрация услуг в накладной SELECT CoalEsce(SUM(U.QUANT*U.PRICE),0.0) SUMMA, CoalEsce(SUM(U.QUANT*U.NDS),0.0) NDS FROM DGVDT DD JOIN GDDDTDDU U ON U.DGVKEY=DD.ID WHERE DD.OBJID=:OBJ_ID into :uSumma, :uNds; if (:uSumma <> 0.0) then begin if (:Nds = 0) then uSumma = :uSumma - :uNds; select gen_id(gen_bdg_paper_id, 1) from rdb$database into :uPaperID; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:uPaperID, 0, null, :gsale_item_id, :center_id, :direction_id, :dat_, :uSumma, 0.0, :reason, :comment, :obj_id, :userid, 2, :uLinkTo, null, 1, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); end */ end -- Добавляем номенклатуру продукции в упр-е документы ------------------ */ if (work_as_goods = 0) then begin for select gd.id, gk.gdskey, gd.quant, case :nds when 0 then gd.price - gd.nds else gd.price end, gk.id from dgvdt dd left join gdddt gd on gd.dgvkey = dd.id left join gddkt gk on gk.id = gd.gddkey left join workmain wm on wm.godsid = gk.gdskey where dd.objid = :obj_id and wm.id is not null into :gdd_id, :gdd_goods_id, :gdd_quant, :gdd_price, :gk_id do begin select gen_id(gen_bdg_goods_id, 1) from rdb$database into :new_bdg_goods_id; execute procedure gdddt_srcktid(:gdd_id) returning_values :gk_id; -- Узнаем себестоимость продукции if (wprice_by_calc = 1) then select first 1 -- защита от ошибки, если там окажется 2 записи coalesce(bg.price, gk.price - gk.nds) from gddkt gk left join bdg_goods bg on bg.obj_gdd_id = gk.id where gk.id = :gk_id into :gdd_price_src; else select gk.price - gk.nds from gddkt gk where gk.id = :gk_id into :gdd_price_src; -- Доходы от реализации продукции insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_wsale_paper_id, :gdd_quant, :gdd_price, :gdd_price_src, :userid, :gdd_id); end end update obj_class set bdg_state = 1 where id = :obj_id; end^ ALTER PROCEDURE SP_BDG_FACT_REG_SALE_RET ( OBJ_ID INTEGER, DAT_ TIMESTAMP, CENTER_ID INTEGER, DIRECTION_ID INTEGER, GSALE_ITEM_ID INTEGER, GCOST_ITEM_ID INTEGER, WSALE_ITEM_ID INTEGER, REASON VARCHAR(255), COMMENT VARCHAR(254), USERID INTEGER, ORGN_ID INTEGER, ORGNINFO_ID INTEGER, WPRICE_BY_CALC INTEGER, WORK_AS_GOODS INTEGER, NDS INTEGER) AS declare variable D_ORGNINFO_ID integer; declare variable D_ORGN_ID integer; declare variable NEW_GSALE_PAPER_ID integer; declare variable NEW_GCOST_PAPER_ID integer; declare variable NEW_WSALE_PAPER_ID integer; declare variable NEW_BDG_GOODS_ID integer; declare variable GK_ID integer; declare variable GDD_ID integer; declare variable GDD_GOODS_ID integer; declare variable GDD_QUANT double precision; declare variable GDD_PRICE double precision; declare variable GDD_PRICE_SRC double precision; declare variable CNT integer; declare variable ourorgnid integer; begin delete from bdg_paper where obj_id = :obj_id; select coalesce(:dat_, kk.dat_), kk.nameid, kk.orgninfoid, s.OurOrgnID from dgvkt kk join storlist s on s.id=kk.stor where kk.objid = :obj_id into :dat_, :d_orgn_id, :d_orgninfo_id, :OurOrgnID; if (:orgn_id is not null) then d_orgn_id = :orgn_id; if (:orgninfo_id is not null) then d_orgninfo_id = :orgninfo_id; /* Добавляем упр. документы ----------------------------------------------- */ /* Возврат продукции (товаров, на которые есть производственные нормы) */ if (work_as_goods = 0) then begin cnt = null; select first 1 gk.id from dgvkt dk left join gddkt gk on gk.dgvkey = dk.id left join workmain wm on wm.godsid = gk.gdskey where dk.objid = :obj_id and wm.id is not null into :cnt; if (cnt is null) then new_wsale_paper_id = null; else begin select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_wsale_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_wsale_paper_id, 0, null, :wsale_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 1, null, null, 2, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); end end /* Возврат товаров */ cnt = null; select first 1 gk.id from dgvkt dk left join gddkt gk on gk.dgvkey = dk.id left join workmain wm on wm.godsid = gk.gdskey where dk.objid = :obj_id and (wm.id is null or (:work_as_goods = 1)) into :cnt; if (cnt is null) then begin new_gsale_paper_id = null; new_gcost_paper_id = null; end else begin /* Доходы от реализации */ select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_gsale_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_gsale_paper_id, 0, null, :gsale_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 2, null, null, 2, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); /* Затраты на закупку */ select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_gcost_paper_id; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, orgn_id, orgninfo_id, OurOrgnID) values (:new_gcost_paper_id, 0, null, :gcost_item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 7, :new_gsale_paper_id, null, 1, :d_orgn_id, :d_orgninfo_id, :OurOrgnID); end /* Добавляем номенклатуру товаров в упр-е документы ----------------------- */ for select gk.id, gk.gdskey, gk.source, case :nds when 0 then rgd.price - rgd.nds else rgd.price end, case :nds when 0 then sgk.price - sgk.nds else sgk.price end from dgvkt dk left join gddkt gk on gk.dgvkey = dk.id left join workmain wm on wm.godsid = gk.gdskey left join gddkt_srcktid(gk.id) src on gk.id = gk.id left join gddkt sgk on sgk.id = src.ktid left join dgvkt sdk on sdk.id = sgk.dgvkey left join gdddt rgd on rgd.id = gk.gddkey where dk.objid = :obj_id and (wm.id is null or (:work_as_goods = 1)) and sdk.typ = 0 into :gdd_id, :gdd_goods_id, :gdd_quant, :gdd_price, :gdd_price_src do begin select gen_id(gen_bdg_goods_id, 1) from rdb$database into :new_bdg_goods_id; /* Доходы от реализации товаров */ insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_gsale_paper_id, :gdd_quant * (-1), :gdd_price, :gdd_price_src, :userid, :gdd_id); /* Затраты на закупочную стоимость товаров */ /* -- Добавляются через тригер при вставке доходов -- */ /*$$IBEC$$ insert into bdg_goods (link_to, goods_id, paper_id, quant, price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_gcost_paper_id, :gdd_quant * (-1), :gdd_price_src, :userid, :gdd_id); $$IBEC$$*/ end /* Добавляем номенклатуру продукции в упр-е документы --------------------- */ if (work_as_goods = 0) then begin for select gk.id, gk.gdskey, gk.source, case :nds when 0 then rgd.price - rgd.nds else rgd.price end from dgvkt dk left join gddkt gk on gk.dgvkey = dk.id left join workmain wm on wm.godsid = gk.gdskey left join gdddt rgd on rgd.id = gk.gddkey where dk.objid = :obj_id and wm.id is not null into :gdd_id, :gdd_goods_id, :gdd_quant, :gdd_price do begin select gen_id(gen_bdg_goods_id, 1) from rdb$database into :new_bdg_goods_id; execute procedure gddkt_srcktid(:gdd_id) returning_values :gk_id; /* Узнаем себестоимость продукции */ if (wprice_by_calc = 1) then select first 1 coalesce(bg.price, gk.price - gk.nds) from gddkt gk left join bdg_goods bg on bg.obj_gdd_id = gk.id where gk.id = :gk_id into :gdd_price_src; else select gk.price - gk.nds from gddkt gk where gk.id = :gk_id into :gdd_price_src; /* Доходы от реализации продукции */ insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_wsale_paper_id, :gdd_quant * (-1), :gdd_price, :gdd_price_src, :userid, :gdd_id); /* Себестоимость реализованоой продукции */ /* -- Теперь хранится в поле SRC_PRICE */ /*$$IBEC$$ insert into bdg_goods (goods_id, paper_id, quant, price, userid, obj_gdd_id, link_to) values (:gdd_goods_id, :new_wsale_paper_id, 0.0, :gdd_price_src, :userid, :gdd_id, :new_bdg_goods_id); $$IBEC$$*/ end end update obj_class set bdg_state = 1 where id = :obj_id; suspend; end^ ALTER PROCEDURE SP_BDG_FACT_REG_WORK ( OBJ_ID INTEGER, DAT_ TIMESTAMP, CENTER_ID INTEGER, DIRECTION_ID INTEGER, ITEM_ID INTEGER, REASON VARCHAR(255), COMMENT VARCHAR(255), USERID INTEGER) AS DECLARE VARIABLE NEW_PAPER_WORK_ID INTEGER; DECLARE VARIABLE NEW_PAPER_MATERIAL_ID INTEGER; DECLARE VARIABLE NEW_BDG_GOODS_ID INTEGER; DECLARE VARIABLE GDD_ID INTEGER; DECLARE VARIABLE GDD_GOODS_ID INTEGER; DECLARE VARIABLE GDD_QUANT DOUBLE PRECISION; DECLARE VARIABLE GDD_PRICE DOUBLE PRECISION; declare variable ourorgnid integer; begin delete from bdg_paper where obj_id = :obj_id; if (dat_ is null) then select kk.dat_, s.ourorgnid from dgvkt kk join storlist s on s.id=kk.stor where kk.objid = :obj_id into :dat_, :OurOrgnID; /* Добавляем упр. документы: */ select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_paper_work_id; select gen_id(gen_bdg_paper_id, 1) from rdb$database into :new_paper_material_id; /* -- Производство */ insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, OurOrgnID) values (:new_paper_work_id, 2, null, null, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, :obj_id, :userid, 4, null, null, 2, :OurOrgnID); /* -- Затраты на сырье */ insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, obj_id, userid, source_type, link_to, link_koef, inp_type, OurOrgnID) values (:new_paper_material_id, 0, null, :item_id, :center_id, :direction_id, :dat_, 0.0, 0.0, :reason, :comment, null, :userid, 5, :new_paper_work_id, null, 1, :OurOrgnID); /* Добавляем номенклатуру в упр. документы: */ for select gk.id, gk.gdskey, gk.source, gk.price - gk.nds from dgvkt dk left join gddkt gk on gk.dgvkey = dk.id where dk.objid = :obj_id into :gdd_id, :gdd_goods_id, :gdd_quant, :gdd_price do begin select gen_id(gen_bdg_goods_id, 1) from rdb$database into :new_bdg_goods_id; /* Производство */ insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid, obj_gdd_id) values (:new_bdg_goods_id, :gdd_goods_id, :new_paper_work_id, :gdd_quant, :gdd_price, 0.0, :userid, :gdd_id); /* Затраты на сырье */ insert into bdg_goods (goods_id, paper_id, quant, price, userid, obj_gdd_id, link_to) select gk.gdskey, :new_paper_material_id, sum(gd.quant), avg(gd.price - gd.nds), :userid, null,--gd.id, :new_bdg_goods_id from gdddt gd left join gddkt gk on gk.id = gd.gddkey where gd.zkid = :gdd_id group by gk.gdskey;--, gd.id; end update obj_class set bdg_state = 1 where id = :obj_id; suspend; end^ ALTER PROCEDURE SP_BDG_ITEM_CHILDREN ( ITEM_ID INTEGER, SELF_INCLUDE INTEGER) RETURNS ( ID INTEGER) AS begin if (item_id is null) then /* Все элементы */ for select id from bdg_item into :id do suspend; else begin if (self_include = 1) then begin id = item_id; suspend; end for select id from bdg_item where owner = :item_id into :id do begin for select id from sp_bdg_item_children (:id, 1) into :id do suspend; end end end^ ALTER PROCEDURE SP_BDG_ITEM_PARENTS ( ID INTEGER) RETURNS ( OWNER INTEGER) AS BEGIN while (:id <> 0 and id is not null) do /* ищем до корня */ begin select owner from bdg_item where id = :id into :owner; id = :owner; /* код родителя для следующей выборки */ if (owner is not null) then suspend; end END^ ALTER PROCEDURE SP_BDG_PERIOD_GETCHILDREN ( PERIOD_ID INTEGER, SELF_INCLUDE INTEGER) RETURNS ( ID INTEGER) AS begin if (period_id is null) then /* все элементы */ for select id from bdg_period into :id do suspend; else begin if (self_include = 1) then begin id = period_id; suspend; end for select sp.id from bdg_period p left join sp_bdg_period_getchildren(p.id, 1) sp on 0 = 0 where p.owner = :period_id into :id do suspend; end end^ ALTER PROCEDURE SP_BDG_PERIOD_PAPER_COPY ( SOURCE_PLAN_ID INTEGER, TARGET_PLAN_ID INTEGER, SOURCE_BDATE TIMESTAMP, SOURCE_EDATE TIMESTAMP, TARGET_BDATE TIMESTAMP, TARGET_EDATE TIMESTAMP, ITEM_KIND INTEGER, ITEM_RESULT_TYPE INTEGER, PAPER_ATYPE INTEGER, PAPER_SOURCE_TYPE INTEGER, PAPER_CENTER_ID INTEGER, PAPER_DIRECTION_ID INTEGER, USERID INTEGER) RETURNS ( S_ID INTEGER, T_ID INTEGER) AS DECLARE VARIABLE S_DATE TIMESTAMP; DECLARE VARIABLE T_DATE TIMESTAMP; DECLARE VARIABLE DAYS_SHIFT INTEGER; DECLARE VARIABLE G_ID INTEGER; DECLARE VARIABLE NEW_G_ID INTEGER; DECLARE VARIABLE NEW_P_ID INTEGER; begin days_shift = target_bdate - source_bdate; for select p.id, dat_ from bdg_paper p left join bdg_item i on i.id = p.item_id where p.atype = :paper_atype and p.source_type = :paper_source_type and p.dat_ between :source_bdate and :source_edate and p.center_id = :paper_center_id and p.direction_id = :paper_direction_id and (p.atype = 2 or (p.atype <> 2 and i.kind = :item_kind)) and (p.atype = 2 or (p.atype <> 2 and i.result_type = :item_result_type)) and p.plan_id = :source_plan_id and p.link_to is null into :s_id, :s_date do begin t_id = gen_id(gen_bdg_paper_id, 1); t_date = s_date + days_shift; if (t_date > target_edate) then t_date = target_edate; insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, userid, source_type, inp_type) select :t_id, atype, :target_plan_id, item_id, center_id, direction_id, :t_date, amount, nds, reason, comment, :userid, source_type, 3 from bdg_paper where id = :s_id; if (paper_source_type in (1, 2, 3)) then update bdg_paper set amount = 0, nds = 0 where id = :t_id; if (paper_source_type = 1) then insert into bdg_goods (goods_id, paper_id, quant, price, src_price, userid) select goods_id, :t_id, quant, price, src_price, :userid from bdg_goods where paper_id = :s_id; if (paper_source_type = 2) then begin /* Добавляем документ с затратами по реализации товаров */ new_p_id = gen_id(gen_bdg_paper_id, 1); insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, userid, source_type, inp_type, link_to) select :new_p_id, atype, :target_plan_id, item_id, center_id, direction_id, :t_date, 0.0, 0.0, reason, comment, :userid, source_type, 7, :t_id from bdg_paper where link_to = :s_id and source_type = 7; /* Добавляем позиции товаров */ for select id from bdg_goods where paper_id = :s_id into :g_id do begin new_g_id = gen_id(gen_bdg_goods_id, 1); insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid) select :new_g_id, goods_id, :t_id, quant, price, src_price, :userid from bdg_goods where id = :g_id; end end if (paper_source_type = 3) then insert into bdg_serv (serv_id, paper_id, quant, price, userid) select serv_id, :t_id, quant, price, :userid from bdg_serv where paper_id = :s_id; if (paper_source_type = 4) then begin /* Добавляем документ затрат на сырье */ new_p_id = gen_id(gen_bdg_paper_id, 1); insert into bdg_paper (id, atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, userid, source_type, inp_type, link_to) select :new_p_id, atype, :target_plan_id, item_id, center_id, direction_id, :t_date, 0.0, 0.0, reason, comment, :userid, source_type, 5, :t_id from bdg_paper where link_to = :s_id and source_type = 5; /* Добавляем продукцию и сырье */ for select id from bdg_goods where paper_id = :s_id into :g_id do begin new_g_id = gen_id(gen_bdg_goods_id, 1); insert into bdg_goods (id, goods_id, paper_id, quant, price, src_price, userid) select :new_g_id, goods_id, :t_id, quant, price, 0.0, :userid from bdg_goods where id = :g_id; insert into bdg_goods (goods_id, paper_id, quant, price, src_price, userid, link_to) select goods_id, :new_p_id, quant, price, src_price, :userid, :new_g_id from bdg_goods where link_to = :g_id; end end /* Копируем привязанные оплаты */ insert into bdg_paper (atype, plan_id, item_id, center_id, direction_id, dat_, amount, nds, reason, comment, userid, source_type, link_to, link_koef, inp_type) select atype, :target_plan_id, item_id, center_id, direction_id, :t_date + (dat_ - :s_date), amount, nds, reason, comment, :userid, source_type, :t_id, link_koef, 3 from bdg_paper where link_to = :s_id and atype = 1; suspend; end end^ ALTER PROCEDURE SP_BDG_SET_DATA_STATE ( PERIOD_ID INTEGER, PLAN_ID INTEGER, ATYPE INTEGER, ASTATE INTEGER) AS DECLARE VARIABLE ID INTEGER; begin if (plan_id is null) then select id from bdg_data_state where atype = :atype and plan_id is null and period_id = :period_id into :id; else select id from bdg_data_state where atype = :atype and plan_id = :plan_id and period_id = :period_id into :id; if (id is null) then insert into bdg_data_state (atype, period_id, plan_id, astate) values (:atype, :period_id, :plan_id, :astate); else update bdg_data_state set astate = :astate where id = :id; suspend; end^ ALTER PROCEDURE SP_CRDS_AVLGOODS_RECALCULATE AS DECLARE VARIABLE DGV_ID INTEGER; DECLARE VARIABLE STOR_ID INTEGER; DECLARE VARIABLE GOODS_ID INTEGER; DECLARE VARIABLE QNT DOUBLE PRECISION; begin delete from crds_avlgoods; for select id, stor_id from crds_dgvkt into :dgv_id, :stor_id do begin for select goods_id, goods_quant from crds_gddkt where dgvkt_id = :dgv_id into :goods_id, :qnt do begin execute procedure sp_crds_set_gdsavl(:goods_id, :stor_id, :qnt); end end for select id, stor_id from crds_dgvdt into :dgv_id, :stor_id do begin for select goods_id, goods_quant from crds_gdddt where dgvdt_id = :dgv_id into :goods_id, :qnt do begin qnt = - qnt; execute procedure sp_crds_set_gdsavl(:goods_id, :stor_id, :qnt); end end end^ ALTER PROCEDURE SP_CRDS_CARD ( I_GOODS_ID INTEGER, I_STORE_ID INTEGER) RETURNS ( DGV_DATE TIMESTAMP, DGV_NBR VARCHAR(20), GOODS_QUANT_IN DOUBLE PRECISION, GOODS_QUANT_OUT DOUBLE PRECISION, GOODS_REST DOUBLE PRECISION) AS begin goods_rest = 0.0; for select dk.dgvkt_date, dk.dgvkt_nbr, gk.goods_quant, Cast(0.0 as double precision) from crds_gddkt gk left join crds_dgvkt dk on gk.dgvkt_id = dk.id where gk.goods_id = :I_GOODS_ID and dk.stor_id = :I_STORE_ID union all select dd.dgvdt_date, dd.dgvdt_nbr, Cast(0.0 as double precision), gd.goods_quant from crds_gdddt gd left join crds_dgvdt dd on gd.dgvdt_id = dd.id where gd.goods_id = :I_GOODS_ID and dd.stor_id = :I_STORE_ID order by 1, 2 into :dgv_date, :dgv_nbr, :goods_quant_in, :goods_quant_out do begin goods_rest = goods_rest + goods_quant_in - goods_quant_out; suspend; end end^ ALTER PROCEDURE SP_CRDS_DGVDT_COPY ( I_DGVDTID INTEGER) AS DECLARE VARIABLE V_NEWID INTEGER; begin V_NEWID = GEN_ID(GEN_CRDS_DGVDT_ID, 1); insert into crds_dgvdt (id, dgvdt_date, dgvdt_nbr, stor_id) select :V_NEWID, dgvdt_date, dgvdt_nbr||'_', stor_id from crds_dgvDt where id = :I_DGVDTID; insert into crds_gdddt (goods_id, dgvdt_id, goods_quant) select goods_id, :V_NEWID, goods_quant from crds_gdddt where dgvdt_id = :I_DGVDTID; end^ ALTER PROCEDURE SP_CRDS_DGVDT_TO_DGVKT ( I_DGVDT_ID INTEGER) AS DECLARE VARIABLE V_NEW_ID INTEGER; begin V_NEW_ID = GEN_ID(GEN_CRDS_DGVKT_ID, 1); insert into crds_dgvkt (id, dgvkt_date, dgvkt_nbr, stor_id) select :V_NEW_ID, dgvdt_date, dgvdt_nbr, stor_id from crds_dgvdt where id = :I_DGVDT_ID; insert into crds_gddkt (goods_id, dgvkt_id, goods_quant) select goods_id, :V_NEW_ID, goods_quant from crds_gdddt where dgvdt_id = :I_DGVDT_ID; delete from crds_dgvdt where id = :I_DGVDT_ID; end^ ALTER PROCEDURE SP_CRDS_DGVKT_COPY ( I_DGVKTID INTEGER) AS DECLARE VARIABLE V_NEWID INTEGER; begin V_NEWID = GEN_ID(GEN_CRDS_DGVKT_ID, 1); insert into crds_dgvkt (id, dgvkt_date, dgvkt_nbr, stor_id) select :V_NEWID, dgvkt_date, dgvkt_nbr||'_', stor_id from crds_dgvkt where id = :I_DGVKTID; insert into crds_gddkt (goods_id, dgvkt_id, goods_quant) select goods_id, :V_NEWID, goods_quant from crds_gddkt where dgvkt_id = :I_DGVKTID; end^ ALTER PROCEDURE SP_CRDS_DGVKT_TO_DGVDT ( I_DGVKT_ID INTEGER) AS DECLARE VARIABLE V_NEW_ID INTEGER; begin V_NEW_ID = GEN_ID(GEN_CRDS_DGVDT_ID, 1); insert into crds_dgvdt (id, dgvdt_date, dgvdt_nbr, stor_id) select :V_NEW_ID, dgvkt_date, dgvkt_nbr, stor_id from crds_dgvkt where id = :I_DGVKT_ID; insert into crds_gdddt (goods_id, dgvdt_id, goods_quant) select goods_id, :V_NEW_ID, goods_quant from crds_gddkt where dgvkt_id = :I_DGVKT_ID; delete from crds_dgvkt where id = :I_DGVKT_ID; end^ ALTER PROCEDURE SP_CRDS_MATCHING_DGVDT ( I_STOR_DGV_ID INTEGER, I_CRDS_DGV_ID INTEGER) RETURNS ( O_DGV_ID INTEGER, O_DGV_NBR VARCHAR(20), O_DGV_DATE TIMESTAMP, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS DECLARE VARIABLE V_STOR_GOODCOUNT INTEGER; DECLARE VARIABLE V_CRDS_GOODCOUNT INTEGER; DECLARE VARIABLE V_STOR_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_CRDS_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_STOR_GOODID INTEGER; DECLARE VARIABLE V_CRDS_GOODID INTEGER; DECLARE VARIABLE V_TYPE_DIFF INTEGER; DECLARE VARIABLE V_TYPE_PRG INTEGER; DECLARE VARIABLE V_CRDS_DATE DATE; DECLARE VARIABLE V_CRDS_NBR VARCHAR(20); DECLARE VARIABLE V_CRDS_NBRID INTEGER; DECLARE VARIABLE V_STOR_DATE DATE; DECLARE VARIABLE V_STOR_NBR VARCHAR(20); DECLARE VARIABLE V_STOR_NBRID INTEGER; DECLARE VARIABLE V_DATE DATE; DECLARE VARIABLE V_STOR_ID INTEGER; begin /* Склад: Накладная */ if (I_STOR_DGV_ID is not NULL) then begin V_STOR_NBRID = I_STOR_DGV_ID; select dt.nbr, dt.dat_, dt.storid from dgvdt dt where id = :I_STOR_DGV_ID into :V_STOR_NBR, :V_DATE, :V_STOR_ID; /* Карточки: Накладные с тем же номером */ for select crdt.id, crdt.dgvdt_nbr, crdt.dgvdt_date from crds_dgvdt crdt where crdt.dgvdt_nbr = :V_STOR_NBR and crdt.stor_id = :V_STOR_ID and crdt.dgvdt_date = :V_DATE into :V_CRDS_NBRID, :O_DGV_NBR, :V_CRDS_DATE do begin -------------------------------------------------------------------------------- select count(distinct k.gdskey) from gdddt d left join gddkt k on d.gddkey = k.id where d.dgvkey = :V_STOR_NBRID into V_STOR_GOODCOUNT; select count(distinct d.goods_id) from crds_gdddt d where d.dgvdt_id = :V_CRDS_NBRID into V_CRDS_GOODCOUNT; /* Сравниваем количество: */ if (V_CRDS_GOODCOUNT <> :V_STOR_GOODCOUNT) then begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DGV_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DGV_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; leave; end else -------------------------------------------------------------------------------- for select kt.gdskey, sum(dt.quant) from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID group by kt.gdskey into :V_STOR_GOODID, :V_STOR_GOODQUANT do begin for select dt.goods_id, sum(dt.goods_quant) from crds_gdddt dt where dt.dgvdt_id = :V_CRDS_NBRID and dt.goods_id = :V_STOR_GOODID group by goods_id into :V_CRDS_GOODID, :V_CRDS_GOODQUANT do if (V_CRDS_GOODQUANT <> V_STOR_GOODQUANT) then begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DGV_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DGV_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; end end if (O_TYPE_DIFF <> 0) then leave; for select kt.gdskey, dt.quant from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID and kt.gdskey not in ( select cdt.goods_id from crds_gdddt cdt where cdt.dgvdt_id = :V_CRDS_NBRID) into V_STOR_GOODID, V_STOR_GOODQUANT do begin O_TYPE_DIFF = 2; O_DGV_ID = V_STOR_NBRID; O_DGV_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; end if (O_TYPE_DIFF <> 0) then leave; for select cdt.goods_id, cdt.goods_quant from crds_gdddt cdt where cdt.dgvdt_id = :V_CRDS_NBRID and cdt.goods_id not in (select kt.gdskey from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID) into V_CRDS_GOODID, V_CRDS_GOODQUANT do begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DGV_DATE = V_DATE; O_TYPE_PRG = 0; suspend; end -------------------------------------------------------------------------------- end /*список накладных складских, который отсутсвуют в карточках */ if (V_CRDS_NBRID is null) then begin O_TYPE_DIFF = 3; O_TYPE_PRG = 1; O_DGV_NBR = V_STOR_NBR; O_DGV_ID = V_STOR_NBRID; O_DGV_DATE = V_DATE; suspend; end V_CRDS_NBRID = NULL; V_CRDS_NBR = NULL; V_CRDS_DATE = NULL; V_STOR_NBRID = NULL; V_STOR_NBR = NULL; V_STOR_DATE = NULL; O_DGV_DATE = NULL; O_DGV_NBR = NULL; O_DGV_ID = NULL; O_TYPE_PRG = NULL; O_TYPE_DIFF = NULL; V_TYPE_DIFF = 0; V_TYPE_PRG = 0; end for /*список накладных карточек, который отсутсвуют в складской программе */ select c.id, c.dgvdt_nbr, c.dgvdt_date from crds_dgvdt c left join dgvdt s on s.out_date = :V_DATE and s.stor = :V_STOR_ID and s.nbr = c.dgvdt_nbr where c.dgvdt_date = :V_DATE and c.stor_id = :V_STOR_ID and s.id is null into V_CRDS_NBRID, V_CRDS_NBR, V_CRDS_DATE do begin O_TYPE_DIFF = 3; O_TYPE_PRG = 0; O_DGV_NBR = V_CRDS_NBR; O_DGV_ID = V_CRDS_NBRID; O_DGV_DATE = V_CRDS_DATE; suspend; end -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- if (I_CRDS_DGV_ID is not NULL) then begin V_CRDS_NBRID = I_CRDS_DGV_ID; select crdt.dgvdt_nbr, crdt.dgvdt_date, crdt.stor_id from crds_dgvdt crdt where crdt.id = :I_CRDS_DGV_ID into :O_DGV_NBR, :V_DATE, V_STOR_ID; for select dt.id, dt.nbr, dt.out_date from dgvdt dt where dt.stor = :V_STOR_ID and dt.out_date = :V_DATE and dt.nbr = :O_DGV_NBR into :V_STOR_NBRID, :V_STOR_NBR, V_STOR_DATE do begin -------------------------------------------------------------------------------- select count(distinct k.gdskey) from gdddt d left join gddkt k on d.gddkey = k.id where d.dgvkey = :V_STOR_NBRID into V_STOR_GOODCOUNT; select count(distinct d.goods_id) from crds_gdddt d where d.dgvdt_id = :V_CRDS_NBRID into V_CRDS_GOODCOUNT; /* Сравниваем количество: */ if (V_CRDS_GOODCOUNT <> :V_STOR_GOODCOUNT) then begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DGV_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DGV_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; leave; end else -------------------------------------------------------------------------------- for select kt.gdskey, sum(dt.quant) from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID group by kt.gdskey into :V_STOR_GOODID, :V_STOR_GOODQUANT do begin for select dt.goods_id, sum(dt.goods_quant) from crds_gdddt dt where dt.dgvdt_id = :V_CRDS_NBRID and dt.goods_id = :V_STOR_GOODID group by goods_id into :V_CRDS_GOODID, :V_CRDS_GOODQUANT do if (V_CRDS_GOODQUANT <> V_STOR_GOODQUANT) then begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DGV_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DGV_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; end end if (O_TYPE_DIFF <> 0) then leave; for select kt.gdskey, dt.quant from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID and kt.gdskey not in ( select cdt.goods_id from crds_gdddt cdt where cdt.dgvdt_id = :V_CRDS_NBRID) into V_STOR_GOODID, V_STOR_GOODQUANT do begin O_TYPE_DIFF = 2; O_DGV_ID = V_STOR_NBRID; O_DGV_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; end if (O_TYPE_DIFF <> 0) then leave; for select cdt.goods_id, cdt.goods_quant from crds_gdddt cdt where cdt.dgvdt_id = :V_CRDS_NBRID and cdt.goods_id not in (select kt.gdskey from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID) into V_CRDS_GOODID, V_CRDS_GOODQUANT do begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DGV_DATE = V_DATE; O_TYPE_PRG = 0; suspend; end -------------------------------------------------------------------------------- end /*список накладных складских, который отсутсвуют в карточках */ if (V_CRDS_NBRID is null) then begin O_TYPE_DIFF = 3; O_TYPE_PRG = 1; O_DGV_NBR = V_STOR_NBR; O_DGV_ID = V_STOR_NBRID; O_DGV_DATE = V_DATE; suspend; end V_CRDS_NBRID = NULL; V_CRDS_NBR = NULL; V_CRDS_DATE = NULL; V_STOR_NBRID = NULL; V_STOR_NBR = NULL; V_STOR_DATE = NULL; O_DGV_DATE = NULL; O_DGV_NBR = NULL; O_DGV_ID = NULL; O_TYPE_PRG = NULL; O_TYPE_DIFF = NULL; V_TYPE_DIFF = 0; V_TYPE_PRG = 0; end for /*список накладных карточек, который отсутсвуют в складской программе */ select c.id, c.dgvdt_nbr, c.dgvdt_date from crds_dgvdt c left join dgvdt s on s.out_date = :V_DATE and s.stor = :V_STOR_ID and s.nbr = c.dgvdt_nbr where c.dgvdt_date = :V_DATE and c.stor_id = :V_STOR_ID and s.id is null into V_CRDS_NBRID, V_CRDS_NBR, V_CRDS_DATE do begin O_TYPE_DIFF = 3; O_TYPE_PRG = 0; O_DGV_NBR = V_CRDS_NBR; O_DGV_ID = V_CRDS_NBRID; O_DGV_DATE = V_CRDS_DATE; suspend; end end^ ALTER PROCEDURE SP_CRDS_MATCHING_DGVKT ( I_DGV_ID INTEGER) RETURNS ( DGV_ID INTEGER, DGV_NBR VARCHAR(20), DGV_DATE TIMESTAMP, TYPE_PRG INTEGER, TYPE_DIFF INTEGER) AS begin /* Procedure Text */ suspend; end^ ALTER PROCEDURE SP_CRDS_MATCHING_DT ( I_START_DATE TIMESTAMP, I_END_DATE TIMESTAMP, I_STOR_ID INTEGER, I_PRECISION DOUBLE PRECISION) RETURNS ( O_DGV_ID INTEGER, O_NBR VARCHAR(20), O_DATE TIMESTAMP, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS DECLARE VARIABLE V_STOR_GOODCOUNT INTEGER; DECLARE VARIABLE V_CRDS_GOODCOUNT INTEGER; DECLARE VARIABLE V_STOR_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_CRDS_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_STOR_GOODID INTEGER; DECLARE VARIABLE V_CRDS_GOODID INTEGER; DECLARE VARIABLE V_TYPE_DIFF INTEGER; DECLARE VARIABLE V_TYPE_PRG INTEGER; DECLARE VARIABLE V_CRDS_DATE DATE; DECLARE VARIABLE V_CRDS_NBR VARCHAR(20); DECLARE VARIABLE V_CRDS_NBRID INTEGER; DECLARE VARIABLE V_STOR_DATE DATE; DECLARE VARIABLE V_STOR_NBR VARCHAR(20); DECLARE VARIABLE V_STOR_NBRID INTEGER; begin /* Склад: Накладные */ for select dt.id, dt.nbr, dt.out_date from dgvdt dt where dt.stor = :I_STOR_ID and dt.out_date between :I_START_DATE and :I_END_DATE into :V_STOR_NBRID, :V_STOR_NBR, V_STOR_DATE do begin V_TYPE_DIFF = 0; /* Карточки: Накладные с тем же номером */ for select crdt.id, crdt.dgvdt_nbr, crdt.dgvdt_date from crds_dgvdt crdt where crdt.dgvdt_nbr = :V_STOR_NBR and crdt.stor_id = :I_STOR_ID and crdt.dgvdt_date between :I_START_DATE and :I_END_DATE into :V_CRDS_NBRID, :O_NBR, :V_CRDS_DATE do begin -------------------------------------------------------------------------------- /* Сравниваем даты: */ if (V_CRDS_DATE <> V_STOR_DATE) then begin O_TYPE_DIFF = 1; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; leave; end else -------------------------------------------------------------------------------- select count(distinct k.gdskey) from gdddt d left join gddkt k on d.gddkey = k.id where d.dgvkey = :V_STOR_NBRID into V_STOR_GOODCOUNT; select count(distinct d.goods_id) from crds_gdddt d where d.dgvdt_id = :V_CRDS_NBRID into V_CRDS_GOODCOUNT; /* Сравниваем количество: */ if (V_CRDS_GOODCOUNT <> V_STOR_GOODCOUNT) then begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; leave; end else -------------------------------------------------------------------------------- for select kt.gdskey, sum(dt.quant) from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID group by kt.gdskey into :V_STOR_GOODID, :V_STOR_GOODQUANT do begin for select dt.goods_id, sum(dt.goods_quant) from crds_gdddt dt where dt.dgvdt_id = :V_CRDS_NBRID and dt.goods_id = :V_STOR_GOODID group by goods_id into :V_CRDS_GOODID, :V_CRDS_GOODQUANT do if (ABS(V_CRDS_GOODQUANT - V_STOR_GOODQUANT) > :I_PRECISION ) then begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; end end if (O_TYPE_DIFF <> 0) then leave; for select kt.gdskey, dt.quant from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID and kt.gdskey not in ( select cdt.goods_id from crds_gdddt cdt where cdt.dgvdt_id = :V_CRDS_NBRID) into V_STOR_GOODID, V_STOR_GOODQUANT do begin O_TYPE_DIFF = 2; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; leave; end -- if (O_TYPE_DIFF <> 0) then leave; for select cdt.goods_id, cdt.goods_quant from crds_gdddt cdt where cdt.dgvdt_id = :V_CRDS_NBRID and cdt.goods_id not in (select kt.gdskey from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :V_STOR_NBRID) into V_CRDS_GOODID, V_CRDS_GOODQUANT do begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; leave; end -------------------------------------------------------------------------------- end /*список накладных складских, который отсутсвуют в карточках */ if (V_CRDS_NBRID is null) then begin O_TYPE_DIFF = 3; O_TYPE_PRG = 1; O_NBR = V_STOR_NBR; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; suspend; end V_CRDS_NBRID = NULL; V_CRDS_NBR = NULL; V_CRDS_DATE = NULL; V_STOR_NBRID = NULL; V_STOR_NBR = NULL; V_STOR_DATE = NULL; O_DATE = NULL; O_NBR = NULL; O_DGV_ID = NULL; O_TYPE_PRG = NULL; O_TYPE_DIFF = NULL; V_TYPE_DIFF = 0; V_TYPE_PRG = 0; end for /*список накладных карточек, который отсутсвуют в складской программе */ select c.id, c.dgvdt_nbr, c.dgvdt_date from crds_dgvdt c left join dgvdt s on s.out_date between :I_START_DATE and :I_END_DATE and s.stor = :I_STOR_ID and s.nbr = c.dgvdt_nbr where c.dgvdt_date between :I_START_DATE and :I_END_DATE and c.stor_id = :I_STOR_ID and s.id is null into V_CRDS_NBRID, V_CRDS_NBR, V_CRDS_DATE do begin O_TYPE_DIFF = 3; O_TYPE_PRG = 0; O_NBR = V_CRDS_NBR; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; suspend; end end^ ALTER PROCEDURE SP_CRDS_MATCHING_GOODS_DT ( I_STOR_DGV_ID INTEGER, I_CRDS_DGV_ID INTEGER, I_PRECISION INTEGER) RETURNS ( O_GOODS_ID INTEGER, O_GOODS_QUANT DOUBLE PRECISION, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS DECLARE VARIABLE V_STOR_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_CRDS_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_STOR_GOODID INTEGER; DECLARE VARIABLE V_CRDS_GOODID INTEGER; begin for select kt.gdskey, sum(dt.quant) from gdddt dt left join gddkt kt on kt.id = dt.gddkey where dt.dgvkey = :I_STOR_DGV_ID group by kt.gdskey into :V_STOR_GOODID, :V_STOR_GOODQUANT do begin for select dt.goods_id, sum(dt.goods_quant) from crds_gdddt dt where dt.dgvdt_id = :I_CRDS_DGV_ID and dt.goods_id = :V_STOR_GOODID group by goods_id into :V_CRDS_GOODID, :V_CRDS_GOODQUANT do if (ABS(V_CRDS_GOODQUANT - V_STOR_GOODQUANT) > :I_PRECISION) then begin O_TYPE_DIFF = 0; O_GOODS_ID = V_CRDS_GOODID; O_GOODS_QUANT = V_CRDS_GOODQUANT; O_TYPE_PRG = 0; suspend; O_TYPE_PRG = 1; O_GOODS_ID = V_STOR_GOODID; O_GOODS_QUANT = V_STOR_GOODQUANT; suspend; end end for select kt.gdskey, dt.quant from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :I_STOR_DGV_ID and kt.gdskey not in (select cdt.goods_id from crds_gdddt cdt where cdt.dgvdt_id = :I_CRDS_DGV_ID) into O_GOODS_ID, O_GOODS_QUANT do begin O_TYPE_DIFF = 1; O_TYPE_PRG = 1; suspend; end for select cdt.goods_id, cdt.goods_quant from crds_gdddt cdt where cdt.dgvdt_id = :I_CRDS_DGV_ID and cdt.goods_id not in (select kt.gdskey from gdddt dt left join gddkt kt on (dt.gddkey = kt.id) where dt.dgvkey = :I_STOR_DGV_ID) into O_GOODS_ID, O_GOODS_QUANT do begin O_TYPE_DIFF = 1; O_TYPE_PRG = 0; suspend; end end^ ALTER PROCEDURE SP_CRDS_MATCHING_GOODS_KT ( I_STOR_DGV_ID INTEGER, I_CRDS_DGV_ID INTEGER, I_PRECISION INTEGER) RETURNS ( O_GOODS_ID INTEGER, O_GOODS_QUANT DOUBLE PRECISION, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS DECLARE VARIABLE V_STOR_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_CRDS_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_STOR_GOODID INTEGER; DECLARE VARIABLE V_CRDS_GOODID INTEGER; begin for select kt.gdskey, sum(kt.source) from gddkt kt where kt.dgvkey = :I_STOR_DGV_ID group by kt.gdskey into :V_STOR_GOODID, :V_STOR_GOODQUANT do begin for select kt.goods_id, sum(kt.goods_quant) from crds_gddkt kt where kt.dgvkt_id = :I_CRDS_DGV_ID and kt.goods_id = :V_STOR_GOODID group by goods_id into :V_CRDS_GOODID, :V_CRDS_GOODQUANT do if (ABS(V_CRDS_GOODQUANT - V_STOR_GOODQUANT) > :I_PRECISION) then begin O_TYPE_DIFF = 0; O_GOODS_ID = V_CRDS_GOODID; O_GOODS_QUANT = V_CRDS_GOODQUANT; O_TYPE_PRG = 0; suspend; O_TYPE_PRG = 1; O_GOODS_ID = V_STOR_GOODID; O_GOODS_QUANT = V_STOR_GOODQUANT; suspend; end end for select kt.gdskey, sum(kt.source) from gddkt kt where kt.dgvkey = :I_STOR_DGV_ID and kt.gdskey not in (select ckt.goods_id from crds_gddkt ckt where ckt.dgvkt_id = :I_CRDS_DGV_ID) group by kt.gdskey into O_GOODS_ID, O_GOODS_QUANT do begin O_TYPE_DIFF = 1; O_TYPE_PRG = 1; suspend; end for select ckt.goods_id, sum(ckt.goods_quant) from crds_gddkt ckt where ckt.dgvkt_id = :I_CRDS_DGV_ID and ckt.goods_id not in (select kt.gdskey from gddkt kt where kt.dgvkey = :I_STOR_DGV_ID) group by ckt.goods_id into O_GOODS_ID, O_GOODS_QUANT do begin O_TYPE_DIFF = 1; O_TYPE_PRG = 0; suspend; end end^ ALTER PROCEDURE SP_CRDS_MATCHING_KT ( I_START_DATE TIMESTAMP, I_END_DATE TIMESTAMP, I_STOR_ID INTEGER, I_PRECISION DOUBLE PRECISION) RETURNS ( O_DGV_ID INTEGER, O_NBR VARCHAR(20), O_DATE TIMESTAMP, O_TYPE_PRG INTEGER, O_TYPE_DIFF INTEGER) AS DECLARE VARIABLE V_STOR_GOODCOUNT INTEGER; DECLARE VARIABLE V_CRDS_GOODCOUNT INTEGER; DECLARE VARIABLE V_STOR_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_CRDS_GOODQUANT DOUBLE PRECISION; DECLARE VARIABLE V_STOR_GOODID INTEGER; DECLARE VARIABLE V_CRDS_GOODID INTEGER; DECLARE VARIABLE V_TYPE_DIFF INTEGER; DECLARE VARIABLE V_TYPE_PRG INTEGER; DECLARE VARIABLE V_CRDS_DATE DATE; DECLARE VARIABLE V_CRDS_NBR VARCHAR(20); DECLARE VARIABLE V_CRDS_NBRID INTEGER; DECLARE VARIABLE V_STOR_DATE DATE; DECLARE VARIABLE V_STOR_NBR VARCHAR(20); DECLARE VARIABLE V_STOR_NBRID INTEGER; begin /* Склад: Накладные */ for select kt.id, kt.nbr, kt.dat_ from dgvkt kt where kt.stor = :I_STOR_ID and kt.dat_ between :I_START_DATE and :I_END_DATE into :V_STOR_NBRID, :V_STOR_NBR, V_STOR_DATE do begin V_TYPE_DIFF = 0; /* Карточки: Накладные с тем же номером */ for select crkt.id, crkt.dgvkt_nbr, crkt.dgvkt_date from crds_dgvkt crkt where crkt.dgvkt_nbr = :V_STOR_NBR and crkt.stor_id = :I_STOR_ID and crkt.dgvkt_date between :I_START_DATE and :I_END_DATE into :V_CRDS_NBRID, :O_NBR, :V_CRDS_DATE do begin -------------------------------------------------------------------------------- /* Сравниваем даты: */ if (V_CRDS_DATE <> V_STOR_DATE) then begin O_TYPE_DIFF = 1; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; leave; end else -------------------------------------------------------------------------------- select count(distinct k.gdskey) from gddkt k where k.dgvkey = :V_STOR_NBRID into V_STOR_GOODCOUNT; select count(distinct k.goods_id) from crds_gddkt k where k.dgvkt_id = :V_CRDS_NBRID into V_CRDS_GOODCOUNT; /* Сравниваем количество: */ if (V_CRDS_GOODCOUNT <> V_STOR_GOODCOUNT) then begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; leave; end else -------------------------------------------------------------------------------- for select kt.gdskey, sum(kt.source) from gddkt kt where kt.dgvkey = :V_STOR_NBRID group by kt.gdskey into :V_STOR_GOODID, :V_STOR_GOODQUANT do begin for select kt.goods_id, sum(kt.goods_quant) from crds_gddkt kt where kt.dgvkt_id = :V_CRDS_NBRID and kt.goods_id = :V_STOR_GOODID group by goods_id into :V_CRDS_GOODID, :V_CRDS_GOODQUANT do if (ABS(V_CRDS_GOODQUANT - V_STOR_GOODQUANT) > :I_PRECISION ) then begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; end end if (O_TYPE_DIFF <> 0) then leave; for select kt.gdskey, kt.source from gddkt kt where kt.dgvkey = :V_STOR_NBRID and kt.gdskey not in ( select ckt.goods_id from crds_gddkt ckt where ckt.dgvkt_id = :V_CRDS_NBRID) into V_STOR_GOODID, V_STOR_GOODQUANT do begin O_TYPE_DIFF = 2; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; O_TYPE_PRG = 1; suspend; leave; end -- if (O_TYPE_DIFF <> 0) then leave; for select ckt.goods_id, ckt.goods_quant from crds_gddkt ckt where ckt.dgvkt_id = :V_CRDS_NBRID and ckt.goods_id not in (select kt.gdskey from gddkt kt where kt.dgvkey = :V_STOR_NBRID) into V_CRDS_GOODID, V_CRDS_GOODQUANT do begin O_TYPE_DIFF = 2; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; O_TYPE_PRG = 0; suspend; leave; end -------------------------------------------------------------------------------- end /*список накладных складских, который отсутсвуют в карточках */ if (V_CRDS_NBRID is null) then begin O_TYPE_DIFF = 3; O_TYPE_PRG = 1; O_NBR = V_STOR_NBR; O_DGV_ID = V_STOR_NBRID; O_DATE = V_STOR_DATE; suspend; end V_CRDS_NBRID = NULL; V_CRDS_NBR = NULL; V_CRDS_DATE = NULL; V_STOR_NBRID = NULL; V_STOR_NBR = NULL; V_STOR_DATE = NULL; O_DATE = NULL; O_NBR = NULL; O_DGV_ID = NULL; O_TYPE_PRG = NULL; O_TYPE_DIFF = NULL; V_TYPE_DIFF = 0; V_TYPE_PRG = 0; end for /*список накладных карточек, который отсутсвуют в складской программе */ select c.id, c.dgvkt_nbr, c.dgvkt_date from crds_dgvkt c left join dgvkt s on s.dat_ between :I_START_DATE and :I_END_DATE and s.stor = :I_STOR_ID and s.nbr = c.dgvkt_nbr where c.dgvkt_date between :I_START_DATE and :I_END_DATE and c.stor_id = :I_STOR_ID and s.id is null into V_CRDS_NBRID, V_CRDS_NBR, V_CRDS_DATE do begin O_TYPE_DIFF = 3; O_TYPE_PRG = 0; O_NBR = V_CRDS_NBR; O_DGV_ID = V_CRDS_NBRID; O_DATE = V_CRDS_DATE; suspend; end end^ ALTER PROCEDURE SP_CRDS_MOVEGOODS ( I_GROUP_ID INTEGER, I_STORE_ID INTEGER, I_DATE_BEGIN TIMESTAMP, I_DATE_END TIMESTAMP) RETURNS ( GOODS_ID INTEGER, GOODS_NAME VARCHAR(40), GOODS_CODE VARCHAR(20), QUANT_BEGIN DOUBLE PRECISION, QUANT_IN DOUBLE PRECISION, QUANT_OUT DOUBLE PRECISION, QUANT_END DOUBLE PRECISION) AS begin if (i_group_id is null) then i_group_id = 0; if (I_GROUP_ID <> 0) then begin for select id, name, code from goods where owner = :I_GROUP_ID into :GOODS_ID, :GOODS_NAME, :GOODS_CODE do begin select QUANT_BEGIN, QUANT_IN, QUANT_OUT, QUANT_END from sp_crds_movegoods_goods (:GOODS_ID, :I_STORE_ID, :I_DATE_BEGIN, :I_DATE_END) into :QUANT_BEGIN, :QUANT_IN, :QUANT_OUT, :QUANT_END; if (not (QUANT_BEGIN = 0 and QUANT_IN = 0 and QUANT_OUT = 0 and QUANT_END = 0)) then suspend; end end if (I_GROUP_ID = 0) then begin for select id, name, code from goods where grou_ = 1 into :GOODS_ID, :GOODS_NAME, :GOODS_CODE do begin select QUANT_BEGIN, QUANT_IN, QUANT_OUT, QUANT_END from sp_crds_movegoods_goods (:GOODS_ID, :I_STORE_ID, :I_DATE_BEGIN, :I_DATE_END) into :QUANT_BEGIN, :QUANT_IN, :QUANT_OUT, :QUANT_END; if (not (QUANT_BEGIN = 0 and QUANT_IN = 0 and QUANT_OUT = 0 and QUANT_END = 0)) then suspend; end end end^ ALTER PROCEDURE SP_CRDS_MOVEGOODS_GOODS ( I_GOODS_ID INTEGER, I_STORE_ID INTEGER, I_DATE_BEGIN TIMESTAMP, I_DATE_END TIMESTAMP) RETURNS ( QUANT_BEGIN DOUBLE PRECISION, QUANT_IN DOUBLE PRECISION, QUANT_OUT DOUBLE PRECISION, QUANT_END DOUBLE PRECISION) AS begin /* Calculate quant of goods (QUANT_BEGIN) before start date (DATE_BEGIN) */ select sum(g.goods_quant) from crds_gddkt g left join crds_dgvkt d on g.dgvkt_id = d.id where g.goods_id = :I_GOODS_ID and d.dgvkt_date < :I_DATE_BEGIN and d.stor_id = :I_STORE_ID into :QUANT_IN; if (QUANT_IN is null) then QUANT_IN = 0; select sum(g.goods_quant) from crds_gdddt g left join crds_dgvdt d on g.dgvdt_id = d.id where g.goods_id = :I_GOODS_ID and d.dgvdt_date < :I_DATE_BEGIN and d.stor_id = :I_STORE_ID into :QUANT_OUT; if (QUANT_OUT is null) then QUANT_OUT = 0; QUANT_BEGIN = QUANT_IN - QUANT_OUT; /* Calculate quant of income goods (QUANT_IN) after DATE_BEGIN */ select sum(g.goods_quant) from crds_gddkt g left join crds_dgvkt d on g.dgvkt_id = d.id where g.goods_id = :I_GOODS_ID and d.dgvkt_date >= :I_DATE_BEGIN and d.dgvkt_date <= :I_DATE_END and d.stor_id = :I_STORE_ID into :QUANT_IN; if (QUANT_IN is null) then QUANT_IN = 0; /* Calculate quant of outlay goods (QUANT_OUT) after DATE_BEGIN */ select sum(g.goods_quant ) from crds_gdddt g left join crds_dgvdt d on g.dgvdt_id = d.id where g.goods_id = :I_GOODS_ID and d.dgvdt_date >= :I_DATE_BEGIN and d.dgvdt_date <= :I_DATE_END and d.stor_id = :I_STORE_ID into :QUANT_OUT; if (QUANT_OUT is null) then QUANT_OUT = 0; /* Calculate quant of goods (QUANT_END) on DATE_END */ QUANT_END = QUANT_BEGIN + QUANT_IN - QUANT_OUT; suspend; end^ ALTER PROCEDURE SP_CRDS_SET_GDSAVL ( I_GOODS_ID INTEGER, I_STORE_ID INTEGER, I_QUANT DOUBLE PRECISION) AS DECLARE VARIABLE v_id INTEGER; begin select id from crds_avlgoods where goods_id = :i_goods_id and store_id = :i_store_id into :v_id; if (v_id is null) then insert into crds_avlgoods (goods_id, avlgoods_quant, store_id) values (:i_goods_id, :i_quant, :i_store_id); else update crds_avlgoods set avlgoods_quant = avlgoods_quant + :i_quant where id = :v_id; end^ ALTER PROCEDURE SP_GEN_PRSNOPERTYPE_ID RETURNS ( ID INTEGER) AS BEGIN ID = GEN_ID(GEN_PRSNOPERTYPE_ID, 1); END^ ALTER PROCEDURE SP_GET_USER_RIGHT ( RIGHT_CODE VARCHAR(40), USER_ID INTEGER, ORGN_ID INTEGER) RETURNS ( RIGHT_VAL INTEGER) AS DECLARE VARIABLE USER_PARENT INTEGER; begin right_val = null; select ur.val from user_right ur left join right_list r on r.code = ur.right_code where ur.right_code = :right_code and ur.user_id = :user_id and (r.by_orgn = 0 or (r.by_orgn = 1 and ur.orgn_id = :orgn_id)) into :right_val; if (right_val is null) then begin user_parent = null; select parentid from userlist where id = :user_id into :user_parent; if (:user_parent is not null) then select right_val from sp_get_user_right(:right_code, :user_parent, :orgn_id) into :right_val; end if (right_val is null) then right_val = 0; suspend; end^ ALTER PROCEDURE SP_ZPLT_DAYTYPE RETURNS ( ID INTEGER, NAME VARCHAR(40)) AS begin ID = 1; NAME = 'Ночная смена'; suspend; ID = 2; NAME = 'Больничный'; suspend; ID = 3; NAME = 'Командировочный'; suspend; ID = 4; NAME = 'Прогул'; suspend; ID = 5; NAME = 'За свой счет'; suspend; ID = 6; NAME = 'По уходу за реб.'; suspend; ID = 7; NAME = 'Тарифный отпуск'; suspend; ID = 8; NAME = 'Учебный отпуск'; suspend; ID = 9; NAME = 'Гособязанность'; suspend; end^ ALTER PROCEDURE STOR_SQNT ( STOR1 INTEGER, STOR2 INTEGER, SMALLSQNT INTEGER = 0) RETURNS ( GDSID INTEGER) AS declare variable GID integer; declare variable gName varchar(40); declare variable GrpID integer; declare variable GrpName varchar(255); declare variable gCode varchar(20); declare variable gCod varchar(20); declare variable One varchar(10); declare variable SQnt2 double precision; declare variable SQnt1 double precision; declare variable Barcode varchar(32); declare variable Quant1 double precision; declare variable Quant2 double precision; declare variable Quant double precision; begin for select g.ID, g.Name, g.code, g.one, CoalEsce(V.DblVal, 0.0) SQNT2, CoalEsce(DS.SQNT1, 0.0) as SQNT1, g.Barcode, g.Cod, CoalEsce(DS1.QUANT,0.0) as Quant1, CoalEsce(DS2.QUANT,0.0) as Quant2, cast (null as double precision) as Quant, g.OWNER as GDSGRPID, GG.Name GDSGRPNAME from Goods G join GdsParamGdsRef V on V.GoodsID=G.ID join GdsParamPrm P on P.ID=V.ParamID and P.Typ=7 -- страховой запас and P.STORID=:STOR2 LEFT JOIN GoodsGroups GG ON GG.ID=G.OWNER left join (select G.ID, V.DblVal Sqnt1 from Goods G join GdsParamGdsRef V on V.GoodsID=G.ID join GdsParamPrm P on P.ID=V.ParamID and P.Typ=7 -- страховой запас and P.STORID=:STOR1 ) as DS on DS.ID=G.ID LEFT JOIN (SELECT K.GdsKey ID, Sum(K.Quant) QUANT FROM GddKtQnt Q JOIN GDDKT K ON K.ID=Q.ID WHERE Q.STOR=:STOR1 Group by k.gdskey ) AS DS1 ON DS1.ID=G.ID LEFT JOIN (SELECT K.GdsKey ID, Sum(K.Quant) QUANT FROM GddKtQnt Q JOIN GDDKT K ON K.ID=Q.ID WHERE Q.STOR=:Stor2 Group by k.gdskey ) AS DS2 ON DS2.ID=G.ID Where CoalEsce(DS1.QUANT, 0.0) > 0.0 AND CoalEsce(V.DblVal,0.0) > 0.0 order by G.Name, G.Code, G.ID into :GID, :gName, :gCode, :One, :sqnt2, :sqnt1, :barcode, :gcod, :quant1, :quant2, :quant, :grpid, :grpname do begin GdsID = :GID; if (:SmallSQnt = 0) then suspend; else begin if (:quant1 > :SQNT1 or :SQNT1 >0.0) then suspend; end end /* if CbHideSmallSQnt.Checked then begin Result := Result + ' AND (DS1.QUANT > DS.SQNT1 OR CoalEsce(DS.SQNT1,0.0) = 0.0)'; end; */ end^ ALTER PROCEDURE STORGRP_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(StorGrp_ID, 1); end^ ALTER PROCEDURE STORLIST_NEWID RETURNS ( ID INTEGER) AS begin id = GEN_ID(storlist_id,1); end^ ALTER PROCEDURE STOROPER_NEWID RETURNS ( ID INTEGER) AS begin id=gen_id(storoper_id, 1); end^ ALTER PROCEDURE STORZAKAZDT_BLNS ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ZSID INTEGER, BS DOUBLE PRECISION, DT DOUBLE PRECISION, KT DOUBLE PRECISION, ES DOUBLE PRECISION) AS declare variable BDSUMMA double precision; declare variable BSSUMMA double precision; begin for select Z.ID from StorZakazDt Z where (Z.State < 4 and Z.OurOrgnID = :ORGNID and (exists (select DD.ID from DgvDt DD where DD.Out_Date is not null and DD.SZID=Z.ID and DD.Typ = 0) or exists (Select CR.ID from SZDTCR CR where CR.SZDTID=Z.ID)) or (Z.DAT_ >= :BDATE and Z.DAT_ <= :EDATE)) into :ZSID do begin Select Sum(DD.Summa) from DgvDt DD where DD.SZID=:ZSID and DD.Out_Date is not Null and DD.Out_Date+0 < :BDATE and DD.Typ = 0 into :BDSUMMA; if (:BDSUMMA is Null) then BDSUMMA = 0.0; Select Sum(CR.Summa) from SZDTCR CR, Sale S where CR.SZDTID = :ZSID and S.ID=CR.SALEID and S.DAT_+0 < :BDATE into :BSSUMMA; if (:BDSUMMA is Null) then BDSUMMA = 0.0; if (:BSSUMMA is Null) then BSSUMMA = 0.0; BS = :BDSUMMA - :BSSUMMA; Select Sum(DD.Summa) from DgvDt DD where DD.SZID=:ZSID and DD.Out_Date is not Null and DD.Out_Date >= :BDATE and DD.out_date <= :EDATE and DD.Typ = 0 into :DT; Select Sum(CR.Summa) from SZDTCR CR, Sale S where CR.SZDTID = :ZSID and S.ID=CR.SALEID and S.DAT_ >= :BDATE and S.DAT_ <= :EDATE into :KT; if (:DT is Null) then DT = 0.0; if (:KT is Null) then KT = 0.0; ES = :BS + :DT - :KT; if (Abs(:BS) > 1.0e-3 or Abs(:DT) > 1.0e-3 or Abs(:KT) > 1.0e-3) then suspend; end end^ ALTER PROCEDURE STORZAKAZDT_CHECKSTATE ( ID INTEGER) RETURNS ( STATE INTEGER) AS declare variable OldState integer; -- Статус: -- 0 - заказ открыт -- xxx 1 - заказ сформирован (закрыт от изменений) - резервирование товара -- xxx 2 - передача изделий в производство -- 3 - заказ исполнен -- 4 - заказ закрыт -- 5 - архивный begin select State from StorZakazDt where ID = :ID into :OldState; State = :OldState; if (:OldState < 3) then begin -- заказ открыт if (Not Exists(Select D.ID from StorZDtGds D where D.SZID = :ID and Abs(D.Source - D.RSQuant) > 1.0e-5)) then State = 3; end if (:OldState >= 3 and :oldState <> 5) then begin -- заказ исполнен / закрыт if (Exists(Select D.ID from StorZDtGds D where D.SZID = :ID and Abs(D.Source - D.RSQuant) > 1.0e-5)) then State = 0; end if (:State <> :OldState) then Update StorZakazDt set State = :State where ID = :ID; suspend; end^ ALTER PROCEDURE STORZAKAZDT_FORCECLOSE ( ID INTEGER) AS -- ID скл. заказа declare variable SZID integer; -- ID заявки declare variable WRID integer; declare variable WRGdsID integer; -- ID произв. заказа declare variable ZID integer; -- ID изделия в произв. заказе declare variable WMID integer; declare variable Source double precision; declare variable Quant double precision; declare variable WrQuant double precision; declare variable WrWQuant double precision; declare variable SZGdsID integer; declare variable SZSource double precision; declare variable SZRSQuant double precision; declare variable SLSumma double precision; declare variable SaleSumma double precision; declare variable sSumma double precision; declare variable CRID integer; declare variable Summ double precision; begin select ID from StorZakazDt where ID = :ID into :SZID; if (:SZID is Null) then exit; for Select ID from WorkRequest where SZID = :ID into :WRID do begin for select ID, Quant, WQuant from WorkRequestGds where WRID = :WRID into :WRGdsID, :WrQuant, :WrWQuant do begin WMID = Null; ZID = Null; select ID, ZID, Source, Quant from WorkZMst where WrGdsID = :WrGdsID into :WMID, :ZID, :Source, :Quant; if (:WMID is not Null) then begin -- приводим заказанное кол-во изделий к вупущенному (позиция изделия в произв. заказе) if (Abs(:Source-:Quant) > 1.0e-5) then begin update WorkZMst set WrGdsID = Null, Source = Quant where ID = :WMID; update WorkZMst set WrGdsID = :WrGdsID where ID = :WMID; end end -- приводим заказанное кол-во изделий к вупущенному (позиция изделия в заявке) if (Abs(:WrQuant-:WrWQuant) > 1.0e-5) then begin update WorkRequestGds set WMID = Null, Quant = WQuant where ID = :WrGdsID; update WorkRequestGds set WMID = :WMID where ID = :WrGdsID; end end -- закрытие заявки update WorkRequest set Closed = 1 where ID = :WrID and Closed <> 1; end -- баланс количества for select ID, Source, RSQuant from StorZDtGds where SZID = :ID into :SZGdsID, :SZSource, :SZRSQuant do begin if (Abs(:SZSource - :SZRSQuant) > 1.0e-5) then begin update StorZDtGds set BQuant = Source-RSQuant where ID = :SZGdsID; update StorZDtGds set Source = RSQuant where ID = :SZGdsID; end end -- пересчет суммы "к оплате" select Summa from StorZakazDt_SLSumma(:ID) into :SLSumma; -- сумма оплаты select SaleSumma from StorZakazDt where ID = :ID into :SaleSumma; if (:SaleSumma > :SLSumma and Abs(:SaleSumma-:SLSumma) > 1.0e-5) then begin sSumma = SaleSumma; for select Cr.ID, Cr.Summa from SZDTCR Cr, Sale S where Cr.SZDTID = :ID and S.ID = Cr.SaleID order by S.DAT_ desc, S.ID Desc into :CRID, :Summ do begin if (Abs(:sSumma - :SLSumma) > 1.0e-5) then begin delete from SZDTCR where ID = :CrID; sSumma = :sSumma - :Summ; end end end -- закрытие заказа update StorZakazDt set State = 4 where ID = :ID; end^ ALTER PROCEDURE STORZAKAZDT_GDDDT ( SZID INTEGER, DGVDTID INTEGER, ADATE TIMESTAMP = null) RETURNS ( GODSID INTEGER, SZGDSID INTEGER, LINKID INTEGER, EQID INTEGER, MAINID INTEGER, GDDDTID INTEGER, GDDKTID INTEGER, QUANT DOUBLE PRECISION, QNTNORM DOUBLE PRECISION, ZMSTID INTEGER, ZSLVID INTEGER, ZID INTEGER) AS declare variable SZ_ID integer; declare variable DGVDT_ID integer; declare variable Stor Integer; declare variable DQnt double precision; declare variable KQnt double precision; declare variable Q double precision; declare variable Out_Date TimeStamp; declare variable QntEqNorm double precision; declare variable QntNeed double precision; declare variable QntHas double precision; declare variable SlSumma double precision; declare variable NdsProc double precision; declare variable Price double precision; declare variable Nds double precision; declare variable PriceKt double precision; declare variable NdsKt double precision; declare variable DgvDtTyp integer; declare variable ZMID integer; declare variable MGodsID Integer; declare variable UserName varchar(20); declare variable CurOrgnID integer; declare variable GdsParamsTranser integer; declare variable GuaranteePeriod integer; declare variable GPeriod varchar(255); declare variable SNbr Dmn_Nbr; declare variable OperIDReal integer; declare variable OperID_TMC integer; declare variable OperIDIntr integer; declare variable OperID integer; declare variable Qnt double precision; begin select ID, OurOrgnID from StorZakazDt where ID=:SZID into :SZ_ID, :CurOrgnID; if (:SZ_ID is null) then exit; select dd.ID, dd.Stor, dd.ZID, dd.Out_Date, CoalEsce(s.ndsproc, 0.0), dd.Typ, S.operidreal, S.OperID_TMC, S.OperIDIntr from DgvDt DD left join StorList s on s.ID=dd.STOR where dd.ID=:DgvDtID into :DgvDt_ID, :Stor, :ZID, :Out_Date, :NdsProc, :DgvDtTyp, :operidreal, :OperID_Tmc, :OperIDIntr; if (:DgvDt_ID is null) then exit; select Val from SysConst_GetValue(:CurOrgnID, 'SCenGdsParamsTrans') into GdsParamsTranser; if (:GdsParamsTranser is Null) then GdsParamsTranser = 0; select Val from SysConst_GetValue(:CurOrgnID, 'SCenGuaranteePeriod') into GuaranteePeriod; if (:GuaranteePeriod is Null) then GuaranteePeriod = 0; OperID = Null; if (:DgvDtTyp = 0) then OperID = :OperIDReal; if (:DgvDtTyp = 1) then OperID = :OperIDIntr; if (:DgvDtTyp = 4) then OperID = :OperID_Tmc; update DgvDt DD set DD.SaleForm=(Select SZ.SaleForm from StorZakazDt SZ where SZ.ID=:SZID), DD.SaleCond=(Select SZ.SaleCond from StorZakazDt SZ where SZ.ID=:SZID), DD.CSDtKtHbID=(Select SZ.CSDtKtHbID from StorZakazDt SZ where SZ.ID=:SZID), DD.OrgnInfoID=(Select SZ.OrgnInfoID from StorZakazDt SZ where SZ.ID=:SZID), DD.Comment=(Select SZ.Comment from StorZakazDt SZ where SZ.ID=:SZID), DD.DNbr=(Select SZ.DNbr from StorZakazDt SZ where SZ.ID=:SZID), DD.DPrsn=(Select SZ.DPrsn from StorZakazDt SZ where SZ.ID=:SZID), DD.DDoc=(Select SZ.DDoc from StorZakazDt SZ where SZ.ID=:SZID), DD.DDate=(Select SZ.DDate from StorZakazDt SZ where SZ.ID=:SZID), DD.TrDpID=(Select SZ.TrDpID from StorZakazDt SZ where SZ.ID=:SZID), DD.Transfer = (Select SZ.Transfer from StorZakazDt SZ where SZ.ID=:SZID), DD.manager = (Select SZ.Manager from StorZakazDt SZ where SZ.ID=:SZID), DD.NNbr = (Select SZ.NNbr from StorZakazDt SZ where SZ.ID=:SZID), DD.NDate = (Select SZ.NDate from StorZakazDt SZ where SZ.ID=:SZID), DD.RNbr = (Select SZ.NN from StorZakazDt SZ where SZ.ID=:SZID), DD.Code = (Select SZ.NZ from StorZakazDt SZ where SZ.ID=:SZID), DD.BonusProc = (Select SZ.BonusProc from StorZakazDt SZ where SZ.ID=:SZID), DD.OperID = :OperID where DD.ID=:DgvDtID; if (:aDate is Null and :Out_Date is not Null) then aDate = :Out_Date; if (:aDate is Null) then aDate = Current_Date; if (:ZID is Null) then begin for select sg.ID, sg.GodsID, sg.source-sg.rsquant, Price from StorZDtGds SG where sg.SZID = :SZID into :SZGdsID, :GodsID, :DQnt, :Price do begin Nds = :Price / (100.00 + :NdsProc) * :NdsProc; for select k.id, k.Quant, k.Price, k.Nds from GddKtQnt Q join GddKt K on K.ID=Q.ID join DgvKt KK on KK.ID=K.DgvKey and KK.DAT_ <= :aDate where Q.Stor=:Stor and K.GdsKey=:GodsID order by KK.DAT_, KK.ID, K.ID into :GddKtID, :KQnt, :pricekt, :NdsKt do begin if (:DQnt > 0) then begin Q = :DQnt; if (:Q > :KQnt) then Q = :KQnt; if (:DgvDtTyp <> 0) then begin Price = :PriceKt; Nds = :NdsKt; end SNbr = null; GddDtID = Gen_ID(GddDt_ID, 1); insert into GddDt (ID, DgvKey, GddKey, Quant, SZGdsID, ZID, Price, Nds) values (:GddDtID, :DgvDtID, :GddKtID, :Q, :SZGdsID, :ZID, :Price, :Nds); DQnt = :DQnt-:Q; suspend; end end end end else begin -- Списание в производство (изделия - по материалам) for select DS.GodsID, SG.ID, (SG.Source-SG.RSQuant) QntNeed, DS.LinkID, DS.EqID, DS.MainID, DS.QntNorm, M.GodsID, SZ.UserName from StorZakazDt SZ left join StorZakazDt_WorkMainGds_Sel(SZ.ID, :Stor, :aDate) DS on 0=0 left join StorZDtGds SG on SG.SZID=SZ.ID and SG.GodsID=DS.GodsID left join WorkMain M on M.ID=DS.MainID where SZ.ID = :SZID and DS.LinkID is not Null and DS.MainID is not Null and CoalEsce(DS.QntNorm, 0.0)>0.0 and (SG.Source-SG.RSQuant)>0.0 into :GodsID, :SZGdsID, :QntNeed, :LinkID, :EqID, :MainID, :QntNorm, :MGodsID, :UserName do begin ZMID = Gen_ID(WorkZMst_ID, 1); insert into WorkZMst(ID, ZID, MID, GodsID, Stor, Source, Quant, UserName) select :ZMID, :ZID, :MainID, :MGodsID, Z.Stor, :QntNeed / :QntNeed, 0.0, Z.UserName from WorkZakaz Z where Z.ID=:ZID; DQnt = :QntNeed; GddDtID = Null; GddKtID = Null; ZMstID = Null; ZSlvID = Null; Quant = 0.0; for select K.ID, K.Quant from GddKtQnt Q join GddKt K on K.ID=Q.ID and K.GdsKey=:GodsID join DgvKt KK on KK.ID=K.DgvKey and KK.DAT_<=:ADATE where Q.Stor=:Stor order by KK.DAT_, KK.ID, K.ID into :GddKtID, :KQnt do begin Q = :DQnt; if (:Q > :KQnt) then Q = :KQnt; if (:Q > 0.0) then begin GddDtID = Gen_ID(GddDt_ID, 1); Quant = :Q; insert into GddDt (ID, DgvKey, GddKey, Quant, SZGdsID, ZID) values (:GddDtID, :DgvDtID, :GddKtID, :Quant, :SZGdsID, :ZID); DQnt = :DQnt - :Q; suspend; end end -- проверяем списанное количество материала QntHas = 0.0; select Sum(Quant) from GddDt where SzGdsID=:SZGDSID into :QntHas; -- изделие в заказе (корректируем кол-во изделий по реально списанному материалу) if (:EqID is Null) then begin -- изделие по материалу Quant = :QntHas / :QntNorm; update WorkZMst Set Source = :Quant where ID=:ZMID; suspend; end else begin -- изделие по эквиваленту ZMstID = Null; ZSlvID = Null; select ZM.ID, ZS.ID, CoalEsce(E.Quant, 0.0) from WorkZMst ZM join WorkMain M on M.ID=ZM.MID join WorkLink L on L.Owner=M.ID join WorkHbLn E on E.RefID=L.ID and E.GodsID=:GodsID and E.MainGds=1 join WorkZSlv ZS on ZS.MstID=ZM.ID and ZS.LID=L.ID where ZM.ID=:ZMID into :ZMstID, :ZSlvID, :QntEqNorm; if (:ZMstID is not Null) then begin if (:QntEqNorm <> 0.0) then begin Quant = :QntHas / :QntEqNorm; QntNorm = :QntEqNorm; update WorkZSlv set Qnt=:QntEqNorm, Quant = :QntHas, GodsID=:GodsID where ID=:ZSlvID; update WorkZMst Set Source = :Quant where ID=:ZMID; suspend; end end end end end if (not Exists(Select D.ID from GddDt D where D.DgvKey=:DgvDtID)) then begin -- удалить пустую накладную delete from DgvDt where ID=:DgvDtID; end else begin update DgvDt set Summa=Summa where ID=:DgvDtID; if (:DgvDtTyp = 0) then begin execute procedure DgvDt_ZSale(:DgvDtID); end end select Summa from StorZakazDt_SlSumma(:SZID) into :SlSumma; end^ ALTER PROCEDURE STORZAKAZDT_GDDDT_RETNKT ( SZID INTEGER, STOR INTEGER, USERID INTEGER = null, ADATE TIMESTAMP = null, OUT_DATE TIMESTAMP = null) RETURNS ( GODSID INTEGER, SZGDSID INTEGER, GDDDTID INTEGER, GDDKTID INTEGER, DGVDTID INTEGER) AS declare variable SZ_ID integer; declare variable DQnt double precision; declare variable KQnt double precision; declare variable Q double precision; declare variable SlSumma double precision; declare variable NdsProc double precision; declare variable Price double precision; declare variable Nds double precision; declare variable PriceKt double precision; declare variable NdsKt double precision; declare variable DgvDtTyp integer; declare variable OperIDDtRt integer; declare variable NameID integer; -- контрагент (поставщик товара)\ declare variable UserName varchar(20); begin select ID from StorZakazDt where ID=:SZID into :SZ_ID; if (:SZ_ID is null) then exit; OperIdDtRt = Null; UserName = Null; DgvDtTyp = 9; -- Возврат поставщику select S.OperIDDtRt, S.ndsproc from StorList s where S.ID=:Stor into :OperIDDtRt, :NdsProc; select Name from UserList where ID=:UserID into :UserName; -- if (:aDate = 0.0) then aDate = Null; -- if (:Out_Date = 0.0) then Out_Date = Null; if (:aDate is Null and :Out_Date is not Null) then aDate = :Out_Date; if (:aDate is Null) then aDate = Current_Date; -- поставщики for select s_kk.NameID from StorZDtGds SG join ( select K.ID, K.GdsKey from GddKtQnt Q join GddKt K on K.ID=Q.ID join DgvKt KK on KK.ID=K.DgvKey and KK.DAT_ <= :aDate where Q.Stor=:Stor order by KK.DAT_, KK.ID, K.ID ) as kt_qnt on kt_qnt.gdskey=sg.godsid join gddkt_srcktid(kt_qnt.ID) s_kt on 0=0 join gddkt s_k on s_k.id=s_kt.ktid join dgvkt s_kk on s_kk.id=s_k.dgvkey where sg.SZID = :SZID and ((sg.source-sg.rsquant) > 0.0) Group by s_kk.NameID into :NameID do begin DgvDtID = Gen_Id(dgvdt_id, 1); insert into dgvdt (ID, typ, SubTyp, Stor, OperID, Dat_, Out_Date, NameID, RealTyp, ProcNds, NdsTyp, SZID, UserName) values(:DgvDtID, : DgvDtTyp, 0, :Stor, :operiddtrt, :aDate, :Out_Date, :NameID, 0, (select S.ndsproc from StorList S where S.ID=:Stor), 1, :SZID, :UserName); merge into dgvdt dd using StorZakazDt SZ on SZ.ID=:SZID and dd.ID=:DgvDtID when matched then update set dd.saleform=sz.saleform, dd.salecond=sz.salecond, dd.CSDtKtHbID=sz.CSDtKtHbID, dd.OrgnInfoID=sz.OrgnInfoID, dd.comment=sz.comment, dd.DNbr=sz.DNbr, dd.DPrsn=sz.DNbr, dd.DDoc=sz.DNbr, dd.DDate=sz.DDate, dd.TrDpID=sz.TrDpID, dd.Transfer=sz.Transfer, dd.Manager=sz.Manager, dd.NNbr=sz.NNbr, dd.NDate=sz.NDate, dd.RNbr=sz.NN, dd.Code=sz.NZ, dd.BonusProc=sz.BonusProc; for select sg.ID, sg.GodsID, sg.source-sg.rsquant, Price from StorZDtGds SG where sg.SZID = :SZID into :SZGdsID, :GodsID, :DQnt, :Price do begin Nds = :Price / (100.00 + :NdsProc) * :NdsProc; for select k.id, k.Quant, k.Price, k.Nds from GddKtQnt Q join GddKt K on K.ID=Q.ID join DgvKt KK on KK.ID=K.DgvKey and KK.DAT_ <= :aDate left join gddkt_srcktid(K.ID) s_kt on 0=0 join gddkt s_k on s_k.id=s_kt.ktid join dgvkt s_kk on s_kk.id=s_k.dgvkey and s_kk.nameid=:NameID where Q.Stor=:Stor and K.GdsKey=:GodsID order by KK.DAT_, KK.ID, K.ID into :GddKtID, :KQnt, :pricekt, :NdsKt do begin if (:DQnt > 0) then begin Q = :DQnt; if (:Q > :KQnt) then Q = :KQnt; if (:DgvDtTyp <> 0) then begin Price = :PriceKt; Nds = :NdsKt; end GddDtID = Gen_ID(GddDt_ID, 1); insert into GddDt (ID, DgvKey, GddKey, Quant, SZGdsID, Price, Nds) values (:GddDtID, :DgvDtID, :GddKtID, :Q, :SZGdsID, :Price, :Nds); DQnt = :DQnt-:Q; suspend; end end -- StorZDtGds / GddKtQnt : товар в наличии end -- StorZDtGds if (not Exists(Select D.ID from GddDt D where D.DgvKey=:DgvDtID)) then begin -- удалить пустую накладную delete from DgvDt where ID=:DgvDtID; end else begin update DgvDt set Summa=Summa where ID=:DgvDtID; end end -- поставщики select Summa from StorZakazDt_SlSumma(:SZID) into :SlSumma; end^ ALTER PROCEDURE STORZAKAZDT_GDSSELECT ( ID INTEGER) RETURNS ( SZGDSID INTEGER, SOURCE DOUBLE PRECISION, QNTOUTRSV DOUBLE PRECISION, QNTOUTOUT DOUBLE PRECISION) AS begin for select ID, Source from StorZDtGds D where SZID = :ID into :SZGDSID, :Source do begin Select CoalEsce(Sum(D.Quant),0) from GddDt D join DgvDt DD on DD.ID = D.DgvKey and DD.Out_Date is Null where D.SZGDSID = :SZGDSID into :QntOutRsv; Select CoalEsce(Sum(D.Quant),0) from GddDt D join DgvDt DD on DD.ID = D.DgvKey and DD.Out_Date is not Null where D.SZGDSID = :SZGDSID into :QntOutOut; suspend; end end^ ALTER PROCEDURE STORZAKAZDT_RESALE RETURNS ( ID INTEGER) AS declare variable CRID integer; declare variable SUMMA double precision; declare variable DgvKey integer; declare variable SaleKey Integer; declare variable SZID integer; declare variable UserName varchar(20); begin for Select SC.ID, SC.Summa, SC.DgvKey, SC.salekey, DD.SZID, SC.UserName from DgvDt DD, SaleCros SC where DD.SZID is not Null and SC.DgvKey=DD.ID and SC.szdtcrid is null into :CRID, :Summa, :DgvKey, :SaleKey, :SZID, :UserName do begin ID = :CRID; delete from SaleCros where ID = :CRID; insert into SZDTCR (SaleID, SZDTID, Summa, username) values(:salekey, :SZID, :Summa, :UserName); suspend; end end^ ALTER PROCEDURE STORZAKAZDT_SALECHECK RETURNS ( TYP INTEGER, SUBTYP INTEGER, ID INTEGER, DAT_ TIMESTAMP, NBR VARCHAR(20), DELTA DOUBLE PRECISION) AS -- сумма к оплате declare variable SLSUMMA double precision; -- сумма оплаты (поле) declare variable SaleSumma double precision; -- сумма оплаты (CR) declare variable SaleSumma1 double precision; declare variable Summ double precision; declare variable S1 double precision; begin TYP = 0; for Select ID, Nbr, DAT_, SLSumma, SaleSumma, Summ from StorZakazDt Z into :ID, :Nbr, :Dat_, :SLSUMMA, :SALESUMMA, :SUMM do begin SaleSumma1 = Null; SubTyp = 0; Select Sum(CR.Summa) from SZDTCR CR where CR.szdtid = :ID into :SaleSumma1; if (:SaleSumma1 is Null) then SaleSumma1 = 0.0; Delta = :SaleSumma - :SaleSumma1; if (Abs(:Delta) > 0.005) then begin Update StorZakazDt set SaleSumma = :SaleSumma1, No_LastEdit=1 where ID = :ID; Suspend; end SubTyp = 1; S1 = Null; Select Sum(SC.Summa) from SZDTCR CR left Join SaleCros SC on SC.szdtcrid = CR.ID where CR.SZDTID=:ID into :S1; if (:S1 is Null) then S1 = 0.0; Delta = :SaleSumma-:S1-:Summ; if (Abs(:Delta) > 0.005) then begin Update StorZakazDt Set Summ = :SaleSumma-:S1, No_LastEdit=1 where ID = :ID; Suspend; end end end^ ALTER PROCEDURE STORZAKAZDT_SLSUMMA ( ID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS declare variable summ double precision; declare variable dSumm double precision; declare variable iSumm double precision; begin -- расчет суммы - к оплате Summa = 0.0; for select ZD.Source * ZD.Price, (Select Sum((D1.Price-ZD.Price)*D1.Quant) from GddDt D1, DgvDt DD1 where D1.SZGDSID=ZD.ID and DD1.ID=D1.DgvKey and DD1.Typ in (0,10,11)), -- реализация товара (Select Sum(ZD.Price*D2.Quant) from GddDt D2, DgvDt DD2 where D2.SZGDSID=ZD.ID and DD2.ID=D2.DgvKey and DD2.Typ not in (0,10,11)) -- не реализация from StorZDtGds ZD where ZD.SZID = :ID into :Summ, :dSumm, :iSumm do begin if (:dSumm is Null) then dSumm = 0.0; if (:iSumm is Null) then iSumm = 0.0; Summa = :Summa + :Summ + :dSumm - :iSumm; end Update StorZakazDt set SLSUMMA = :Summa, No_LastEdit=1 where ID = :ID and SLSumma <> :Summa; suspend; end^ ALTER PROCEDURE STORZAKAZDT_WORKMAINGDS_SEL ( SZID INTEGER, STOR INTEGER, ADATE TIMESTAMP = null) RETURNS ( GODSID INTEGER, QNTNEED DOUBLE PRECISION, QNTHAS DOUBLE PRECISION, LINKID INTEGER, EQID INTEGER, MAINID INTEGER, QNTNORM DOUBLE PRECISION) AS begin if (:aDate is Null) then aDate = Current_Date; for select SG.GodsID, CoalEsce(Sum(SG.Source-SG.RSQuant), 0.0) QntNeed from StorZakazDt SZ join StorZDTGds SG on SG.SZID=SZ.ID join Goods G on G.ID=SG.GODSID where SZ.ID=:SZID and SG.Source > SG.RSQuant Group by SG.GodsID into :GodsID, :QntNeed do begin -- материал в наличии на складе select CoalEsce(Sum(k.Quant), 0.0) from GddKtQnt Q join GddKt K on K.ID=Q.ID and K.GdsKey=:GodsID join DgvKt KK on KK.ID=K.DgvKey and KK.DAT_ <= :aDate where Q.Stor=:Stor into :QntHas; LinkID = Null; EqID = Null; MainID = Null; QntNorm = Null; -- выборка материала select first 1 L.ID, L.Owner, L.Quant from WorkLink L where L.GodsID=:GodsID and L.MainGds = 1 into :LinkID, :MainID, :QntNorm; -- если материала нет - выборка по эквиваленту if (:LinkID is Null) then begin select first 1 L.ID, L.Owner, E.ID, E.Quant from WorkHbLn E join WorkLink L on L.ID=E.RefID where E.GodsID=:GodsID and E.MainGds = 1 into :LinkID, :MainID, :EqID, :QntNorm; end suspend; end end^ ALTER PROCEDURE STORZDTGDS_SELECT ( SZID INTEGER) RETURNS ( ID INTEGER, GODSID INTEGER, FQUANT DOUBLE PRECISION, WQUANT DOUBLE PRECISION) AS declare variable StorGrpID integer; declare variable OurOrgnID integer; begin Select StorGrpID, OurOrgnID from StorZakazDt where ID = :SZID into :StorGrpID, :OurOrgnID; for Select ID, GodsID from StorZDtGds D where D.SZID = :SZID into :ID, :GodsID do begin if (:StorGrpID is Null) then begin -- по всем складам select CoalEsce( (Select Sum(K.Quant) from StorList S join GddKtQnt Q on Q.Stor = S.ID join GddKt K on K.ID = Q.ID and K.GdsKey = :GodsID where S.OurOrgnID+0 = :OurOrgnID and CoalEsce( (Select WR.SZID from WorkRequest WR, WorkRequestGds WG where WG.ID = K.WrGdsID and WG.WRID = WR.ID), :SZID) = :SZID ) , 0.0) from rdb$database into :FQuant; end else begin -- по группе складов Select CoalEsce((Select Sum(K.Quant) from StorGrpRef R join GddKtQnt Q on Q.Stor = r.StorID Join GddKt K on K.ID=Q.ID and K.GdsKey = :GodsID where R.GrpID = :StorGrpID and CoalEsce( (Select WR.SZID from WorkRequest WR, WorkRequestGds WG where WG.ID = K.WrGdsID and WG.WRID = WR.ID), :SZID) = :SZID ), 0.0) from rdb$database into :FQuant; end Select CoalEsce(Sum(WG.WQuant), 0.0) from WorkRequest WR join WorkRequestGds WG on WG.WRID = WR.ID and WG.GodsID = :GodsID where WR.SZID = :SZID into :WQuant; Suspend; end -- отсутствующие в заказе позиции ID = Null; for select WG.GodsID, CoalEsce(Sum(WG.WQuant), 0.0) from WorkRequest WR left join WorkRequestGds WG on WG.WRID = WR.ID left join StorZDtGds D on D.SZID = :SZID and D.GodsID = WG.GodsID where WR.SZID = :SZID and D.ID is Null Group by WG.GodsID into :GodsID, :WQuant do begin ID = -GodsID; select CoalEsce(Sum(K.Quant), 0.0) from GddKt K, GddKtQnt Q, StorList S where K.GdsKey = :GodsID and Q.ID = K.ID and S.ID = Q.Stor and S.OurOrgnID = :OurOrgnID into :FQuant; suspend; end end^ ALTER PROCEDURE SUB_DELETE ( ACCN VARCHAR(5), SUBKEY INTEGER, AN INTEGER) AS begin delete from sub where accn=:accn and subkey=:subkey and an=:an; end^ ALTER PROCEDURE SYSCONST_GETORGNUSERBLOB ( ORGNID INTEGER, USERID INTEGER, NAME VARCHAR(255)) RETURNS ( BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80) AS begin BlobVal = null; if (:OrgnID is not Null and :UserID is not Null) then select BlobVal from SysConst where OurOrgnID=:OrgnID and UserID = :UserID and Name=:Name into :BlobVal; else if (:OrgnID is not Null and :UserID is Null) then select BlobVal from SysConst where OurOrgnID=:OrgnID and UserID is Null and Name=:Name into :BlobVal; else if (:OrgnID is Null and :UserID is not Null) then select BlobVal from SysConst where OurOrgnID is Null and UserID = :UserID and Name=:Name into :BlobVal; else if (:OrgnID is Null and :UserID is Null) then select BlobVal from SysConst where OurOrgnID is Null and UserID is Null and Name=:Name into :BlobVal; suspend; end^ ALTER PROCEDURE SYSCONST_GETORGNUSERVALUE ( ORGNID INTEGER, USERID INTEGER, NAME VARCHAR(255)) RETURNS ( VAL VARCHAR(255)) AS begin Val = null; if (:OrgnID is not Null and :UserID is not Null) then select Val from SysConst where OurOrgnID=:OrgnID and UserID = :UserID and Name=:Name into :Val; else if (:OrgnID is not Null and :UserID is Null) then select Val from SysConst where OurOrgnID=:OrgnID and UserID is Null and Name=:Name into :Val; else if (:OrgnID is Null and :UserID is not Null) then select Val from SysConst where OurOrgnID is Null and UserID = :UserID and Name=:Name into :Val; else if (:OrgnID is Null and :UserID is Null) then select Val from SysConst where OurOrgnID is Null and UserID is Null and Name=:Name into :Val; suspend; end^ ALTER PROCEDURE SYSCONST_GETUSERBLOB ( USERID INTEGER, NAME VARCHAR(255)) RETURNS ( BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80) AS begin BlobVal = null; select BlobVal from SysConst where UserID=:UserID and Name=:Name into :BlobVal; Suspend; end^ ALTER PROCEDURE SYSCONST_GETUSERVALUE ( USERID INTEGER, NAME VARCHAR(255)) RETURNS ( VAL VARCHAR(255)) AS begin Val = Null; select Val from SysConst where UserID=:UserID and Name=:Name into :Val; Suspend; end^ ALTER PROCEDURE SYSCONST_GETVALUE ( ORGNID INTEGER, NAME VARCHAR(255)) RETURNS ( VAL VARCHAR(255)) AS begin Val = null; if (:OrgnID is not Null) then begin select FIRST 1 SC.Val from SysConst SC where (SC.OurOrgnID = :OrgnID) and (SC.UserID is Null) and (SC.Name = :Name) into :Val; end else begin select FIRST 1 Val from SysConst where Name = :Name and OurOrgnID is Null and UserID is Null into :Val; end suspend; end^ ALTER PROCEDURE SYSCONST_SETORGNUSERBLOB ( ORGNID INTEGER, USERID INTEGER, NAME VARCHAR(255), BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80, DESCRIPTION VARCHAR(1024) = null) RETURNS ( ID INTEGER) AS begin Description = Trim(:Description); if (Description = '') then Description = Null; ID = Null; if (:OrgnID is not Null and UserID is not Null) then select ID from SysConst where OurOrgnID=:OrgnID and UserID = :UserID and Name=:Name into :ID; else if (:OrgnID is not Null and UserID is Null) then select ID from SysConst where OurOrgnID=:OrgnID and UserID is Null and Name=:Name into :ID; else if (:OrgnID is Null and UserID is not Null) then select ID from SysConst where OurOrgnID is Null and UserID = :UserID and Name=:Name into :ID; else if (:OrgnID is Null and UserID is Null) then select ID from SysConst where OurOrgnID is Null and UserID is Null and Name=:Name into :ID; if (ID is Null) then begin ID = Gen_ID(SysConst_ID, 1); insert into SysConst (ID, OurOrgnID, UserID, Name, BlobVal, Description) values (:ID, :OrgnID, :UserID, :Name, :BlobVal, :Description); end else begin Update SysConst set BlobVal = :BlobVal, Description = CoalEsce(:Description, Description) where ID = :ID; end Suspend; /* ID = Null; select ID from SysConst where UserID=:UserID and Name=:Name into :ID; if (:ID is Null) then insert into SysConst (UserID, Name, BlobVal) values (:UserID, :Name, :BlobVal); else Update SysConst set BlobVal=:BlobVal where ID = :ID; */ end^ ALTER PROCEDURE SYSCONST_SETORGNUSERVALUE ( ORGNID INTEGER, USERID INTEGER, NAME VARCHAR(255), VAL VARCHAR(255), DESCRIPTION VARCHAR(1024) = null) RETURNS ( ID INTEGER) AS begin Description = Trim(:Description); if (Description = '') then Description = Null; ID = Null; if (:OrgnID is not Null and UserID is not Null) then select ID from SysConst where OurOrgnID=:OrgnID and UserID = :UserID and Name=:Name into :ID; else if (:OrgnID is not Null and UserID is Null) then select ID from SysConst where OurOrgnID=:OrgnID and UserID is Null and Name=:Name into :ID; else if (:OrgnID is Null and UserID is not Null) then select ID from SysConst where OurOrgnID is Null and UserID = :UserID and Name=:Name into :ID; else if (:OrgnID is Null and UserID is Null) then select ID from SysConst where OurOrgnID is Null and UserID is Null and Name=:Name into :ID; if (ID is Null) then begin ID = Gen_ID(SysConst_ID, 1); insert into SysConst (ID, OurOrgnID, UserID, Name, Val, Description) values (:ID, :OrgnID, :UserID, :Name, :Val, :Description); end else Update SysConst set Val = :Val, Description = CoalEsce(:Description, Description) where ID = :ID; Suspend; end^ ALTER PROCEDURE SYSCONST_SETUSERBLOB ( USERID INTEGER, NAME VARCHAR(255), BLOBVAL BLOB SUB_TYPE 0 SEGMENT SIZE 80) AS Declare variable ID integer; begin ID = Null; select ID from SysConst where UserID=:UserID and Name=:Name into :ID; if (:ID is Null) then insert into SysConst (UserID, Name, BlobVal) values (:UserID, :Name, :BlobVal); else Update SysConst set BlobVal=:BlobVal where ID = :ID; end^ ALTER PROCEDURE SYSCONST_SETUSERVALUE ( USERID INTEGER, NAME VARCHAR(255), VAL VARCHAR(255), DESCRIPTION VARCHAR(1024) = null) AS Declare variable ID integer; begin ID = Null; select ID from SysConst where UserID=:UserID and Name=:Name into :ID; if (:ID is Null) then insert into SysConst (UserID, Name, Val, Description) values (:UserID, :Name, :Val, :Description); else begin Update SysConst set Val=:Val where ID=:ID; if (CoalEsce(:Description,'') <> '') then begin Update SysConst set Description=:Description where ID=:ID; end end end^ ALTER PROCEDURE SYSCONST_SETVALUE ( ORGNID INTEGER, NAME VARCHAR(255), VAL VARCHAR(255), DESCRIPTION VARCHAR(1024) = null) AS Declare variable ID integer; begin ID = Null; if (:OrgnID is not Null) then select ID from SysConst where OurOrgnID = :OrgnID and UserID is Null and Name = :Name into :ID; else select ID from SysConst where Name = :Name and OurOrgnID is Null and UserID is Null into :ID; if (:ID is Null) then begin insert into SysConst (OurOrgnID, Name, Val, Description) values (:OrgnID, :Name, :Val, :Description); end else begin Update SysConst set Val = :Val where ID = :ID and Val <> :Val; if (CoalEsce(:Description,'') <> '') then begin Update SysConst set Description=:Description where ID=:ID; end end end^ ALTER PROCEDURE THROW_EXCEPTION ( EXCEPTION_TEXT VARCHAR(100)) AS begin EXCEPTION_TEXT = cast(EXCEPTION_TEXT as VARCHAR(77)); update RDB$EXCEPTIONS set RDB$MESSAGE = :EXCEPTION_TEXT where RDB$EXCEPTION_NAME = 'COMMON_EXCEPTION'; exception COMMON_EXCEPTION; suspend; end^ ALTER PROCEDURE USERLIST_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(UserList_ID, 1); end^ ALTER PROCEDURE VKSL_DELACCNREC ( ID INTEGER) AS begin Delete From VKSLACCR where VKSLID=:ID; end^ ALTER PROCEDURE VKSL_GENACCNREC ( ID INTEGER, TYP INTEGER) AS declare variable OperID Integer; declare variable OperID0 Integer; declare variable OperID1 Integer; declare variable OperID2 Integer; declare variable OperID3 Integer; declare variable OperID4 Integer; declare variable OpID Integer; declare variable Oper Integer; declare variable AccnProvID Integer; declare variable DT Varchar(5); declare variable KT Varchar(5); declare variable Accn Varchar(5); declare variable DateTyp Integer; declare variable SumTyp Integer; declare variable Storno Integer; declare variable FinRes Integer; declare variable DtPrt Integer; declare variable DtObj Integer; declare variable KtPrt Integer; declare variable KtObj Integer; declare variable Proc Double precision; declare variable Summa Double Precision; declare variable aDate Date; declare variable DateDt Date; declare variable DateKt Date; declare variable VkSumma Double Precision; declare variable SumDt Double Precision; declare variable SumKt Double Precision; declare variable Nbr Varchar(20); declare variable aDt Integer; declare variable aKt Integer; declare variable Dt1 integer; declare variable Kt1 integer; declare variable DTA integer; declare variable KTA integer; declare variable OrgnDtID integer; /* Покупатель */ declare variable OrgnKtID integer; /* Продавец */ declare variable OrgnSlID integer; /* Плательщик */ declare variable OrgnVkDtID integer; /* Векселедатель */ declare variable OrgnVkKtID integer; /* Векселедержатель */ declare variable OrgnAkcID integer; -- акцептант declare variable UserName Varchar(20); declare variable oComment Varchar(255); -- примечание конфигурационной проводки из операции declare variable ioComment Varchar(255); -- примечание (выдача/поступление) declare variable inpComment Varchar(255); -- примечание (покупка) declare variable outComment Varchar(255); -- примечание (продажа) declare variable salComment Varchar(255); -- примечание (предъявление к платежу) declare variable akcComment Varchar(255); -- примечание (акцепт) declare variable aComment Varchar(255); -- примечание для формируемой проводки declare variable OurOrgnID integer; declare variable dCurrTyp integer; /* валюта покупки */ declare variable kCurrTyp integer; /* валюта продажи */ declare variable dtCurrTyp integer; /* валюта счета-дебета */ declare variable ktCurrTyp integer; /* валюта счета-кредита */ declare variable dCurs double precision; /* курс покупки */ declare variable kCurs double precision; /* курс продажи */ declare variable aCurrTyp integer; /* валюта проводки */ declare variable aCurs double precision; /* курс проводки */ declare variable acSumma double precision; declare variable dcSumma double precision; /* валюта - сумма продажи */ declare variable kcSumma double precision; /* валюта - сумма покупки */ declare variable vcSumma double precision; /* валюта -номинальная стоимость */ declare variable vCurrTyp integer; /* валюта (номин. стоимость) */ declare variable vCurs double precision; /* курс (номин. стоимость) */ declare variable OutDate TimeStamp; declare variable DateSl TimeStamp; declare variable DateAkc TimeStamp; begin Select OperID, OperIDO, OperIDIO, OperIDSL, OperIDA, DateDt, DateKt, Summa, SumDt, SumKt, Nbr, OurOrgnID, OrgnKtID, OrgnDtID, UserName, ioComment, Comment, oComment, sComment, aComment, OrgnSlID, OrgnVkDtID, OrgnVkKtID, OrgnAkcID, CurrTypDt, CurrTypKt, CursDt, CursKt, V.CSumDt, V.CSumKt, CurrTyp, Curs, cSumma, Out_Date, DateSl, Date_Akc from VKSL V where ID=:ID into :OperID0, :OperID1, :OperID2, :OperID3, :OperID4, :DateDt, :DateKt, :VkSumma,:SumDt,:SumKt,:Nbr, :OurOrgnID, :OrgnKtID, :OrgnDtID, :UserName, :ioComment, :inpComment, :outComment, :salComment, :akcComment, :OrgnSlID, :OrgnVkDtID, :OrgnVkKtID, :OrgnAkcID, :dCurrTyp, :kCurrTyp, :dCurs, :kCurs, :dcSumma, :kcSumma, :vCurrTyp, :vCurs, :vcSumma, :OutDate, :DateSl, :DateAkc; if (:Typ=0) then OperID = :OperID0; -- покупка if (:Typ=1) then OperID = :OperID1; -- продажа if (:Typ=2) then OperID = :OperID2; -- выдача/поступление if (:Typ=3) then OperID = :OperID3; -- предъявление к платежу if (:Typ=4) then OperID = :OperID4; -- акцепт if ((:OperID is null) or (:OperID=0)) then Exit; for Select P.DT, P.KT, P.AccnDate, P.SumTyp, P.Storno, P.FinRes, P.DtPrt, P.DtObj, P.KtPrt, P.KtObj, A.Oper, Comment, DTA, KTA from StorAccn P, AcOprLst A Where P.OperID=:OperID and P.AccnDate in (0, 3, 8, 9, 10) and A.ID=P.OperID into :DT, :KT, :DateTyp, :SumTyp,:Storno,:FinRes, :DtPrt, :DtObj, :KtPrt, :KtObj, :Oper, :oComment, :DTA, :KTA do begin Select A1, CurrTyp from AccnPlan where Accn=:Dt into :aDt, :dtCurrTyp; Select A1, CurrTyp from AccnPlan where Accn=:Kt into :aKt, :KtCurrTyp; Dt1 = Null; Kt1 = Null; if(:aDt=1) then begin if(:DateTyp=0) then Dt1 = :OrgnKtID; if(:DateTyp=3) then Dt1 = :OrgnDtID; if (:DTA=0) then DT1 = :OrgnVkDtID; if (:DTA=1) then DT1 = :OrgnSlID; if (:DTA=2) then DT1 = :OrgnVkKtID; if (:DTA=3) then DT1 = :OrgnKtID; if (:DTA=4) then DT1 = :OrgnDtID; if (:DTA=5) then DT1 = :OrgnAkcID; end if(:aKt=1) then begin if(:DateTyp=0) then Kt1 = OrgnKtID; if(:DateTyp=3) then Kt1 = OrgnDtID; if (:KTA=0) then KT1 = :OrgnVkDtID; if (:KTA=1) then KT1 = :OrgnSlID; if (:KTA=2) then KT1 = :OrgnVkKtID; if (:KTA=3) then KT1 = :OrgnKtID; if (:KTA=4) then KT1 = :OrgnDtID; if (:KTA=5) then KT1 = :OrgnAkcID; end if (:DateTyp=0) then aDate = :DateKt; if (:DateTyp=3) then aDate = :DateDt; if (:DateTyp=8) then aDate = :OutDate; if (:DateTyp=9) then aDate = :DateSl; if (:DateTyp=10) then aDate = :DateAkc; Summa =0.0; acSumma = 0.0; aCurs = 0.0; aCurrTyp = Null; if (:SumTyp=0) then begin Summa=:VkSumma; if (:vCurrTyp is not Null) then begin if (:dtCurrTyp is not Null) then aCurrTyp = :vCurrTyp; if (:ktCurrTyp is not Null) then aCurrTyp = :vCurrTyp; if (:aCurrTyp is not Null) then begin aCurs = :vCurs; acSumma = :vcSumma; end end end if (:SumTyp=1) then begin Summa=:SumKt; if (:kCurrTyp is not Null) then begin if (:dtCurrTyp is not Null) then aCurrTyp = :kCurrTyp; if (:ktCurrTyp is not Null) then aCurrTyp = :kCurrTyp; if (:aCurrTyp is not Null) then begin aCurs = :kCurs; acSumma = :kcSumma; end end end if (:SumTyp=2) then begin Summa=:SumDt; if (:dCurrTyp is not Null) then begin if (:dtCurrTyp is not Null) then aCurrTyp = :dCurrTyp; if (:ktCurrTyp is not Null) then aCurrTyp = :dCurrTyp; if (:aCurrTyp is not Null) then begin aCurs = :dCurs; acSumma = :dcSumma; end end end if (:SumTyp=3) then begin Summa=:SumDt-:SumKt; end if (:SumTyp=6) then begin Summa = :VkSumma-:SumKt; end if(:FinRes=0) then if (Summa<0.0) then Summa=0.0; if(:FinRes=2) then if (Summa<0.0) then begin Summa=-:Summa; Accn=:Dt; Dt=:Kt; Kt=:Accn; end if (:Summa is not null and Summa<>0.0 and aDate is not Null) then begin if (:Typ = 0) then aComment = :inpComment; if (:Typ = 1) then aComment = :outComment; if (:Typ = 2) then aComment = :ioComment; if (:Typ = 3) then aComment = :salComment; if (:Typ = 4) then aComment = :akcComment; if ((:aComment='') or (:aComment is Null)) then aComment = :oComment; if(:Proc <> 0 and :Proc is Not Null) then Summa=:Summa / 100.00*:Proc; if(:Storno = 1) then Summa = -:Summa; AccnProvID = Gen_ID(AccnProv_ID, 1); Insert Into AccnProv(ID, OurOrgnID,DT,KT,DAT_,Summa,Document,Dt1,Kt1, DocID,Oper,OperID,UserName, Comment, CurrTyp, Curs, cSumma) Values(:AccnProvID, :OurOrgnID,:DT,:KT,:aDate,:Summa,:Nbr,:Dt1,:Kt1, :ID,:Oper,:OperID,:UserName, :aComment, :aCurrTyp, :aCurs, :acSumma); Insert Into vkslaccr (VKSLID, ACCNID, Typ) Values(:ID, :AccnProvID, :Typ); end end for Select ID from StorAccn Where OperID=:OperID and (AccnDate=1 or AccnDate=2 or (AccnDate=7 and SumTyp=6)) into :OpID do Execute Procedure VKSL_GenAccnRecSaleKt :ID, :OpID, :Typ; for Select ID from StorAccn Where OperID=:OperID and (AccnDate=4 or AccnDate=5 or (AccnDate=7 and SumTyp=6)) into :OpID do Execute Procedure VKSL_GenAccnRecSaleDt :ID, :OpID, :Typ; end^ ALTER PROCEDURE VKSL_GENACCNRECSALEDT ( ID INTEGER, OPID INTEGER, TYP INTEGER) AS declare variable OperID integer; declare variable Oper integer; declare variable Summa Double Precision; declare variable DT Varchar(5); declare variable KT Varchar(5); declare variable DateTyp Integer; declare variable SumTyp Integer; declare variable FinRes Integer; declare variable Storno Integer; declare variable NBR Varchar(20); declare variable Comment Varchar(255); declare variable vDate Date; declare variable sDate Date; declare variable aDate Date; declare variable AccnID Integer; declare variable DtPrt Integer; declare variable DtObj Integer; declare variable KtPrt Integer; declare variable KtObj Integer; declare variable UserName Varchar(20); declare variable OrgnDtID integer; declare variable OrgnKtID integer; declare variable OrgnSlID integer; declare variable OrgnVkDtID integer; declare variable OrgnVkKtID integer; declare variable aDt integer; declare variable aKt integer; declare variable Dt1 integer; declare variable Kt1 integer; declare variable DtA integer; declare variable KtA integer; declare variable OurOrgnID integer; /* накапливаемая сумма оплаты */ Declare variable SSumma double precision; /* номинальная стоимость векселя */ Declare Variable VSumma double precision; /* цена продажи */ Declare Variable DtSumma double precision; /* сумма проводки */ Declare Variable aSumma double precision; begin Select P.OperID, P.DT, P.KT, P.AccnDate, P.SumTyp, P.FinRes, P.Storno, A.Oper, P.DtPrt, P.DtObj, P.KtPrt, P.KtObj, P.DTA, P.KTA From StorAccn P, AcOprLst A where P.ID=:OpID and A.ID=P.OperID into :OperID, :Dt, :Kt, :DateTyp, :SumTyp, :FinRes, :Storno, :Oper, :DtPrt, :DtObj, :KtPrt, :KtObj, :DTA, :KTA; if (:OperID is null) then Exit; SSumma = 0.0; For Select V.NBR, C.SUMMA, V.Summa, V.SumDt, V.DATEDT, S.DAT_,V.Comment, V.OurOrgnID, S.UserName, V.OrgnDtID, V.OrgnKtID, V.OrgnSlID, V.OrgnVkDtID, V.OrgnVkKtID From VKSL V, SALEDTVKCR C, Sale S where V.ID=:ID and C.VKSLID=V.ID and S.ID=C.SALEID Order by S.DAT_, S.ID into :Nbr, :Summa, :VSumma, :DtSumma, :vDate, :sDate, :Comment, :OurOrgnID, :UserName,:OrgnDtID, :OrgnKtID, :OrgnSlID, :OrgnVkDtID, :OrgnVkKtID do begin sSumma = :sSumma + :Summa; Select A1 from AccnPlan where Accn=:Dt into :aDt; Select A1 from AccnPlan where Accn=:Kt into :aKt; Dt1=Null; Kt1=Null; if (:aDt=1) then begin Dt1=:OrgnDtID; if (:DTA=0) then DT1 = :OrgnVkDtID; if (:DTA=1) then DT1 = :OrgnSlID; if (:DTA=2) then DT1 = :OrgnVkKtID; if (:DTA=3) then DT1 = :OrgnKtID; if (:DTA=4) then DT1 = :OrgnDtID; end if (:aKt=1) then begin Kt1=:OrgnDtID; if (:KTA=0) then KT1 = :OrgnVkDtID; if (:KTA=1) then KT1 = :OrgnSlID; if (:KTA=2) then KT1 = :OrgnVkKtID; if (:KTA=3) then KT1 = :OrgnKtID; if (:KTA=4) then KT1 = :OrgnDtID; end aDate = null; aSumma = 0.0; if(:DateTyp=4) then begin /* по первому событию */ if (:vDate is null) then aDate = :sDate; if (:sDate is null) then aDate = :vDate; if (:sDate is not null and :vDate is not null) then begin if (:vDate<:sDate) then aDate=:vDate; else aDate=:sDate; end aSumma = :Summa; end if(:DateTyp=5) then begin /* по последнему событию */ if (:sDate is not null and :vDate is not null) then begin if (:vDate>:sDate) then aDate=:vDate; else aDate=:sDate; end aSumma = :Summa; end if (:DateTyp=7) then begin /* Дата оплаты (Выдано) */ aDate = :sDate; if (:SumTyp=6) then begin /* доход = номинал-продажа */ if (:vSumma > :DtSumma) then begin if (:sSumma > :DtSumma) then begin /* началось превышение */ if (:sSumma - :Summa > :DtSumma) then aSumma = :Summa; else aSumma = :sSumma-:DtSumma; end end end end if ((:aSumma <> 0.0) and (:aSumma is not null) and (:aDate is not null)) then begin if (:Storno=1) then Summa = -:Summa; AccnID = Gen_ID(AccnProv_ID, 1); Insert Into AccnProv(ID,OurOrgnID,DAT_,Document,DT,KT,SUMMA,Comment, DocID,Oper,OperID,DtPrt,DtObj,KtPrt,KtObj,UserName,Dt1,Kt1) Values (:AccnID,:OurOrgnID,:aDate,:Nbr,:Dt,:Kt,:aSumma,:Comment, :ID,:Oper,:OperID,:DtPrt,:DtObj,:KtPrt,:KtObj,:UserName,:Dt1,:Kt1); Insert Into VKSLACCR(VKSLID, ACCNID, Typ) Values(:ID, :AccnID, :Typ); end end end^ ALTER PROCEDURE VKSL_GENACCNRECSALEKT ( ID INTEGER, OPID INTEGER, TYP INTEGER) AS declare variable OperID integer; declare variable Oper integer; declare variable Summa Double Precision; declare variable DT Varchar(5); declare variable KT Varchar(5); declare variable DateTyp Integer; declare variable SumTyp Integer; declare variable FinRes Integer; declare variable Storno Integer; declare variable NBR Varchar(20); declare variable Comment Varchar(255); declare variable vDate Date; declare variable sDate Date; declare variable aDate Date; declare variable AccnID Integer; declare variable DtPrt Integer; declare variable DtObj Integer; declare variable KtPrt Integer; declare variable KtObj Integer; declare variable UserName Varchar(20); declare variable aDt Integer; declare variable aKt Integer; declare variable Dt1 Integer; declare variable Kt1 Integer; declare variable DtA integer; declare variable KtA integer; declare variable OrgnDtID integer; declare variable OrgnKtID integer; declare variable OrgnSlID integer; declare variable OrgnVkDtID integer; declare variable OrgnVkKtID integer; declare variable OurOrgnID integer; declare variable dCurrTyp integer; /* валюта покупки */ declare variable kCurrTyp integer; /* валюта продажи */ declare variable dtCurrTyp integer; /* валюта счета-дебета */ declare variable ktCurrTyp integer; /* валюта счета-кредита */ declare variable dCurs double precision; /* курс покупки */ declare variable kCurs double precision; /* курс продажи */ declare variable aCurrTyp integer; /* валюта проводки */ declare variable aCurs double precision; /* курс проводки */ begin Select P.OperID, P.DT, P.KT, P.AccnDate, P.SumTyp, P.FinRes, P.Storno, A.Oper, P.DtPrt, P.DtObj, P.KtPrt, P.KtObj, P.DTA, P.KTA From StorAccn P, AcOprLst A where P.ID=:OpID and A.ID=P.OperID into :OperID, :Dt, :Kt, :DateTyp, :SumTyp, :FinRes, :Storno, :Oper, :DtPrt, :DtObj, :KtPrt, :KtObj, :DTA, :KTA; if (:OperID is null) then Exit; For Select V.NBR, C.SUMMA, V.DATEKT, S.DAT_,V.Comment, V.OurOrgnID, S.UserName, V.OrgnKtID, V.OrgnDtID, V.OrgnSlID, V.OrgnVkKtID, V.OrgnVkDtID, V.CurrTypKt, V.CursKt From VKSL V, SALEKTVKCR C, SaleKt S where V.ID=:ID and C.VKSLID=V.ID and S.ID=C.SALEID into :Nbr, :Summa, :vDate, :sDate, :Comment, :OurOrgnID, :UserName, :OrgnKtID, :OrgnDtID, :OrgnSlID, :OrgnVkKtID, :OrgnVkDtID, :kCurrTyp, :kCurs do begin Select A1, CurrTyp from AccnPlan where Accn=:Dt into :aDt, :dtCurrTyp; Select A1, CurrTyp from AccnPlan where Accn=:Kt into :aKt, :ktCurrTyp; Dt1=Null; Kt1=Null; if (:aDt=1) then begin Dt1=:OrgnKtID; if (:DTA=0) then DT1 = :OrgnVkDtID; if (:DTA=1) then DT1 = :OrgnSlID; if (:DTA=2) then DT1 = :OrgnVkKtID; if (:DTA=3) then DT1 = :OrgnKtID; if (:DTA=4) then DT1 = :OrgnDtID; end if (:aKt=1) then begin Kt1=:OrgnKtID; if (:KTA=0) then KT1 = :OrgnVkDtID; if (:KTA=1) then KT1 = :OrgnSlID; if (:KTA=2) then KT1 = :OrgnVkKtID; if (:KTA=3) then KT1 = :OrgnKtID; if (:KTA=4) then KT1 = :OrgnDtID; end aDate = null; if(:DateTyp=1) then begin /* First Date */ if (:vDate is null) then aDate = :sDate; if (:sDate is null) then aDate = :vDate; if (:sDate is not null and :vDate is not null) then begin if (:vDate<:sDate) then aDate=:vDate; else aDate=:sDate; end end if(:DateTyp=2) then begin /* Last Date */ if (:sDate is not null and :vDate is not null) then begin if (:vDate>:sDate) then aDate=:vDate; else aDate=:sDate; end end if (:Summa<>0.0 and :Summa is not null and :aDate is not null) then begin if (:Storno=1) then Summa = -:Summa; AccnID = Gen_ID(AccnProv_ID, 1); Insert Into AccnProv(ID, OurOrgnID,DAT_,Document,DT,KT,SUMMA,Comment, DocID,Oper,OperID,DtPrt,DtObj,KtPrt,KtObj,UserName,Dt1,Kt1) Values (:AccnID,:OurOrgnID,:aDate,:Nbr,:Dt,:Kt,:Summa,:Comment, :ID,:Oper,:OperID,:DtPrt,:DtObj,:KtPrt,:KtObj,:UserName,:Dt1,:Kt1); Insert Into VKSLACCR(VKSLID, ACCNID, Typ) Values(:ID, :AccnID, :Typ); end end end^ ALTER PROCEDURE WORKCALCMST_COPY ( OLDID INTEGER, NEWID INTEGER) AS declare variable CALCNKID integer; declare variable NKID integer; declare variable NEWCALCNKID integer; declare variable STORID integer; declare variable MULT double precision; begin for select ID FROM WorkCalcMst WHERE ID=:OLDID INTO :OLDID DO BEGIN FOR SELECT ID, NKID FROM WorkCalcNk WHERE MSTID=:OLDID ORDER BY ID INTO :CalcNkID, :NkID DO BEGIN NewCalcNkID = Gen_ID(WorkCalcNk_ID, 1); INSERT INTO WorkCalcNk(ID, MSTID, NKID, SUMMA) VALUES(:NewCalcNkID, :NewID, :NkID, 0.0); FOR select StorID, Mult FROM WorkCalcPodr WHERE CalcNkID = :CalcNkID ORDER BY ID INTO :StorID, :Mult do begin INSERT INTO WorkCalcPodr (ID, CalcNkID, StorID, Mult, Summa, NkSumma) VALUES(Gen_ID(WorkCalcPodr_ID, 1), :NewCalcNkID, :StorID, :Mult, 0.0, 0.0); end insert into WorkCalcNkPrm (CalcNkID, ParamValID, UserID) select :NewCalcNkID, P.ParamValID, U.ID from WorkCalcNkPrm P join WorkCalcNk N on N.ID=P.calcnkid Join workcalcmst M on M.ID=N.MstID left join UserList u on U.Name=M.UserName where P.calcnkid=:CalcNkID; END END end^ ALTER PROCEDURE WORKCALCMST_NEWID RETURNS ( ID INTEGER) AS begin id=Gen_ID(WorkCalcMst_ID, 1); end^ ALTER PROCEDURE WORKCALCNK_NEWID RETURNS ( ID INTEGER) AS begin id=Gen_ID(WorkCalcNk_ID,1); end^ ALTER PROCEDURE WORKCALCPODR_NEWID RETURNS ( ID INTEGER) AS begin id=Gen_ID(WorkCalcPodr_ID,1); end^ ALTER PROCEDURE WORKGOODS_GETCHILDS ( GRPID INTEGER) RETURNS ( ID INTEGER) AS declare Variable WID integer; Declare Variable GroupTyp integer; begin for Select WG1.ID, WG1.GroupTyp from WorkGoods WG1 where WG1.ParentID is Null and :GrpID is Null Union Select WG1.ID, WG1.GroupTyp from WorkGoods WG1 where WG1.ParentID = :GrpID and :GrpID is not Null into :WID, :GroupTyp do begin ID = :WID; Suspend; if (:GroupTyp=1) then for Select ID from WorkGoods_GetChilds(:WID) into :ID do Suspend; end end^ ALTER PROCEDURE WORKGOODS_GETPARENTS ( ID INTEGER) RETURNS ( CID INTEGER, PARENTID INTEGER) AS BEGIN WHILE (:ID <> 0 and ID is not Null) DO /* ищем до корня */ BEGIN SELECT O.ID, O.ParentID FROM WorkGoods O WHERE O.ID = :ID INTO :CID, :ParentID; ID = :ParentID; /* код родителя для следующей выборки */ SUSPEND; END END^ ALTER PROCEDURE WORKHBNK_NEWID RETURNS ( ID INTEGER) AS begin id=Gen_ID(WorkHbNk_ID, 1); end^ ALTER PROCEDURE WORKLINK_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(worklink_id,1); end^ ALTER PROCEDURE WORKLINK_PRICE ( GID INTEGER) RETURNS ( GDSKEY INTEGER, QUANT DOUBLE PRECISION) AS declare variable WMID integer; declare variable QNT double precision; BEGIN qnt=0.0; for select wl.godsid, wl.quant --,lp.price, lp.nds ,(select wm.id from workmain wm where wm.godsid=wl.godsid) --,g.kprice from worklink wl join workmain w on w.id=wl.owner --join goods g on wl.godsid=g.id --left join GOODS_LASTINPPRICE(:CURORGNID,null,wl.godsid) lp on 0=0 where w.godsid=:GID into :gdskey, :quant, --:lst_price, :lst_nds, :wmid --, :nprice do begin qnt= :quant; if (:wmid is null) then suspend; -- только конечные состовляющие без ПФ for select wp.gdskey, wp.quant*:qnt --,lp.price, lp.nds, g.kprice from worklink_price(:gdskey) wp -- join goods g on wp.gdskey = g.id -- left join GOODS_LASTINPPRICE(:CURORGNID,null,wp.gdskey) lp on 0=0 into :gdskey, :quant --, :lst_price, lst_nds, :nprice do begin suspend; end end END^ ALTER PROCEDURE WORKMAIN_COPY ( M1ID INTEGER, M2ID INTEGER) AS declare variable L1ID integer; declare variable L2ID integer; declare variable UserName varchar(20); begin select UserName from WorkMain where ID = :M2ID into :UserName; delete from WorkLink where Owner = :M2ID; -- цикл по материалам for select ID from WorkLink where Owner = :M1ID into :L1ID do begin L2ID = Gen_ID(WorkLink_ID, 1); insert into WorkLink(ID, Owner, GodsID, Nw, Gw, RndQnt, KF, Quant, Qnt_One, Typ, UserName, NormDelta, NoZReserv, KDelta, MainDtlID, SizeX, SizeY, SizeZ, ModelDtlID, ModelGdsID, Kx, Ky, Kz, DetailName, TestOne) select :L2ID, :M2ID, GodsID, Nw, Gw, RndQnt, KF, Quant, Qnt_One, Typ, :UserName, NormDelta, NoZReserv, KDelta, MainDtlID, SizeX, SizeY, SizeZ, ModelDtlID, ModelGdsID, Kx, Ky, Kz, DetailName, TestOne from WorkLink where ID = :L1ID; insert into WorkHbLn (RefID, GODSID, Quant, NormDelta, Priority, KDelta, UserName) select :L2ID, GODSID, Quant, NormDelta, Priority, KDelta, :UserName from WorkHbLn where RefID = :L1ID; end end^ ALTER PROCEDURE WORKMAIN_GETPARENTS ( ID INTEGER, OTYPE INTEGER) RETURNS ( OID INTEGER, OBJTYPE INTEGER) AS declare variable PID integer; BEGIN if (:OType = 1) then begin /* материалы и комплектующие */ for SELECT L.ID, L.Owner FROM WorkLink L WHERE L.ID = :ID INTO :OID, :PID do begin ID = :PID; /* код родителя для следующей выборки */ ObjType = 1; OType = 2; SUSPEND; END end if (:OType = 2) then begin /* изделие */ for SELECT M.ID, G.Owner FROM WorkMain M, Goods G WHERE M.ID = :ID and G.ID=M.GodsID INTO :OID, :PID do begin ID = :PID; /* код родителя для следующей выборки */ ObjType = 2; OType = 3; SUSPEND; end end if (:OType = 3) then begin /* группы товара */ WHILE (:ID > 0) DO /* ищем до корня */ BEGIN for SELECT O.ID, O.Owner FROM Goods O WHERE O.ID = :ID INTO :OID, :PID do begin ObjType = 3; ID = :PID; /* код родителя для следующей выборки */ SUSPEND; end END end END^ ALTER PROCEDURE WORKMAIN_NEWID RETURNS ( ID INTEGER) AS begin id = gen_id(workmain_id,1); end^ ALTER PROCEDURE WORKMAINGDS_CHECK ( GODSID INTEGER, CURMAINID INTEGER, CURLINKID INTEGER, CUREQID INTEGER, EXCEPT INTEGER = 1) RETURNS ( ALREADYUSE INTEGER, MAINID INTEGER, LINKID INTEGER, EQID INTEGER, LINKID1 INTEGER, EQID1 INTEGER) AS declare variable mName varchar(40); declare variable mCode varchar(20); begin AlreadyUse = 0; MainID = Null; LinkID = Null; EqID = Null; LinkID1 = Null; EqID1 = Null; -- проверка на уникальность материала по всем изделиям for select First 1 L.ID, L.owner, G.Name, G.Code from WorkLink L join WorkMain M on M.ID=L.Owner join Goods G on G.ID=M.GodsID where L.GodsID=:GodsID and L.MainGds=1 and L.ID <> :CurLinkID into :LinkID, :MainID, :mName, :mCode do begin AlreadyUse = 1; end -- проверка на уникальность эквивалента по всем изделиям if (:AlreadyUse = 0) then begin for select First 1 L.ID, E.ID, L.Owner, G.Name, G.Code from WorkHbLn E join WorkLink L on E.RefID = L.ID join WorkMain M on M.ID=L.Owner join Goods G on G.ID=M.GodsID where E.GodsID=:GodsID and E.MainGds=1 and E.ID <> :CurEqID into :LinkID, :EqID, :MainID, :mName, :mCode do begin AlreadyUse = 1; end end -- проверка на присутствие этого материала с признаком в текущем изделии if (:AlreadyUse = 0) then begin for select First 1 M.ID, L.ID, G.Name, G.Code from WorkMain M join WorkLink L on L.Owner = M.ID and L.MainGds=1 and L.GodsID=:GodsID join Goods G on G.ID=M.GodsID where M.ID=:CurMainID into :MainID, :LinkID1, :mName, :mCode do begin AlreadyUse = 1; end end -- проверка на присутствие этого эквивалента с признаком в текущем изделии if (:AlreadyUse = 0) then begin for select First 1 M.ID, L.ID, E.ID, G.Name, G.Code from WorkMain M join WorkLink L on L.Owner = M.ID join WorkHbLn E on E.RefID = L.ID and E.MainGds=1 and E.GodsID=:GodsID join Goods G on G.ID=M.GodsID where M.ID=:CurMainID into :MainID, :LinkID1, :EqID1, :mName, :mCode do begin AlreadyUse = 1; end end if (:Except = 1 and :AlreadyUse = 1) then begin if (:EqID1 is not Null) then begin exception Common_Exception 'В текущем изделии уже есть эквивалент с признаком "Формировать произв. заказ изделия (по материалам)" - ' || :mName || ' ' || :mCode; end else if (:LinkID1 is not Null) then begin exception Common_Exception 'В текущем изделии уже есть материал с признаком "Формировать произв. заказ изделия (по материалам)" - ' || :mName || ' ' || :mCode; end else if (:EqID is not Null) then begin exception Common_Exception 'Такой эквивалент уже используется с признаком "Формировать произв. заказ изделия (по материалам)" - ' || :mName || ' ' || :mCode; end else if (:LinkID is not Null) then begin exception Common_Exception 'Такой материал уже используется с признаком "Формировать произв. заказ изделия (по материалам)" - ' || :mName || ' ' || :mCode; end else begin exception Common_Exception 'Ошибка при проверке материала с признаком "Формировать произв. заказ изделия (по материалам)" - ' || :mName || ' ' || :mCode; end end suspend; end^ ALTER PROCEDURE WORKMODEL_DELETE ( ID INTEGER, PARENT INTEGER) AS declare variable DetailID integer; declare variable MdID integer; begin if (:Parent is Null or Parent = 0) then begin Delete from WorkModel where ID = :ID; end if (:Parent = 1) then begin for select ID, DetailID from WorkModelDtl where ModelID = :ID into :MdID, :DetailID do begin Delete from WorkModelDtl where ID = :MdID; if (not Exists(Select ID from WorkModelDtl where DetailID = :DetailID and ModelID <> :ID)) then Execute procedure WorkModel_Delete(:DetailID, 1); end Delete from WorkModel where ID = :ID; end end^ ALTER PROCEDURE WORKMODEL_GETPARENTS ( ID INTEGER) RETURNS ( CID INTEGER, PARENTID INTEGER) AS BEGIN WHILE (:ID <> 0 and ID is not Null) DO /* ищем до корня */ BEGIN SELECT O.ID, O.ParentID FROM WorkModel O WHERE O.ID = :ID INTO :CID, :ParentID; ID = :ParentID; /* код родителя для следующей выборки */ SUSPEND; END END^ ALTER PROCEDURE WORKMODEL_RECALCNW ( ID INTEGER) AS Declare Variable NWD double precision; Declare Variable GWD double precision; Declare Variable NWG double precision; Declare Variable GWG double precision; Declare Variable NW double precision; Declare Variable GW double precision; begin /* вес нетто / брутто по деталям */ Select Sum(D.NW*D.Quant), Sum((D.GW-D.NW)*D.Quant) from WorkModelDtl D where D.ModelID=:ID and D.ParentID is Null into :NWD, :GWD; /* вес нетто / брутто по материалам */ Select Sum(G.NW*G.Quant), Sum(G.GW*G.Quant) from WorkModelGds G where G.ModelID=:ID and G.ModelDtlID is Null into :NWG, :GWG; if (:NWD is Null) then NWD = 0.0; if (:GWD is Null) then GWD = 0.0; if (:NWG is Null) then NWG = 0.0; if (:GWG is Null) then GWG = 0.0; Nw = :NWD + :NWG; Gw = :Nw + :GWD + :GWG; Update WorkModel set Nw = :Nw, Gw = :Gw where ID = :ID and ((Nw <> :Nw or Gw <> :Gw)); suspend; end^ ALTER PROCEDURE WORKMODEL_SELECTMATERIAL ( ID INTEGER) RETURNS ( MODELGDSID INTEGER, DETAILQUANT DOUBLE PRECISION) AS Declare Variable ModelDtlID integer; Declare Variable DtlQuant double precision; begin /* собственные материалы по текущей модели */ for Select MG.ID, MG.ModelDtlID from WorkModelGds MG, WorkGoods WG where MG.ModelID = :ID and WG.ID = MG.WkGdsID order by WG.Name, WG.Code into :ModelGdsID, :ModelDtlID do begin DetailQuant = 1.0; while (:ModelDtlID is not Null) do begin Select Quant, ParentID from WorkModelDtl where ID = :ModelDtlID into :DtlQuant, :ModelDtlID; DetailQuant = :DetailQuant * :DtlQuant; end suspend; end end^ ALTER PROCEDURE WORKMODEL_USEDPARENTS ( ID INTEGER) RETURNS ( PARENTID INTEGER) AS Declare Variable ModelID integer; begin for Select Distinct ModelID from WorkModelDtl where DetailID = :ID and ModelID <> :ID into :ModelID do begin ParentID = :ModelID; Suspend; For Select ParentID from WorkModel_UsedParents(:ModelID) into :ParentID do Suspend; end end^ ALTER PROCEDURE WORKMODELGDS_CALCQUANT ( QUANTS DOUBLE PRECISION, CALCTYPE INTEGER, SIZEX DOUBLE PRECISION, SIZEY DOUBLE PRECISION, SIZEZ DOUBLE PRECISION, DELTAX DOUBLE PRECISION, DELTAY DOUBLE PRECISION, DELTAZ DOUBLE PRECISION, KX DOUBLE PRECISION, KY DOUBLE PRECISION, KZ DOUBLE PRECISION, KNORM DOUBLE PRECISION, RND DOUBLE PRECISION, QNT DOUBLE PRECISION) RETURNS ( QUANT DOUBLE PRECISION) AS declare variable x double precision; declare variable Y double precision; declare variable Z double precision; declare variable cValue double precision; begin Quant = :QuantS; if (:CalcType <> 0) then begin X = :SizeX + :DeltaX; Y = :SizeY + :DeltaY; Z = :SizeZ + :DeltaZ; cValue = 0.0; if (:CalcType = 1) then begin /* по длине */ cValue = :X * :KX + :Y * :KY + :Z * :KZ; cValue = :cValue / :kNorm; end if (:CalcType = 2) then begin /* по площади */ cValue = (:X * :Y * :KX)+ (:Y * :Z * :KY)+ (:X * :Z * :KZ); cValue = :cValue / :kNorm / :kNorm; end if (:CalcType = 3) then begin /* по объему */ cValue = (:X * :Y * :Z * :KX); cValue = :cValue / :kNorm / :kNorm / :kNorm; end Quant = :cValue * :Qnt; if (:Rnd <> 0.0 and :Quant <> 0.0) then Quant = Cast(:Quant / :Rnd as Integer) * :Rnd; end suspend; end^ ALTER PROCEDURE WORKNK_CALC ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS DECLARE VARIABLE BDATE DATE; DECLARE VARIABLE EDATE DATE; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE DGVWKID INTEGER; DECLARE VARIABLE GDDDTSUMMA DOUBLE PRECISION; DECLARE VARIABLE GDDZSUMMA DOUBLE PRECISION; DECLARE VARIABLE GDDDTSUM DOUBLE PRECISION; DECLARE VARIABLE GDDZSUM DOUBLE PRECISION; declare variable GddZNds double precision; DECLARE VARIABLE NKID INTEGER; DECLARE VARIABLE HBNKID INTEGER; DECLARE VARIABLE NKSUMMA DOUBLE PRECISION; DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE PROCNDS DOUBLE PRECISION; DECLARE VARIABLE PRICE DOUBLE PRECISION; declare variable NDS Double Precision; DECLARE VARIABLE PRICE1 DOUBLE PRECISION; declare variable NDS1 Double Precision; DECLARE VARIABLE ZMID INTEGER; DECLARE VARIABLE ZKID INTEGER; declare variable MGodsID integer; declare variable PSumMult Double Precision; declare variable PMult Double Precision; declare variable PPrice Double Precision; declare variable PQuant Double Precision; declare variable PGodsID integer; declare variable StartTime Date; declare variable kPrice double precision; declare variable kNds double precision; declare variable TPrice double precision; declare variable TNds double precision; declare variable kPSum double precision; declare variable kNSum double precision; begin for Select BDate, EDate from WorkCalcMst where ID=:ID into :bDate, :eDate do begin StartTime = Current_TimeStamp; Select count(*) from WorkCalcNk where MstID=:ID into :RecCnt; /* Удалаем предыдущий расчет накладных расходов */ RecTyp = 0; RecCur = 0; for Select ID from WorkCalcNk where MstID=:ID into :NkID do begin Delete from WorkNkDg where CalcNkID=:NkID; Delete from WorkZNk where CalcNkID=:NkID; RecCur = RecCur + 1; Suspend; end /* Calc Nk */ RecTyp = 1; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for select ID, NkID, Summa from WorkCalcNk where MstID=:ID into :NkID, :HbNkID, :NkSumma do begin /* материальные расходы */ select sum((G.Price-G.Nds)*G.Quant) from DgvWkG W, GddDt G, WorkCalcPodr P where W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and G.DgvKey=W.DgvDtID and P.CalcNkID=:NkID and P.StorID=W.Stor into :GddDtSumma; if(:GddDtSumma is null) then GddDtSumma = 0.0; /* материальные расходы по заказам */ select Sum(D.Quant*(K1.KPrice-K1.KNds)) from DgvKt KK, GddKt K, GddDt D, GddKt K1, WorkCalcPodr P where KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.Typ=4 and KK.ZID is not Null and K.DgvKey=KK.ID and D.ZKID=K.ID and K1.ID=D.GddKey and P.CalcNkID=:NkID and KK.StorID=P.StorID into :GddZSumma; if (:GddZSumma is null) then GddZSumma=0; /* себестоимость изделий по материалам */ for select W.ID, Sum((G.Price-G.Nds)*G.Quant) from DgvWkG W, GddDt G, WorkCalcPodr P where W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and P.CalcNkID=:NKID and W.STOR=P.StorID and G.DgvKey=W.DgvDtID Group By W.ID into :DgvWkID, :GddDtSum do begin /* накладные расходы по изделиям */ insert into WorkNkDg (ID, DgvID, NKID, SUMMA,CalcNkID) Values(Gen_ID(WorkNkDg_ID,1),:DgvWkID,:HbNkID, :NkSumma/(:GddDtSumma+:GddZSumma)*:GddDtSum,:NkID); end /* изделия в заказах */ for Select K.ID, K.ZMID, (Select Sum((K1.KPrice-K1.KNds)*D.Quant) from GddDt D, GddKt K1 where D.ZKID=K.ID and K1.ID=D.GddKey) From DgvKt KK, GddKt K, WorkCalcPodr P where KK.TYP=4 and KK.DAT_>=:BDATE and KK.DAT_<=:EDATE and KK.ZID is not Null and K.DgvKey=KK.ID and P.CalcNkID=:NkID and KK.StorID=P.StorID Into :ZKID, :ZMID, :GddZSum do begin /* накладные расходы в заказах */ Insert into WorkZNk (ID, ZKID, NKID, CalcNkID, ZMID, SUMMA) Values(Gen_ID(WorkZNk_ID,1),:ZKID,:HbNkID,:NkID,:ZMID, :NkSumma/(:GddDtSumma+:GddZSumma)*:GddZSum); end RecCur = RecCur + 1; Suspend; end /* Обновление себестоимости в изделиях */ select Count(*) from DgvWkG W where W.Inp_Date >= :bDate and W.Inp_Date <= :eDate into :RecCnt; RecTyp = 2; RecCur = 0; for select W.ID, W.DgvKtID, W.DgvDtID, W.Quant, W.MstGdsID from DgvWkG W where W.Inp_Date>=:bDate and W.Inp_Date<=:eDate into :DgvWkID, :DgvKtID, :DgvDtID, :Quant, :MGodsID do begin /* себестоимость по материалам */ Select Sum((G.Price-G.Nds)*G.Quant) from GddDt G where G.DgvKey=:DgvDtID into :GddDtSum; if(:GddDtSum is Null) then GddDtSum=0; /* сумма накладных расходов */ Select sum(N.Summa) from WorkNkDg N where N.DgvID=:DgvWkID into :NkSumma; if(:NkSumma is null) then NkSumma=0; /* сопутствующие продукты */ Select Sum(M2.Mult) from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0.0 and M2.Mult <> 0.0 into :PSumMult; if (:PSumMult is Null) then PSumMult = 0.0; Select S.NdsProc From DgvKt D, StorList S where D.ID=:DgvKtID and S.ID=D.Stor into :ProcNDS; if(:ProcNDS is Null) then ProcNDS = 0.0; Price = ((:GddDtSum+:NkSumma)/:Quant)*(1.0+1.0/100.0*:ProcNDS); Price = Price / (1.0+:PSumMult); Nds = (:Price/(100.0+:ProcNDS)*:ProcNDS); /* основное изделие */ Update GddKt set Price=:Price, Nds=:NDS, PriceNs = :Price-:NDS where DgvKey=:DgvKtID and GdsKey = :MGodsID and ((Price <> :Price) or (Nds<>:Nds)); /* сопутствующие продукты */ for select M2.GodsID, M2.Mult, M2.Quant from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0 into :PGodsID, :PMult, :PQuant do begin PPrice = Price / :PQuant * :PMult; Update GddKt set Price=:PPrice, Nds=(:PPrice/(100.0+:ProcNDS)*:ProcNDS), PriceNs=:PPrice-((:PPrice/(100.0+:ProcNDS)*:ProcNDS)) where DgvKey=:DgvKtID and GdsKey = :PGodsID; end Update DgvKt set summa=(:Price*:Quant) where ID=:DgvKtID; RecCur = RecCur + 1; Suspend; end /* по заказам */ RecTyp = 3; RecCur = 0; Select Count(*) From DgvKt DK, GddKt K where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID into :RecCnt; for Select K.ID, K.Source, S.NdsProc, K.DgvKey, K.Price, K.Nds, k.kPrice, K.kNds, (Select Sum(Nk.Summa) from WorkZNk Nk where Nk.ZkID = K.ID) From DgvKt DK, GddKt K, StorList S where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID and S.ID=DK.StorID into :ZkID, :Quant, :ProcNds, :DgvKtID, :Price1, :Nds1, :kPrice, :kNds, :NkSumma as Cursor GddKtCursor do begin Select Sum((D.Price-D.Nds)*D.Quant), Sum(D.Nds*D.Quant), Sum(D.Quant*K1.kPrice), Sum(D.Quant*K1.kNds) from GddDt D, GddKt K1 where D.ZKID=:ZkID and K1.ID=D.GddKey into :GddZSum, :GddZNds, :KPSum, :KNSum; if (:NkSumma is null) then NkSumma = 0.0; if (:GddZSum is null) then GddZSum = 0.0; if (:GddZNds is null) then GddZNds = 0.0; Price = 0.0; Nds = 0.0; kPrice = 0.0; kNds = 0.0; TPrice = 0.0; TNds = 0.0; if (:Quant <> 0.0) then begin /* цена без НДС */ Price = (:GddZSum + :NkSumma)/:Quant; /* НДС */ Nds = :Price / 100.0 * :ProcNds; TPrice = (:GddZSum + :GddZNds) / :Quant; TNds = :GddZNds / :Quant; Price = :Price + :Nds; kPrice = :kPSum / :Quant; kNds = :kNSum / :Quant; end Update GddKt Set Price=:Price, Nds=:Nds, kPrice = :kPrice, kNds=:kNds, TPrice = :TPrice, TNds = :TNds where Current Of GddKtCursor; RecCur = RecCur + 1; Suspend; end RecTyp=4; RecCur = 0; Select Count(*) from WorkCalcMst M, DgvKt KK where M.ID=:ID and KK.DAT_ >= M.bDate and KK.DAT_ <= M.eDate and KK.Typ=4 and KK.ZID is not Null and KK.StorID in (Select P.StorID from WorkCalcNk N, WorkCalcPodr P where N.MstID=M.ID and P.CalcNkID=N.ID) into :RecCnt; for Select KK.ID from WorkCalcMst M, DgvKt KK where M.ID=:ID and KK.DAT_ >= M.bDate and KK.DAT_ <= M.eDate and KK.Typ=4 and KK.ZID is not Null and KK.StorID in (Select P.StorID from WorkCalcNk N, WorkCalcPodr P where N.MstID=M.ID and P.CalcNkID=N.ID) into :DgvKtID as cursor DgvKtCursor do begin Update DgvKt Set Summa=Summa where Current Of DgvKtCursor; RecCur = RecCur+1; Suspend; end Execute Procedure WorkNk_GenAccnRec :ID; end RecTyp = 5; Suspend; end^ ALTER PROCEDURE WORKNK_CALC_GDD_SUM ( ZKID INTEGER) RETURNS ( SUM1 DOUBLE PRECISION, SUM2 DOUBLE PRECISION, SUM3 DOUBLE PRECISION) AS begin select CoalEsce(Sum((D.Price-D.Nds)*D.Quant), 0.0) from GddDt D where D.ZkID=ZkID into :sum1; select CoalEsce(Sum(D.Quant*K1.kPrice), 0.0), CoalEsce(Sum(D.Quant*K1.kNds), 0.0) from GddDt D join GddKt K1 on K1.ID=D.GddKey where D.ZkID=ZkID into :sum2, :Sum3; suspend; end^ ALTER PROCEDURE WORKNK_CALC_KNK ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS DECLARE VARIABLE BDATE DATE; DECLARE VARIABLE EDATE DATE; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE DGVWKID INTEGER; DECLARE VARIABLE NKID INTEGER; DECLARE VARIABLE HBNKID INTEGER; /* распределяемая сумма по текущему виду накл. расходов */ DECLARE VARIABLE NKSUMMA DOUBLE PRECISION; DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE PROCNDS DOUBLE PRECISION; DECLARE VARIABLE PRICE DOUBLE PRECISION; declare variable NDS Double Precision; DECLARE VARIABLE ZMID INTEGER; DECLARE VARIABLE ZKID INTEGER; declare variable MGodsID integer; declare variable PSumMult Double Precision; declare variable PMult Double Precision; declare variable PPrice Double Precision; declare variable PQuant Double Precision; declare variable PGodsID integer; declare variable StartTime Date; /* сумма весовых коэффициентов по списанию изделий в производстве */ Declare variable KnkSumW double precision; /* сумма весовых коэффициентов по выпущенным в заказах изделиям */ Declare Variable KnkSumZ double precision; /* сумма весовых коэффициентов по накладной - списание изделий в производстве */ Declare variable KnkInpW double precision; /* сумма весовых коэффициентов по накладной - выпущенные в заказах изделия */ Declare Variable KnkInpZ double precision; /* материалы и компл. по накладной - списание изделий в производстве */ Declare variable GddSumW double precision; /* материалы и компл. по накладной - выпущенные в заказах изделия */ Declare Variable GddSumZ double precision; Declare Variable GddNdsZ double precision; Declare Variable KPSum double precision; Declare Variable KNSum double precision; begin for Select BDate, EDate from WorkCalcMst where ID=:ID into :bDate, :eDate do begin StartTime = Current_TimeStamp; /* Удалаем предыдущий расчет накладных расходов */ RecTyp = 0; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for Select ID from WorkCalcNk where MstID=:ID into :NkID do begin Delete from WorkNkDg where CalcNkID=:NkID; Delete from WorkZNk where CalcNkID=:NkID; RecCur = :RecCur + 1; Suspend; end /* Calc Nk */ RecTyp = 1; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for select ID, NkID, Summa from WorkCalcNk where MstID=:ID into :NkID, :HbNkID, :NkSumma do begin /* сумма коэффициентов по списанию изделий */ select sum(M.KNK * W.Quant) from DgvWkG W, WorkCalcPodr P, WorkMain M where P.CalcNkID=:NkID and W.Stor=P.StorID and W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and M.GodsID=W.MstGdsID into :KnkSumW; if(:KnkSumW is null) then KnkSumW = 0.0; /* сумма коэффициентов по изделиям в заказах */ select Sum(M.Knk * K.Source) from WorkCalcPodr P, DgvKt KK, GddKt K, WorkMain M where P.CalcNkID=:NkID and KK.StorID=P.StorID and KK.ZID is not Null and KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.TYP=4 and K.DgvKey=KK.ID and M.GodsID=K.GdsKey into :KnkSumZ; if (:KnkSumZ is null) then KnkSumZ = 0.0; /* распределение по приходным накладным - списание изделий */ for select W.ID, Sum(M.Knk*W.Quant) from WorkCalcPodr P, DgvWkG W, WorkMain M where P.CalcNkID=:NKID and W.STOR=P.StorID and W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and M.GodsID=W.MstGdsID Group By W.ID into :DgvWkID, :KnkInpW do begin if (:KnkInpW is Null) then KnkInpW = 0.0; /* накладные расходы по изделиям */ insert into WorkNkDg (ID, DgvID, NKID, SUMMA,CalcNkID) Values(Gen_ID(WorkNkDg_ID,1),:DgvWkID,:HbNkID, :NkSumma/(:KnkSumW+:KnkSumZ)*:KnkInpW,:NkID); end /* изделия в заказах */ for Select K.ID, K.ZMID, Sum(M.Knk * K.Source) From WorkCalcPodr P, DgvKt DK, GddKt K, WorkMain M where P.CalcNkID=:NkID and DK.StorID=P.StorID and DK.ZID is not null and DK.DAT_>= :BDATE and DK.DAT_<= :EDATE and DK.TYP=4 and K.DgvKey=DK.ID and M.GodsID=K.GdsKey Group By K.ID, K.ZMID Into :ZKID, :ZMID, :KnkInpZ do begin if (:KnkInpZ is Null) then KnkInpZ = 0.0; /* накладные расходы в заказах */ Insert into WorkZNk (ID, ZKID, NKID, CalcNkID, ZMID, SUMMA) Values(Gen_ID(WorkZNk_ID,1),:ZKID,:HbNkID,:NkID,:ZMID, :NkSumma/(:KnkSumW+:KnkSumZ)*:KnkInpZ); end RecCur = :RecCur + 1; Suspend; end /* Обновление себестоимости в изделиях */ RecTyp = 2; RecCur = 0; select Count(*) from DgvWkG W where Inp_Date >= :bDate and Inp_Date <= :eDate into :RecCnt; for select W.ID, W.DgvKtID, W.DgvDtID, W.Quant, W.MstGdsID from DgvWkG W where W.Inp_Date>=:bDate and W.Inp_Date<=:eDate into :DgvWkID, :DgvKtID, :DgvDtID, :Quant, :MGodsID do begin /* материалы и комплектующие */ KnkInpW = 0.0; Select Sum((D.Price-D.Nds) * D.Quant) from GddDt D where D.DgvKey = :DgvDtID into :GddSumW; if(:GddSumW is Null) then GddSumW = 0.0; /* сумма накладных расходов */ Select sum(N.Summa) from WorkNkDg N where N.DgvID=:DgvWkID into :NkSumma; if(:NkSumma is null) then NkSumma = 0.0; /* сопутствующие продукты */ Select Sum(M2.Mult * M2.Knk) from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0.0 and M2.Mult <> 0 into :PSumMult; if (:PSumMult is Null) then PSumMult = 0.0; Select S.NdsProc From DgvKt D, StorList S where D.ID=:DgvKtID and S.ID=D.Stor into :ProcNDS; if(:ProcNDS is Null) then ProcNDS=0.0; Price = ((:GddSumW+:NkSumma)/:Quant)*(1.0+1.0/100.0*:ProcNDS); Price = Price / (1.0+:PSumMult); Nds = (:Price/(100.0+:ProcNDS)*:ProcNDS); /* основное изделие */ Update GddKt set Price=:Price, Nds=:NDS, PriceNs = :Price-:NDS where DgvKey=:DgvKtID and GdsKey = :MGodsID and ((Price <> :Price) or (Nds<>:Nds)); /* сопутствующие продукты */ for select M2.GodsID, M2.Mult, M2.Quant from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0 into :PGodsID, :PMult, :PQuant do begin PPrice = Price / :PQuant * :PMult; Update GddKt set Price=:PPrice,Nds=(:PPrice/(100.0+:ProcNDS)*:ProcNDS), PriceNs=:PPrice-((:PPrice/(100.0+:ProcNDS)*:ProcNDS)) where DgvKey=:DgvKtID and GdsKey = :PGodsID; end Update DgvKt set summa=(:Price*:Quant) where ID=:DgvKtID; RecCur = RecCur + 1; Suspend; end /* по заказам */ RecTyp=3; RecCur=0; Select Count(*) From DgvKt DK, GddKt K where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID into :RecCnt; for Select K.ID, K.Source, S.NdsProc, K.DgvKey, Sum((D.Price-D.Nds)*D.Quant), Sum(D.Nds*D.Quant), Sum(D.Quant*K1.kPrice), Sum(D.Quant*K1.kNds) From DgvKt DK join GddKt K on K.DgvKey=DK.ID join StorList S on S.ID=DK.StorID left join GddDt D on D.ZKID=K.ID left join GddKt K1 on K1.ID=D.GddKey where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null Group By K.ID, K.Source, S.NdsProc, K.DgvKey Into :ZKID, :Quant, :ProcNds, :DgvKtID, :GddSumZ, :GddNdsZ, :KPSum, :KNSum do begin if (:GddSumZ is Null) then GddSumZ = 0.0; if (:GddNdsZ is Null) then GddNdsZ = 0.0; if (:KPSum is Null) then KPSum = 0.0; if (:KNSum is Null) then KNSum = 0.0; /* накладные расходы по изделию */ Select Sum(Summa) from WorkZNk where ZKID=:ZKID into :NkSumma; if (:NkSumma is Null) then NkSumma = 0.0; if (:Quant = 0.0) then Quant = 1.0; Price = (:GddSumZ + :NkSumma) / :Quant; update GddKt set Price = :Price + :Price/100*:ProcNds, Nds = :Price/100*:ProcNds, kPrice = :kPSum / :Quant, kNds = :kNSum / :Quant, TPrice = (:GddSumZ + :GddNdsZ) / :Quant, TNds = :GddNdsZ / :Quant where ID=:ZKID; RecCur = RecCur + 1; Suspend; end RecTyp=4; RecCur = 0; Select Count(*) From DgvKt KK where Typ=4 and DAT_ >= :bDate and DAT_ <= :eDate and ZID is not Null into :RecCnt; for Select KK.ID from DgvKt KK where KK.DAT_ >= :bDate and KK.DAT_ <= :eDate and KK.Typ=4 and KK.ZID is not Null into :DgvKtID do begin Update DgvKt Set Summa=Summa where ID=:DgvKtID; RecCur = RecCur+1; Suspend; end Execute Procedure WorkNk_GenAccnRec :ID; end RecTyp = 5; suspend; end^ ALTER PROCEDURE WORKNK_CALC_NEW ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS DECLARE VARIABLE BDATE DATE; DECLARE VARIABLE EDATE DATE; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE DGVWKID INTEGER; DECLARE VARIABLE GDDDTSUMMA DOUBLE PRECISION; DECLARE VARIABLE GDDZSUMMA DOUBLE PRECISION; DECLARE VARIABLE GDDDTSUM DOUBLE PRECISION; DECLARE VARIABLE GDDZSUM DOUBLE PRECISION; DECLARE VARIABLE NKID INTEGER; DECLARE VARIABLE HBNKID INTEGER; DECLARE VARIABLE NKSUMMA DOUBLE PRECISION; DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE PROCNDS DOUBLE PRECISION; DECLARE VARIABLE PRICE DOUBLE PRECISION; declare variable NDS Double Precision; DECLARE VARIABLE PRICE1 DOUBLE PRECISION; declare variable NDS1 Double Precision; DECLARE VARIABLE ZMID INTEGER; DECLARE VARIABLE ZKID INTEGER; declare variable MGodsID integer; declare variable PSumMult Double Precision; declare variable PMult Double Precision; declare variable PPrice Double Precision; declare variable PQuant Double Precision; declare variable PGodsID integer; declare variable StartTime Date; declare variable kPrice double precision; declare variable kNds double precision; declare variable kPSum double precision; declare variable kNSum double precision; begin for Select BDate, EDate from WorkCalcMst where ID=:ID into :bDate, :eDate do begin StartTime = Current_TimeStamp; Select count(*) from WorkCalcNk where MstID=:ID into :RecCnt; /* Удалаем предыдущий расчет накладных расходов */ RecTyp = 0; RecCur = 0; for Select ID from WorkCalcNk where MstID=:ID into :NkID do begin Delete from WorkNkDg where CalcNkID=:NkID; Delete from WorkZNk where CalcNkID=:NkID; RecCur = RecCur + 1; Suspend; end /* Calc Nk */ RecTyp = 1; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for select ID, NkID, Summa from WorkCalcNk where MstID=:ID into :NkID, :HbNkID, :NkSumma do begin /* материальные расходы */ select sum((G.Price-G.Nds)*G.Quant) from DgvWkG W, GddDt G, WorkCalcPodr P where W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and G.DgvKey=W.DgvDtID and P.CalcNkID=:NkID and P.StorID=W.Stor into :GddDtSumma; if(:GddDtSumma is null) then GddDtSumma = 0.0; /* материальные расходы по заказам */ select Sum(D.Quant*(K1.KPrice-K1.KNds)) from DgvKt KK left join WorkCalcPodr P on P.CalcNkID=:NkID and P.StorID=KK.StorID left join GddKt K on K.DgvKey=KK.ID left join GddDt D on D.ZKID=K.ID left join GddKt K1 on K1.ID=D.GddKey where KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.Typ=4 and KK.ZID is not Null and P.ID is not null and K.ID is not null and D.ID is not null and K1.ID is not Null into :GddZSumma; if (:GddZSumma is null) then GddZSumma=0; /* себестоимость изделий по материалам */ for select W.ID, Sum((G.Price-G.Nds)*G.Quant) from DgvWkG W, GddDt G, WorkCalcPodr P where W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and P.CalcNkID=:NKID and W.STOR=P.StorID and G.DgvKey=W.DgvDtID Group By W.ID into :DgvWkID, :GddDtSum do begin -- накладные расходы по изделиям insert into WorkNkDg (ID, DgvID, NKID, SUMMA,CalcNkID) Values(Gen_ID(WorkNkDg_ID,1),:DgvWkID,:HbNkID, :NkSumma/(:GddDtSumma+:GddZSumma)*:GddDtSum,:NkID); end /* изделия в заказах */ for Select K.ID, K.ZMID, (Select Sum((K1.KPrice-K1.KNds)*D.Quant) from GddDt D left join GddKt K1 on K1.ID=D.GddKey where D.ZKID=K.ID and K.ID is not null) From DgvKt KK, GddKt K, WorkCalcPodr P where KK.TYP=4 and KK.DAT_>=:BDATE and KK.DAT_<=:EDATE and KK.ZID is not Null and K.DgvKey=KK.ID and P.CalcNkID=:NkID and KK.StorID=P.StorID Into :ZKID, :ZMID, :GddZSum do begin -- накладные расходы в заказах Insert into WorkZNk (ID, ZKID, NKID, CalcNkID, ZMID, SUMMA) Values(Gen_ID(WorkZNk_ID,1),:ZKID,:HbNkID,:NkID,:ZMID, :NkSumma/(:GddDtSumma+:GddZSumma)*:GddZSum); end RecCur = RecCur + 1; Suspend; end /* Обновление себестоимости в изделиях */ select Count(*) from DgvWkG W where W.Inp_Date >= :bDate and W.Inp_Date <= :eDate into :RecCnt; RecTyp = 2; RecCur = 0; for select W.ID, W.DgvKtID, W.DgvDtID, W.Quant, W.MstGdsID from DgvWkG W where W.Inp_Date>=:bDate and W.Inp_Date<=:eDate into :DgvWkID, :DgvKtID, :DgvDtID, :Quant, :MGodsID do begin /* себестоимость по материалам */ Select Sum((G.Price-G.Nds)*G.Quant) from GddDt G where G.DgvKey=:DgvDtID into :GddDtSum; if(:GddDtSum is Null) then GddDtSum=0; /* сумма накладных расходов */ Select sum(N.Summa) from WorkNkDg N where N.DgvID=:DgvWkID into :NkSumma; if(:NkSumma is null) then NkSumma=0; /* сопутствующие продукты */ Select Sum(M2.Mult) from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0.0 and M2.Mult <> 0.0 into :PSumMult; if (:PSumMult is Null) then PSumMult = 0.0; Select S.NdsProc From DgvKt D, StorList S where D.ID=:DgvKtID and S.ID=D.Stor into :ProcNDS; if(:ProcNDS is Null) then ProcNDS = 0.0; Price = ((:GddDtSum+:NkSumma)/:Quant)*(1.0+1.0/100.0*:ProcNDS); Price = Price / (1.0+:PSumMult); Nds = (:Price/(100.0+:ProcNDS)*:ProcNDS); /* основное изделие */ Update GddKt set Price=:Price, Nds=:NDS, PriceNs = :Price-:NDS where DgvKey=:DgvKtID and GdsKey = :MGodsID and ((Price <> :Price) or (Nds<>:Nds)); /* сопутствующие продукты */ for select M2.GodsID, M2.Mult, M2.Quant from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0 into :PGodsID, :PMult, :PQuant do begin PPrice = Price / :PQuant * :PMult; Update GddKt set Price=:PPrice, Nds=(:PPrice/(100.0+:ProcNDS)*:ProcNDS), PriceNs=:PPrice-((:PPrice/(100.0+:ProcNDS)*:ProcNDS)) where DgvKey=:DgvKtID and GdsKey = :PGodsID; end Update DgvKt set summa=(:Price*:Quant) where ID=:DgvKtID; RecCur = RecCur + 1; Suspend; end /* по заказам */ RecTyp = 3; RecCur = 0; Select Count(*) From DgvKt DK, GddKt K where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID into :RecCnt; for Select K.ID, K.Source, S.NdsProc, K.DgvKey, K.Price, K.Nds, k.kPrice, K.kNds, (Select Sum(Nk.Summa) from WorkZNk Nk where Nk.ZkID = K.ID) From DgvKt DK, GddKt K, StorList S where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID and S.ID=DK.StorID+0 into :ZkID, :Quant, :ProcNds, :DgvKtID, :Price1, :Nds1, :kPrice, :kNds, :NkSumma as Cursor GddKtCursor do begin Select Sum((D.Price-D.Nds)*D.Quant), Sum(D.Quant*K1.kPrice), Sum(D.Quant*K1.kNds) from GddDt D left join GddKt K1 on K1.ID=D.GddKey where D.ZKID=:ZkID into :GddZSum, :KPSum, :KNSum; if (:NkSumma is null) then NkSumma=0.0; if (:GddZSum is null) then GddZSum=0.0; Price = 0.0; Nds = 0.0; kPrice = 0.0; kNds = 0.0; if (:Quant <> 0.0) then begin /* цена без НДС */ Price = (:GddZSum+:NkSumma)/:Quant; /* НДС */ Nds = :Price / 100.0 * :ProcNds; Price = :Price + :Nds; kPrice = :kPSum / :Quant; kNds = :kNSum / :Quant; end Update GddKt Set Price=:Price, Nds=:Nds, kPrice = :kPrice, kNds=:kNds where Current Of GddKtCursor; /*ID=:ZkID and (:Price<>:Price1 or :Nds <> :Nds1 or kPrice<>:kPrice or kNds<>:kNds); */ RecCur = RecCur + 1; Suspend; end RecTyp=4; RecCur = 0; Select Count(*) from WorkCalcMst M, DgvKt KK where M.ID=:ID and KK.DAT_ >= M.bDate and KK.DAT_ <= M.eDate and KK.Typ=4 and KK.ZID is not Null and KK.StorID in (Select P.StorID from WorkCalcNk N, WorkCalcPodr P where N.MstID=M.ID and P.CalcNkID=N.ID) into :RecCnt; for Select KK.ID from WorkCalcMst M, DgvKt KK where M.ID=:ID and KK.DAT_ >= M.bDate and KK.DAT_ <= M.eDate and KK.Typ=4 and KK.ZID is not Null and KK.StorID in (Select P.StorID from WorkCalcNk N, WorkCalcPodr P where N.MstID=M.ID and P.CalcNkID=N.ID) into :DgvKtID as cursor DgvKtCursor do begin Update DgvKt Set Summa=Summa where Current Of DgvKtCursor; RecCur = RecCur+1; Suspend; end Execute Procedure WorkNk_GenAccnRec :ID; end RecTyp = 5; Suspend; end^ ALTER PROCEDURE WORKNK_CALC1 ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS DECLARE VARIABLE BDATE DATE; DECLARE VARIABLE EDATE DATE; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE DGVWKID INTEGER; DECLARE VARIABLE GDDDTSUMMA DOUBLE PRECISION; DECLARE VARIABLE GDDZSUMMA DOUBLE PRECISION; DECLARE VARIABLE GDDDTSUM DOUBLE PRECISION; DECLARE VARIABLE GDDZSUM DOUBLE PRECISION; DECLARE VARIABLE NKID INTEGER; DECLARE VARIABLE HBNKID INTEGER; DECLARE VARIABLE NKSUMMA DOUBLE PRECISION; DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE PROCNDS DOUBLE PRECISION; DECLARE VARIABLE PRICE DOUBLE PRECISION; declare variable NDS Double Precision; DECLARE VARIABLE PRICE1 DOUBLE PRECISION; declare variable NDS1 Double Precision; DECLARE VARIABLE ZMID INTEGER; DECLARE VARIABLE ZKID INTEGER; declare variable MGodsID integer; declare variable PSumMult Double Precision; declare variable PMult Double Precision; declare variable PPrice Double Precision; declare variable PQuant Double Precision; declare variable PGodsID integer; declare variable StartTime Date; declare variable kPrice double precision; declare variable kNds double precision; declare variable kPSum double precision; declare variable kNSum double precision; declare variable CurOrgnID integer; -- изделия с параметрами (признак) declare variable HasNkPrm Integer; begin Select BDate, EDate, OurOrgnID from WorkCalcMst where ID=:ID into :bDate, :eDate, :CurOrgnID; if (:CurOrgnID is Null) then exit; StartTime = Current_TimeStamp; Select count(*) from WorkCalcNk where MstID=:ID into :RecCnt; /* Удалаем предыдущий расчет накладных расходов */ RecTyp = 0; RecCur = 0; for Select ID from WorkCalcNk where MstID=:ID into :NkID do begin Delete from WorkNkDg where CalcNkID=:NkID; Delete from WorkZNk where CalcNkID=:NkID; RecCur = RecCur + 1; Suspend; end /* Calc Nk */ RecTyp = 1; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for select ID, NkID, Summa from WorkCalcNk where MstID=:ID into :NkID, :HbNkID, :NkSumma do begin HasNkPrm = Null; select first 1 ID from workcalcnkprm where CalcNkID=:NkID into :HasNkPrm; -- материальные расходы - оприходование изделий if (:HasNkPrm is Null) then begin -- без параметров select sum((D.Price-D.Nds)*D.Quant) from DgvWkG W join GddDt D on D.DgvKey=W.DgvDtID join WorkCalcPodr P on P.CalcNkID=:NkID and P.StorID=W.Stor where W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE into :GddDtSumma; end else begin -- с параметрами select sum((D.Price-D.Nds)*D.Quant) from DgvWkG W join GddDt D on D.DgvKey=W.DgvDtID join WorkCalcPodr P on P.CalcNkID=:NkID and P.StorID=W.Stor join GddKt k on k.ID=D.GddKey join Goods g on G.ID=k.GdsKey join WorkCalcNkPrm np on np.CalcNkID=:NkID join GdsParamGdsRef r on r.goodsid=g.ID and r.fixval=np.ParamValID where W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE into :GddDtSumma; end if(:GddDtSumma is null) then GddDtSumma = 0.0; -- материальные расходы - по заказам if (:HasNkPrm is Null) then begin select Sum(D.Quant*(K1.KPrice-K1.KNds)) from DgvKt KK join GddKt K on K.DgvKey=KK.ID join GddDt D on D.ZKID=K.ID join GddKt K1 on K1.ID=D.GddKey join WorkCalcPodr P on P.CalcNkID=:NkID and KK.StorID=P.StorID join WorkZakaz Z on Z.ID=KK.ZID and (Z.NkNoCalc <> 1) where KK.DAT_>=:BDATE and KK.DAT_<=:EDATE and KK.Typ=4 and KK.ZID is not Null into :GddZSumma; end else begin select Sum(D.Quant*(K1.KPrice-K1.KNds)) from DgvKt KK join GddKt K on K.DgvKey=KK.ID join GddDt D on D.ZKID=K.ID join GddKt K1 on K1.ID=D.GddKey join WorkCalcPodr P on P.CalcNkID=:NkID and KK.StorID=P.StorID join WorkZakaz Z on Z.ID=KK.ZID and (Z.NkNoCalc <> 1) join Goods g on G.ID=k.GdsKey join WorkCalcNkPrm np on np.CalcNkID=:NkID join GdsParamGdsRef r on r.goodsid=g.ID and r.fixval=np.ParamValID where KK.DAT_>=:BDATE and KK.DAT_<=:EDATE and KK.Typ=4 and KK.ZID is not Null into :GddZSumma; end if (:GddZSumma is null) then GddZSumma = 0.0; -- накладные расходы: - оприходование изделий if (:HasNkPrm is Null) then begin for select W.ID, Sum((D.Price-D.Nds)*D.Quant) from DgvWkG W join GddDt D on D.DgvKey=W.DgvDtID join WorkCalcPodr P on P.CalcNkID=:NKID and W.STOR=P.StorID where W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE Group By W.ID into :DgvWkID, :GddDtSum do begin -- добавляем накладные расходы по изделиям insert into WorkNkDg (ID, DgvID, NKID, SUMMA, CalcNkID) Values(Gen_ID(WorkNkDg_ID, 1), :DgvWkID, :HbNkID, :NkSumma / (:GddDtSumma + :GddZSumma) * :GddDtSum, :NkID); end end else begin for select W.ID, Sum((D.Price-D.Nds)*D.Quant) from DgvWkG W join GddDt D on D.DgvKey=W.DgvDtID join WorkCalcPodr P on P.CalcNkID=:NKID and W.STOR=P.StorID join GddKt k on k.ID=D.GddKey join Goods g on G.ID=k.GdsKey join WorkCalcNkPrm np on np.CalcNkID=:NkID join GdsParamGdsRef r on r.goodsid=g.ID and r.fixval=np.ParamValID where W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE Group By W.ID into :DgvWkID, :GddDtSum do begin -- добавляем накладные расходы по изделиям insert into WorkNkDg (ID, DgvID, NKID, SUMMA, CalcNkID) Values(Gen_ID(WorkNkDg_ID, 1), :DgvWkID, :HbNkID, :NkSumma / (:GddDtSumma + :GddZSumma) * :GddDtSum, :NkID); end end -- накладные расходы: изделия в заказах if (:HasNkPrm is Null) then begin for Select K.ID, K.ZMID, (Select Sum((K1.KPrice-K1.KNds)*D.Quant) from GddDt D, GddKt K1 where D.ZKID=K.ID and K1.ID=D.GddKey) From DgvKt KK join GddKt K on K.DgvKey=KK.ID join WorkCalcPodr P on P.CalcNkID=:NkID and KK.StorID=P.StorID join WorkZakaz Z on Z.ID = KK.ZID and (Z.NkNoCalc <> 1) where KK.TYP=4 and KK.DAT_>=:BDATE and KK.DAT_<=:EDATE and KK.ZID is not Null Into :ZKID, :ZMID, :GddZSum do begin -- добавляем накладные расходы в заказах Insert into WorkZNk (ID, ZKID, NKID, CalcNkID, ZMID, SUMMA) Values(Gen_ID(WorkZNk_ID, 1),:ZKID,:HbNkID,:NkID,:ZMID, :NkSumma/(:GddDtSumma+:GddZSumma)*:GddZSum); end RecCur = RecCur + 1; Suspend; end else begin for Select K.ID, K.ZMID, (Select Sum((K1.KPrice-K1.KNds)*D.Quant) from GddDt D, GddKt K1 where D.ZKID=K.ID and K1.ID=D.GddKey) From DgvKt KK join GddKt K on K.DgvKey=KK.ID join WorkCalcPodr P on P.CalcNkID=:NkID and KK.StorID=P.StorID join WorkZakaz Z on Z.ID = KK.ZID and (Z.NkNoCalc <> 1) join Goods g on G.ID=k.GdsKey join WorkCalcNkPrm np on np.CalcNkID=:NkID join GdsParamGdsRef r on r.goodsid=g.ID and r.fixval=np.ParamValID where KK.TYP=4 and KK.DAT_>=:BDATE and KK.DAT_<=:EDATE and KK.ZID is not Null Into :ZKID, :ZMID, :GddZSum do begin -- добавляем накладные расходы в заказах Insert into WorkZNk (ID, ZKID, NKID, CalcNkID, ZMID, SUMMA) Values(Gen_ID(WorkZNk_ID, 1),:ZKID,:HbNkID,:NkID,:ZMID, :NkSumma/(:GddDtSumma+:GddZSumma)*:GddZSum); end RecCur = RecCur + 1; Suspend; end end /* Обновление себестоимости в изделиях */ select Count(*) from DgvWkG W where W.Inp_Date >= :bDate and W.Inp_Date <= :eDate into :RecCnt; RecTyp = 2; RecCur = 0; for select W.ID, W.DgvKtID, W.DgvDtID, W.Quant, W.MstGdsID from DgvWkG W, StorList S where W.Inp_Date>=:bDate and W.Inp_Date<=:eDate and S.ID = W.Stor and S.OurOrgnID = :CurOrgnID into :DgvWkID, :DgvKtID, :DgvDtID, :Quant, :MGodsID do begin /* себестоимость по материалам */ Select Sum((G.Price-G.Nds)*G.Quant) from GddDt G where G.DgvKey=:DgvDtID into :GddDtSum; if(:GddDtSum is Null) then GddDtSum=0; /* сумма накладных расходов */ Select sum(N.Summa) from WorkNkDg N where N.DgvID=:DgvWkID into :NkSumma; if(:NkSumma is null) then NkSumma=0; /* сопутствующие продукты */ Select Sum(M2.Mult) from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0.0 and M2.Mult <> 0.0 into :PSumMult; if (:PSumMult is Null) then PSumMult = 0.0; Select S.NdsProc From DgvKt D, StorList S where D.ID=:DgvKtID and S.ID=D.Stor into :ProcNDS; if(:ProcNDS is Null) then ProcNDS = 0.0; Price = ((:GddDtSum+:NkSumma)/:Quant)*(1.0+1.0/100.0*:ProcNDS); Price = Price / (1.0+:PSumMult); Nds = (:Price/(100.0+:ProcNDS)*:ProcNDS); /* основное изделие */ Update GddKt set Price=:Price, Nds=:NDS, PriceNs = :Price-:NDS where DgvKey=:DgvKtID and GdsKey = :MGodsID and ((Price <> :Price) or (Nds<>:Nds)); /* сопутствующие продукты */ for select M2.GodsID, M2.Mult, M2.Quant from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0 into :PGodsID, :PMult, :PQuant do begin PPrice = Price / :PQuant * :PMult; Update GddKt set Price=:PPrice, Nds=(:PPrice/(100.0+:ProcNDS)*:ProcNDS), PriceNs=:PPrice-((:PPrice/(100.0+:ProcNDS)*:ProcNDS)) where DgvKey=:DgvKtID and GdsKey = :PGodsID; end Update DgvKt set summa=(:Price*:Quant) where ID=:DgvKtID; RecCur = RecCur + 1; Suspend; end -- обновление себестоимости изделий в накладных по заказам -- с учетом накладных расходов RecTyp = 3; RecCur = 0; Select Count(*) From DgvKt DK, GddKt K where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID into :RecCnt; for Select K.ID, K.Source, S.NdsProc, K.DgvKey, K.Price, K.Nds, k.kPrice, K.kNds, (Select Sum(Nk.Summa) from WorkZNk Nk where Nk.ZkID = K.ID) From DgvKt DK, GddKt K, StorList S where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID and S.ID=DK.StorID+0 into :ZkID, :Quant, :ProcNds, :DgvKtID, :Price1, :Nds1, :kPrice, :kNds, :NkSumma as Cursor GddKtCursor do begin Select Sum((D.Price-D.Nds)*D.Quant), Sum(D.Quant*K1.kPrice), Sum(D.Quant*K1.kNds) from GddDt D left join GddKt K1 on K1.ID=D.GddKey where D.ZKID=:ZkID into :GddZSum, :KPSum, :KNSum; if (:NkSumma is null) then NkSumma=0.0; if (:GddZSum is null) then GddZSum=0.0; Price = 0.0; Nds = 0.0; kPrice = 0.0; kNds = 0.0; if (:Quant <> 0.0) then begin /* цена без НДС */ Price = (:GddZSum+:NkSumma)/:Quant; /* НДС */ Nds = :Price / 100.0 * :ProcNds; Price = :Price + :Nds; kPrice = :kPSum / :Quant; kNds = :kNSum / :Quant; end Update GddKt Set Price=:Price, Nds=:Nds, kPrice = :kPrice, kNds=:kNds where Current Of GddKtCursor; /*ID=:ZkID and (:Price<>:Price1 or :Nds <> :Nds1 or kPrice<>:kPrice or kNds<>:kNds); */ RecCur = RecCur + 1; Suspend; end RecTyp=4; RecCur = 0; Select Count(*) from WorkCalcMst M, DgvKt KK where M.ID=:ID and KK.DAT_ >= M.bDate and KK.DAT_ <= M.eDate and KK.Typ=4 and KK.ZID is not Null and KK.StorID in (Select P.StorID from WorkCalcNk N, WorkCalcPodr P where N.MstID=M.ID and P.CalcNkID=N.ID) into :RecCnt; for Select KK.ID from WorkCalcMst M, DgvKt KK where M.ID=:ID and KK.DAT_ >= M.bDate and KK.DAT_ <= M.eDate and KK.Typ=4 and KK.ZID is not Null and KK.StorID in (Select P.StorID from WorkCalcNk N, WorkCalcPodr P where N.MstID=M.ID and P.CalcNkID=N.ID) into :DgvKtID as cursor DgvKtCursor do begin Update DgvKt Set Summa=Summa where Current Of DgvKtCursor; RecCur = RecCur+1; Suspend; end Execute Procedure WorkNk_GenAccnRec :ID; RecTyp = 5; Suspend; end^ ALTER PROCEDURE WORKNK_CALC1_KNK ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS DECLARE VARIABLE BDATE DATE; DECLARE VARIABLE EDATE DATE; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE DGVWKID INTEGER; DECLARE VARIABLE NKID INTEGER; DECLARE VARIABLE HBNKID INTEGER; /* распределяемая сумма по текущему виду накл. расходов */ DECLARE VARIABLE NKSUMMA DOUBLE PRECISION; DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE PROCNDS DOUBLE PRECISION; DECLARE VARIABLE PRICE DOUBLE PRECISION; declare variable NDS Double Precision; DECLARE VARIABLE ZMID INTEGER; DECLARE VARIABLE ZKID INTEGER; declare variable MGodsID integer; declare variable PSumMult Double Precision; declare variable PMult Double Precision; declare variable PPrice Double Precision; declare variable PQuant Double Precision; declare variable PGodsID integer; declare variable StartTime Date; /* сумма весовых коэффициентов по списанию изделий в производстве */ Declare variable KnkSumW double precision; /* сумма весовых коэффициентов по выпущенным в заказах изделиям */ Declare Variable KnkSumZ double precision; /* сумма весовых коэффициентов по накладной - списание изделий в производстве */ Declare variable KnkInpW double precision; /* сумма весовых коэффициентов по накладной - выпущенные в заказах изделия */ Declare Variable KnkInpZ double precision; /* материалы и компл. по накладной - списание изделий в производстве */ Declare variable GddSumW double precision; /* материалы и компл. по накладной - выпущенные в заказах изделия */ Declare Variable GddSumZ double precision; Declare Variable KPSum double precision; Declare Variable KNSum double precision; begin for Select BDate, EDate from WorkCalcMst where ID=:ID into :bDate, :eDate do begin StartTime = Current_TimeStamp; -- Удалаем предыдущий расчет накладных расходов RecTyp = 0; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for Select ID from WorkCalcNk where MstID=:ID into :NkID do begin Delete from WorkNkDg where CalcNkID=:NkID; Delete from WorkZNk where CalcNkID=:NkID; RecCur = :RecCur + 1; Suspend; end ------------------------------------------------------- RecTyp = 1; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for select ID, NkID, Summa from WorkCalcNk where MstID=:ID into :NkID, :HbNkID, :NkSumma do begin -- сумма коэффициентов по списанию изделий select sum(M.KNK * W.Quant) from DgvWkG W, WorkCalcPodr P, WorkMain M where P.CalcNkID=:NkID and W.Stor=P.StorID and W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and M.GodsID=W.MstGdsID into :KnkSumW; if(:KnkSumW is null) then KnkSumW = 0.0; -- сумма коэффициентов по изделиям в заказах select Sum(M.Knk * K.Source) from WorkCalcPodr P, DgvKt KK, GddKt K, WorkMain M, WorkZakaz Z where P.CalcNkID=:NkID and KK.StorID=P.StorID and KK.ZID is not Null and KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.TYP=4 and K.DgvKey=KK.ID and M.GodsID=K.GdsKey and Z.ID = KK.ZID and Z.NkNoCalc <> 1 into :KnkSumZ; if (:KnkSumZ is null) then KnkSumZ = 0.0; -- распределение по приходным накладным - списание изделий for select W.ID, Sum(M.Knk*W.Quant) from WorkCalcPodr P, DgvWkG W, WorkMain M where P.CalcNkID=:NKID and W.STOR=P.StorID and W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and M.GodsID=W.MstGdsID Group By W.ID into :DgvWkID, :KnkInpW do begin if (:KnkInpW is Null) then KnkInpW = 0.0; -- накладные расходы по изделиям insert into WorkNkDg (ID, DgvID, NKID, SUMMA,CalcNkID) Values(Gen_ID(WorkNkDg_ID,1),:DgvWkID,:HbNkID, :NkSumma/(:KnkSumW+:KnkSumZ)*:KnkInpW,:NkID); end -- изделия в заказах for Select K.ID, K.ZMID, Sum(M.Knk * K.Source) From WorkCalcPodr P, DgvKt DK, GddKt K, WorkMain M, WorkZakaz Z where P.CalcNkID=:NkID and DK.StorID=P.StorID and DK.ZID is not null and DK.DAT_>= :BDATE and DK.DAT_<= :EDATE and DK.TYP=4 and K.DgvKey=DK.ID and M.GodsID=K.GdsKey and Z.ID = DK.ZID and Z.NkNoCalc <> 1 Group By K.ID, K.ZMID Into :ZKID, :ZMID, :KnkInpZ do begin if (:KnkInpZ is Null) then KnkInpZ = 0.0; -- накладные расходы в заказах Insert into WorkZNk (ID, ZKID, NKID, CalcNkID, ZMID, SUMMA) Values(Gen_ID(WorkZNk_ID,1),:ZKID,:HbNkID,:NkID,:ZMID, :NkSumma/(:KnkSumW+:KnkSumZ)*:KnkInpZ); end RecCur = :RecCur + 1; Suspend; end --------------------------------------------------- -- Обновление себестоимости в изделиях RecTyp = 2; RecCur = 0; select Count(*) from DgvWkG W where Inp_Date >= :bDate and Inp_Date <= :eDate into :RecCnt; for select W.ID, W.DgvKtID, W.DgvDtID, W.Quant, W.MstGdsID from DgvWkG W where W.Inp_Date>=:bDate and W.Inp_Date<=:eDate into :DgvWkID, :DgvKtID, :DgvDtID, :Quant, :MGodsID do begin /* материалы и комплектующие */ KnkInpW = 0.0; Select Sum((D.Price-D.Nds) * D.Quant) from GddDt D where D.DgvKey = :DgvDtID into :GddSumW; if(:GddSumW is Null) then GddSumW = 0.0; /* сумма накладных расходов */ Select sum(N.Summa) from WorkNkDg N where N.DgvID=:DgvWkID into :NkSumma; if(:NkSumma is null) then NkSumma = 0.0; /* сопутствующие продукты */ Select Sum(M2.Mult * M2.Knk) from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0.0 and M2.Mult <> 0 into :PSumMult; if (:PSumMult is Null) then PSumMult = 0.0; Select S.NdsProc From DgvKt D, StorList S where D.ID=:DgvKtID and S.ID=D.Stor into :ProcNDS; if(:ProcNDS is Null) then ProcNDS=0.0; Price = ((:GddSumW+:NkSumma)/:Quant)*(1.0+1.0/100.0*:ProcNDS); Price = Price / (1.0+:PSumMult); Nds = (:Price/(100.0+:ProcNDS)*:ProcNDS); /* основное изделие */ Update GddKt set Price=:Price, Nds=:NDS, PriceNs = :Price-:NDS where DgvKey=:DgvKtID and GdsKey = :MGodsID and ((Price <> :Price) or (Nds<>:Nds)); /* сопутствующие продукты */ for select M2.GodsID, M2.Mult, M2.Quant from WorkMain M1, WorkMain M2 where M1.GodsID=:MGodsID and M2.ParentID = M1.ID and M2.Quant <> 0 into :PGodsID, :PMult, :PQuant do begin PPrice = Price / :PQuant * :PMult; Update GddKt set Price=:PPrice,Nds=(:PPrice/(100.0+:ProcNDS)*:ProcNDS), PriceNs=:PPrice-((:PPrice/(100.0+:ProcNDS)*:ProcNDS)) where DgvKey=:DgvKtID and GdsKey = :PGodsID; end Update DgvKt set summa=(:Price*:Quant) where ID=:DgvKtID; RecCur = RecCur + 1; Suspend; end -------------------------------------------------- -- по заказам RecTyp=3; RecCur=0; Select Count(*) From DgvKt DK, GddKt K where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID into :RecCnt; for Select K.ID, K.Source, S.NdsProc, K.DgvKey, Sum((D.Price-D.Nds)*D.Quant), Sum(D.Quant*K1.kPrice), Sum(D.Quant*K1.kNds) From DgvKt DK, GddKt K, GddDt D, StorList S, GddKt K1 where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID and D.ZKID=K.ID and S.ID=DK.StorID and K1.ID=D.GddKey Group By K.ID, K.Source, S.NdsProc, K.DgvKey Into :ZKID, :Quant, :ProcNds, :DgvKtID, :GddSumZ, :KPSum, :KNSum do begin /* накладные расходы по изделию */ Select Sum(Summa) from WorkZNk where ZKID=:ZKID into :NkSumma; if (:NkSumma is Null) then NkSumma = 0.0; if (:Quant = 0.0) then Quant = 1.0; Price = (:GddSumZ + :NkSumma) / :Quant; Update GddKt Set Price=:Price + :Price/100*:ProcNds, Nds=:Price/100*:ProcNds, kPrice = :kPSum / :Quant, kNds = :kNSum / :Quant where ID=:ZKID; RecCur = RecCur+1; Suspend; end RecTyp=4; RecCur = 0; Select Count(*) From DgvKt KK where Typ=4 and DAT_ >= :bDate and DAT_ <= :eDate and ZID is not Null into :RecCnt; for Select KK.ID from DgvKt KK where KK.DAT_ >= :bDate and KK.DAT_ <= :eDate and KK.Typ=4 and KK.ZID is not Null into :DgvKtID do begin Update DgvKt Set Summa=Summa where ID=:DgvKtID; RecCur = RecCur+1; Suspend; end Execute Procedure WorkNk_GenAccnRec :ID; end RecTyp = 5; suspend; end^ ALTER PROCEDURE WORKNK_CALC1_KNK_PHASE2 ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS DECLARE VARIABLE BDATE DATE; DECLARE VARIABLE EDATE DATE; DECLARE VARIABLE DGVDTID INTEGER; DECLARE VARIABLE DGVKTID INTEGER; DECLARE VARIABLE DGVWKID INTEGER; DECLARE VARIABLE NKID INTEGER; DECLARE VARIABLE HBNKID INTEGER; /* распределяемая сумма по текущему виду накл. расходов */ DECLARE VARIABLE NKSUMMA DOUBLE PRECISION; DECLARE VARIABLE QUANT DOUBLE PRECISION; DECLARE VARIABLE PROCNDS DOUBLE PRECISION; DECLARE VARIABLE PRICE DOUBLE PRECISION; declare variable NDS Double Precision; DECLARE VARIABLE ZMID INTEGER; DECLARE VARIABLE ZKID INTEGER; declare variable MGodsID integer; declare variable PSumMult Double Precision; declare variable PMult Double Precision; declare variable PPrice Double Precision; declare variable PQuant Double Precision; declare variable PGodsID integer; /* сумма весовых коэффициентов по списанию изделий в производстве */ Declare variable KnkSumW double precision; /* сумма весовых коэффициентов по выпущенным в заказах изделиям */ Declare Variable KnkSumZ double precision; /* сумма весовых коэффициентов по накладной - списание изделий в производстве */ Declare variable KnkInpW double precision; /* сумма весовых коэффициентов по накладной - выпущенные в заказах изделия */ Declare Variable KnkInpZ double precision; /* материалы и компл. по накладной - списание изделий в производстве */ Declare variable GddSumW double precision; /* материалы и компл. по накладной - выпущенные в заказах изделия */ Declare Variable GddSumZ double precision; Declare Variable KPSum double precision; Declare Variable KNSum double precision; -- признак - распредять накл. расходы только на изделия с параметрами declare variable HasNkPrm integer; begin Select BDate, EDate from WorkCalcMst where ID=:ID into :bDate, :eDate; ------------------------------------------------------- RecTyp = 1; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for select ID, NkID, Summa from WorkCalcNk where MstID=:ID into :NkID, :HbNkID, :NkSumma do begin HasNkPrm = Null; select first 1 ID from workcalcnkprm where CalcNkID=:NkID into :HasNkPrm; -- сумма коэффициентов по списанию изделий select sum(M.KNK * W.Quant) from DgvWkG W, WorkCalcPodr P, WorkMain M where P.CalcNkID=:NkID and W.Stor=P.StorID and W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and M.GodsID=W.MstGdsID into :KnkSumW; if(:KnkSumW is null) then KnkSumW = 0.0; -- сумма коэффициентов по изделиям в заказах if (:HasNkPrm is Null) then begin select Sum(M.Knk * K.Source) from WorkCalcPodr P, DgvKt KK, GddKt K, WorkMain M, WorkZakaz Z where P.CalcNkID=:NkID and KK.StorID=P.StorID and KK.ZID is not Null and KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.TYP=4 and K.DgvKey=KK.ID and M.GodsID=K.GdsKey and Z.ID = KK.ZID and Z.NkNoCalc <> 1 into :KnkSumZ; end else begin -- с параметрами select Sum(M.Knk * K.Source) from WorkCalcPodr P join DgvKt KK on KK.StorID=P.StorID and KK.ZID is not Null and KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.TYP=4 join GddKt K on K.DgvKey=KK.ID join WorkMain M on M.GodsID=K.GdsKey join WorkZakaz Z on Z.ID = KK.ZID and Z.NkNoCalc <> 1 join goods g on g.ID=k.GdsKey join WorkCalcNkPrm np on np.CalcNkID=:NkID join GdsParamGdsRef r on r.goodsid=g.ID and r.fixval=np.ParamValID where P.CalcNkID=:NkID into :KnkSumZ; end if (:KnkSumZ is null) then KnkSumZ = 0.0; -- распределение по приходным накладным - списание изделий for select W.ID, Sum(M.Knk*W.Quant) from WorkCalcPodr P, DgvWkG W, WorkMain M where P.CalcNkID=:NKID and W.STOR=P.StorID and W.INP_DATE >=:BDATE and W.INP_DATE <= :EDATE and M.GodsID=W.MstGdsID Group By W.ID into :DgvWkID, :KnkInpW do begin if (:KnkInpW is Null) then KnkInpW = 0.0; -- накладные расходы по изделиям insert into WorkNkDg (ID, DgvID, NKID, SUMMA,CalcNkID) Values(Gen_ID(WorkNkDg_ID,1),:DgvWkID,:HbNkID, :NkSumma/(:KnkSumW+:KnkSumZ)*:KnkInpW,:NkID); end -- изделия в заказах if (:HasNkPrm is Null) then begin for Select K.ID, K.ZMID, Sum(M.Knk * K.Source) From WorkCalcPodr P, DgvKt DK, GddKt K, WorkMain M, WorkZakaz Z where P.CalcNkID=:NkID and DK.StorID=P.StorID and DK.ZID is not null and DK.DAT_>= :BDATE and DK.DAT_<= :EDATE and DK.TYP=4 and K.DgvKey=DK.ID and M.GodsID=K.GdsKey and Z.ID = DK.ZID and Z.NkNoCalc <> 1 Group By K.ID, K.ZMID Into :ZKID, :ZMID, :KnkInpZ do begin if (:KnkInpZ is Null) then KnkInpZ = 0.0; -- накладные расходы в заказах Insert into WorkZNk (ID, ZKID, NKID, CalcNkID, ZMID, SUMMA) Values(Gen_ID(WorkZNk_ID,1),:ZKID,:HbNkID,:NkID,:ZMID, :NkSumma/(:KnkSumW+:KnkSumZ)*:KnkInpZ); end RecCur = :RecCur + 1; Suspend; end else begin -- с параметрами for Select K.ID, K.ZMID, Sum(M.Knk * K.Source) From WorkCalcPodr P join DgvKt DK on DK.StorID=P.StorID and DK.ZID is not null and DK.DAT_>= :BDATE and DK.DAT_<= :EDATE and DK.TYP=4 join GddKt K on K.DgvKey=DK.ID join WorkMain M on M.GodsID=K.GdsKey join WorkZakaz Z on Z.ID = DK.ZID and Z.NkNoCalc <> 1 join goods g on g.ID=k.GdsKey join WorkCalcNkPrm np on np.CalcNkID=:NkID join GdsParamGdsRef r on r.goodsid=g.ID and r.fixval=np.ParamValID where P.CalcNkID=:NkID Group By K.ID, K.ZMID Into :ZKID, :ZMID, :KnkInpZ do begin if (:KnkInpZ is Null) then KnkInpZ = 0.0; -- накладные расходы в заказах Insert into WorkZNk (ID, ZKID, NKID, CalcNkID, ZMID, SUMMA) Values(Gen_ID(WorkZNk_ID,1),:ZKID,:HbNkID,:NkID,:ZMID, :NkSumma/(:KnkSumW+:KnkSumZ)*:KnkInpZ); end RecCur = :RecCur + 1; Suspend; end end end^ ALTER PROCEDURE WORKNK_CALC1_KNK_UPDDZ ( ID INTEGER) RETURNS ( RECCUR INTEGER) AS declare variable bDate TimeStamp; declare variable eDate TimeStamp; declare variable ZkID integer; declare variable Quant double precision; declare variable ProcNds double precision; declare variable DgvKtID integer; declare variable GddSumZ double precision; declare variable KPSum double precision; declare variable KNSum double precision; declare variable NkSumma double precision; declare variable Price double precision; declare variable Nds double precision; declare variable KNds double precision; begin Select BDate, EDate from WorkCalcMst where ID=:ID into :bDate, :eDate; for Select KK.ID from DgvKt KK where KK.DAT_ >= :bDate and KK.DAT_ <= :eDate and KK.Typ=4 and KK.ZID is not Null into :DgvKtID do begin Update DgvKt Set Summa=Summa where ID=:DgvKtID; RecCur = RecCur+1; Suspend; end end^ ALTER PROCEDURE WORKNK_CALC1_KNK_UPDPZ ( ID INTEGER) RETURNS ( RECCUR INTEGER) AS declare variable bDate TimeStamp; declare variable eDate TimeStamp; declare variable ZkID integer; declare variable Quant double precision; declare variable ProcNds double precision; declare variable DgvKtID integer; declare variable GddSumZ double precision; declare variable KPSum double precision; declare variable KNSum double precision; declare variable NkSumma double precision; declare variable Price double precision; declare variable Nds double precision; declare variable KNds double precision; begin Select BDate, EDate from WorkCalcMst where ID=:ID into :bDate, :eDate; for Select K.ID, K.Source, S.NdsProc, K.DgvKey, Sum((D.Price-D.Nds)*D.Quant), Sum(D.Quant*K1.kPrice), Sum(D.Quant*K1.kNds), CoalEsce((Select Sum(zn.Summa) from WorkZNk zn where zn.ZKID=K.ID), 0.0) From DgvKt DK, GddKt K, GddDt D, StorList S, GddKt K1 where DK.TYP=4 and DK.DAT_>= :bDate and DK.DAT_<= :eDate and DK.ZID is not null and K.DgvKey=DK.ID and D.ZKID=K.ID and S.ID=DK.StorID and K1.ID=D.GddKey Group By K.ID, K.Source, S.NdsProc, K.DgvKey Into :ZKID, :Quant, :ProcNds, :DgvKtID, :GddSumZ, :KPSum, :KNSum, :NkSumma do begin -- накладные расходы по изделию -- Select Sum(Summa) from WorkZNk where ZKID=:ZKID into :NkSumma; -- if (:NkSumma is Null) then NkSumma = 0.0; if (:Quant = 0.0) then Quant = 1.0; Price = (:GddSumZ + :NkSumma) / :Quant; Update GddKt Set Price=:Price + :Price/100*:ProcNds, Nds=:Price/100*:ProcNds, kPrice = :kPSum / :Quant, kNds = :kNSum / :Quant where ID=:ZKID; RecCur = RecCur+1; Suspend; end end^ ALTER PROCEDURE WORKNK_CALC2 ( ID INTEGER) RETURNS ( RECTYP INTEGER, RECCUR INTEGER, RECCNT INTEGER) AS DECLARE VARIABLE BDATE DATE; DECLARE VARIABLE EDATE DATE; declare variable CurOrgnID integer; declare variable NkID integer; declare variable StorID integer; declare variable Summa double precision; declare variable NkSumma double precision; declare variable dSumma double precision; declare variable DgvKtID integer; declare variable NkNoCalc integer; declare variable KID integer; -- кол-во изделий declare variable Quant double precision; -- себестоимость по материалам / комплектующим (с их накл. расходами) -- себестоимость материалов (без накл. расходов) declare variable kPrice double precision; declare variable kNds double precision; declare variable nPrice double precision; declare variable Price double precision; declare variable Nds double precision; -- накладные расходы declare variable NkPrice double precision; -- себестоимость изделия с накладными расходами declare variable mPrice double precision; declare variable mNds double precision; declare variable TPrice double precision; declare variable TNds double precision; declare variable ProcNds double precision; begin Select BDate, EDate, OurOrgnID from WorkCalcMst where ID=:ID into :bDate, :eDate, :CurOrgnID; if (:CurOrgnID is Null) then exit; Select count(*) from WorkCalcNk where MstID=:ID into :RecCnt; /* Удалаем предыдущий расчет накладных расходов */ RecTyp = 0; RecCur = 0; for Select ID from WorkCalcNk where MstID=:ID into :NkID do begin Delete from WorkNkDg where CalcNkID=:NkID; Delete from WorkZNk where CalcNkID=:NkID; RecCur = RecCur + 1; Suspend; end /* Calc Nk */ RecTyp = 1; RecCur = 0; Select Count(*) from WorkCalcNk where MstID=:ID into :RecCnt; for select ID from WorkCalcNk where MstID=:ID into :NkID do begin Update WorkCalcPodr Set Summa = 0.0, NkSumma = 0.0 where CalcNkID = :NkID; end for Select distinct P.StorID from WorkCalcNk CN join workcalcpodr P on P.CalcNkID = CN.ID where CN.MstID = :ID into :StorID do begin for select Sum(D.Quant*(K1.KPrice-K1.KNds)) from DgvKt KK join workzakaz Z on Z.ID = KK.ZID+0 left join GddKt K on K.DgvKey=KK.ID left join GddDt D on D.ZKID=K.ID left join GddKt K1 on K1.ID=D.GddKey where KK.DAT_ >= :bDate and KK.DAT_ <= :eDate and KK.StorID+0 = :StorID and KK.Typ=4 and KK.ZID is not Null and Z.NkNoCalc = 0 and K.ID is not null and D.ID is not null and K1.ID is not Null into :Summa do begin for select ID from WorkCalcNk where MstID=:ID into :NkID do begin Update WorkCalcPodr Set Summa = :Summa where CalcNkID = :NkID and StorID = :StorID; end end end for select ID, Summa from WorkCalcNk where MstID=:ID into :NkID, :NkSumma do begin Select Sum(Summa) from WorkCalcPodr where CalcNkID = :NkID into :dSumma; if (:dSumma is Null) then dSumma = 0.0; if (:dSumma <> 0.0) then Update WorkCalcPodr Set NkSumma = :NkSumma / :dSumma * Summa where CalcNkID = :NkID; else Update WorkCalcPodr set NkSumma = 0.0 where CalcNkID = :NkID; end RecTyp = 3; RecCur = 0; select count(*) from DgvKt KK left join StorList S on S.ID=KK.Stor join WorkZakaz Z on Z.ID = KK.ZID+0 where KK.DAT_ >= :bDate and KK.DAT_ <= :eDate and KK.Typ=4 and S.OurOrgnID = :CurOrgnID into :RecCnt; for select P.StorID, S.NdsProc, Sum(P.Summa), Sum(P.NkSumma) from WorkCalcNk CN join WorkCalcPodr P on P.CalcNkID=CN.ID join StorList S on S.ID = P.StorID where CN.MstID = :ID -- and P.Summa <> 0.0 and P.NkSumma <> 0.0 group by P.StorID, S.NdsProc having Sum(P.Summa) <> 0.0 into :StorID, :ProcNds, :Summa, :NkSumma do begin for select KK.ID, Z.NkNoCalc from DgvKt KK join WorkZakaz Z on Z.ID = KK.ZID+0 where KK.DAT_ >= :bDate and KK.DAT_ <= :eDate and KK.StorID+0 = :StorID and KK.Typ=4 group by KK.ID, Z.NkNoCalc into :DgvKtID, :NkNoCalc do begin for select K.ID, K.Source, Sum(K1.kPrice*D.Quant), Sum(K1.kNds * D.Quant), Sum((D.Price-D.Nds)*D.Quant) from GddKt K join GddDt D on D.ZkID = K.ID join GddKt K1 on K1.ID = D.GddKey where K.DgvKey = :DgvKtID and K.Source <> 0.0 Group by K.ID, K.Source into :KID, :Quant, :kPrice, :kNds, :nPrice do begin if (:kPrice is Null) then kPrice = 0.0; if (:kNds is Null) then kNds = 0.0; if (:nPrice is Null) then Price = 0.0; NkPrice = 0.0; if (not (:NkNoCalc = 1)) then begin if (:Summa <> 0.0) then NkPrice = :NkSumma / :Summa * (:kPrice - :kNds) / :Quant; end kPrice = :kPrice / :Quant; kNds = :kNds / : Quant; nPrice = :nPrice / :Quant; Nds = :nPrice / Cast(100.0 as double precision) * :ProcNds; Price = :nPrice + :Nds; TPrice = :Price; TNds = :Nds; mPrice = :nPrice + :NkPrice; mNds = :MPrice / Cast(100.0 as double precision) * :ProcNds; mPrice = :mPrice + :mNds; -- цены на готовую продукцию update GddKt set kPrice = :kPrice, kNds = :kNds, TPrice = :TPrice, TNds = :TNds, Price = :mPrice, Nds = :mNds where ID = :KID and (kPrice <> :kPrice or kNds <> :kNds or Price <> :mPrice or Nds <> :mNds or TPrice <> :TPrice or TNds <> :TNds); end update DgvKt set Summa = Summa where ID = :DgvKtID; RecCur = :RecCur + 1; Suspend; end end Execute Procedure WorkNk_GenAccnRec :ID; RecTyp = 5; Suspend; end^ ALTER PROCEDURE WORKNK_DELACCNREC ( ID INTEGER) AS declare variable LinkID integer; Declare Variable ProvID Integer; begin for select ID, ProvID from WorkCalcProv where CalcID=:ID into :LinkID, :ProvID do begin delete from WorkCalcProv where ID=:LinkID; Delete From AccnProv where ID=:ProvID; end end^ ALTER PROCEDURE WORKNK_GENACCNREC ( ID INTEGER) AS Declare variable OperID integer; Declare Variable StorID Integer; /* цех */ Declare Variable NkID Integer; Declare Variable Summa Double Precision; Declare Variable Dt4 integer; Declare Variable Kt4 integer; Declare Variable d4 integer; Declare Variable k4 integer; Declare Variable dt varchar(5); Declare Variable kt varchar(5); Declare Variable Comment varchar(255); Declare Variable Dat_ Date; Declare Variable ProvID integer; Declare Variable Storno Integer; Declare Variable DtPrt integer; Declare Variable DtObj integer; Declare Variable KtPrt integer; Declare Variable KtObj integer; Declare Variable UserName Varchar(20); Declare Variable Nbr Varchar(20); declare variable OurOrgnID integer; declare variable Stor Integer; /* цех в проводке */ declare variable vl1 integer; declare variable vl2 integer; declare variable dt8 integer; declare variable dt9 integer; declare variable kt8 integer; declare variable kt9 integer; declare variable d8 integer; declare variable d9 integer; declare variable k8 integer; declare variable k9 integer; begin Execute procedure WorkNk_DelAccnRec (:ID); for select OperID, EDate, Nbr, UserName, OurOrgnID from WorkCalcMst where ID=:ID into :OperID,:Dat_, :Nbr, :UserName, :OurOrgnID do begin if (:OperID is null or :OperID=0) then Exit; select VL1, VL2 from AcOprLst where ID = :OperID into :VL1, :VL2; for select d.stor, nd.nkid, sum(nd.summa) summa from workcalcnk cn, worknkdg nd, dgvwkg d where cn.mstid=:ID and nd.calcnkid=cn.id and d.id=nd.dgvid group by d.stor, nd.nkid Union all Select KK.StorID, nz.nkid, Sum(nz.Summa) Summa From WorkCalcNk cz, WorkZNk nz, WorkZakaz Z, WorkZMst M, DgvKt KK, GddKt K where cz.MstID=:ID and nz.CalcNkID=cz.ID and M.ID=nz.ZmID and Z.ID=M.ZID and K.ID=nz.ZkID and KK.ID=K.DgvKey group by KK.StorID, nz.nkid into :StorID, :NkID, :Summa do begin for select dt, kt, comment, Storno, DtPrt, DtObj, KtPrt, KtObj, Stor from storaccn where OperID = :OperID and RealTyp = :NkID into :Dt,:Kt,:Comment,:Storno,:DtPrt,:DtObj,:KtPrt,:KtObj, :Stor do begin if (:Stor is Null or (:Stor is Not Null and :Stor=:StorID)) then begin select a4, a8, a9 from AccnPlan where Accn=:Dt into :d4, :d8, :d9; select a4, a8, a9 from AccnPlan where Accn=:Kt into :k4, :k8, :k9; dt8 = Null; dt9 = Null; kt8 = Null; kt9 = Null; if (:d4 <> 0 and :d4 is not null) then dt4 = :StorID; else dt4 = Null; if (:k4 <> 0 and :k4 is not null) then kt4 = :StorID; else kt4 = Null; if (:d8 is not Null) then dt8 = :VL1; if (:d9 is not Null) then dt9 = :VL2; if (:k8 is not Null) then kt8 = :VL1; if (:k9 is not Null) then kt9 = :VL2; if(:summa<>0 and :summa is not null) then begin if(:Storno<>0 and :Storno is not null) then Summa=-:Summa; ProvID = Gen_ID(AccnProv_ID,1); insert into accnprov(ID,OurOrgnID,Dat_,Document,Dt,Kt,Dt4,Kt4,Comment,Summa,Oper,OperID, DtPrt, DtObj, KtPrt, KtObj, UserName, dt8, dt9, kt8, kt9) Values(:ProvID,:OurOrgnID,:Dat_,:Nbr,:Dt,:Kt,:Dt4,:Kt4,:Comment,:Summa,80,:OperID, :DtPrt, :DtObj, :KtPrt, :KtObj, :UserName, :dt8, :dt9, :kt8, :kt9); Insert Into WorkCalcProv(ID,CalcID,ProvID) Values (Gen_ID(WorkCalcProv_ID,1),:ID,:ProvID); end end end end end end^ ALTER PROCEDURE WORKNKDG_NEWID RETURNS ( ID INTEGER) AS begin ID=Gen_ID(WorkNkDG_ID,1); end^ ALTER PROCEDURE WORKOPERATION_GETPARENTS ( ID INTEGER) RETURNS ( CID INTEGER, PARENTID INTEGER) AS BEGIN WHILE (:ID <> 0 and ID is not Null) DO /* ищем до корня */ BEGIN SELECT O.ID, O.ParentID FROM WorkOperation O WHERE O.ID = :ID INTO :CID, :ParentID; ID = :ParentID; /* код родителя для следующей выборки */ SUSPEND; END END^ ALTER PROCEDURE WORKPLANMST_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(WorkPlanMst_ID,1); end^ ALTER PROCEDURE WORKPLANSLV_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(WorkPlanSlv_ID, 1); end^ ALTER PROCEDURE WORKREQUESTADDKT ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURORGNID INTEGER, STORGRP INTEGER, WSTOR INTEGER, GPSTOR INTEGER, NOTINZAKAZ INTEGER = 0, NOTINVENT INTEGER = 0) RETURNS ( WZID INTEGER) AS declare variable ZNBR varchar(32); declare variable WMID integer; declare variable MID integer; declare variable GODSID integer; declare variable SOURCE double precision; declare variable QEND double precision; declare variable QOUT double precision; declare variable QBEG double precision; declare variable QIEND double precision; declare variable RQUANT double precision; declare variable QUANT double precision; declare variable QNT double precision; declare variable PROCNDS double precision; declare variable WRID integer; declare variable PDATE timestamp; declare variable K integer; declare variable R integer; declare variable KTID integer; declare variable DTID integer; declare variable GNAME varchar(80); declare variable GDDKTID integer; BEGIN K=100; QNT=0.0; /*Отбираем список изделий для оприходования по заказам за период готовности */ for select g.name, q.godsid, w.id wid, sum(q.qend) qend, sum(q.qbeg) qbeg, sum(q.qout) qout, sum(q.qiend) qiend from ( select zg.godsid, cast(0.0 as double precision) qbeg, cast(0.0 as double precision) qend, cast(0.0 as double precision) qiend, sum(zg.source) qout from storzakazdt z join storzdtgds zg on zg.szid=z.id where z.readypdatetime>=:BDATE and z.readypdatetime<=:EDATE and z.state<3 and z.ourorgnid=:curorgnid and z.storgrpid=:storgrp group by zg.godsid union all select od.godsid, od.cquant qbeg, od.rquant qend, cast(0.0 as double precision) qiend, cast(0.0 as double precision) qout from invopisheader o join invopisdata od on o.id=od.opisid where o.dat_>=:BDATE and o.dat_<=:EDATE and o.storid in (select storid from storgrpref where grpid=:storgrp) union all select o.gid godsid, cast(0.0 as double precision) qbeg, cast(0.0 as double precision) qend, sum(o.qend) qiend, cast(0.0 as double precision) qout from GDDDT_MOVEGOODS_SGRP(:CURORGNID, :bdate, :edate, :storgrp) o group by 1 ) as Q join goods g on q.godsid=g.id join workmain w on w.godsid=g.id group by 1,2,3 order by 1 into :gname, :godsid, :wmid, :qend, :qbeg, :qout, qiend do begin ktid = null; wzid = null; dtid = null; r = null; /*Проверка есть ли инвентарь*/ if (notinvent=0) then source=qend - qbeg + qout; else source=:qiend-:qout; /*Формируем список изделий на оприходование*/ for select 1 regnum, wm.zid wzid, wm.id mid, wm.wrgdsid rgid, rg.quant rquant, r.pdate, wz.nbr, sum(zg.source) quant from storzakazdt z join storzdtgds zg on zg.szid=z.id left join workrequest r on r.szid=z.id left join workrequestgds rg on rg.wrid=r.id and rg.godsid=zg.godsid left join workzmst wm on wm.id=rg.wmid left join workzakaz wz on wz.id=wm.zid where z.readypdatetime>=:BDATE and z.readypdatetime<=:EDATE and z.state<3 and z.ourorgnid=:curorgnid --19769 and z.storgrpid=:storgrp --30 and zg.godsid=:godsid and (wz.ztrash=0 or wz.ztrash is null) group by 1,2,3,4,5,6,7 union select 2 regnum, wm.zid, wm.id mid, null rgid, wm.quant rquant, cast(:bdate as timestamp) as pdate, wz.nbr, cast(0.0 as double precision) quant from workzakaz wz join workzmst wm on wm.zid=wz.id where wz.dat_ >= :BDATE and wz.dat_ <= :EDATE and wm.wrgdsid is null and wm.godsid = :godsid and wz.stor = :wstor --105 and (wz.ztrash=0 or wz.ztrash is null) order by 1, 4 desc into :r, :wzid, :mid, :wrid, :rquant, :pdate, :znbr, :quant do begin if (pdate is null) then pdate = :bdate; /*Проверка наличия заказа на изделие*/ if (source>0.0) then begin if (wzid is null) then begin wzid=(select first 1 wm.zid from workzmst wm join workzakaz z on z.id=wm.zid left join dgvkt k on k.zid=z.id where wm.godsid=:godsid and z.dat_>=:bdate and z.dat_<=:edate and z.stor=:wstor and (z.ztrash=0 or z.ztrash is null) order by k.id desc); mid=(select first 1 wm.id from workzmst wm where wm.godsid=:godsid and wm.zid=:wzid and wm.wrgdsid is null order by 1); quant=:source; if (wzid is null) then begin znbr=extract(DAY from (:bdate)); znbr=znbr||'/'||lpad(K,3,'0'); wzid=GEN_ID(WORKZAKAZ_ID,1); insert into workzakaz(id, dat_, nbr, ourorgnid, stor) values(:wzid, :bdate, :znbr, :curorgnid, :wstor); K=K+1; MID= gen_id(WORKZMST_ID,1); insert into workzmst(ID, ZID, MID, GODSID, STOR, SOURCE ) values (:mid,:wzid, :wmid, :godsid, :wstor, :source); end rquant=source; end ktid = (select first 1 d.id from dgvkt d left join gddkt gk on gk.dgvkey = d.id and gk.gdskey=:godsid where d.typ=4 and d.dat_=:bdate and d.zid=:wzid and d.stor=:GPStor order by gk.gdskey desc); dtid = (select dgvkey from dgvkt where id=:ktid); gddktid=(select max(id) from gddkt where dgvkey=:ktid and gdskey=:godsid); /*Проверка накладной в заказе*/ if (ktid is null) then begin ktid =GEN_ID(DGVKT_ID,1); procnds = (select s.ndsproc from storlist s where s.id=:gpstor); insert into dgvkt(id, dat_, nbr, typ, stor, storid, zid, procnds) values(:ktid, :pdate, :znbr, 4, :gpstor, :wstor, :wzid, :procnds); end if (dtid is null) then begin DTID=GEN_ID(DGVDT_ID,1); procnds = (select s.ndsproc from storlist s where s.id=:wstor); insert into dgvdt(id, dat_, out_date, saledate, REALDATE, nbr, typ, stor, storid, procnds,zid,dgvkey) values(:dtid, :pdate, :pdate, :pdate,:pdate, :znbr, 8, :wstor, :gpstor, :procnds, :wzid, :ktid); update dgvkt k set k.dgvkey = :dtid where k.id=:ktid; end qnt=quant; if (quant=0.0) then begin qnt = source; quant=source; end if ((source-quant)<0) then qnt=source; if ((source>0.0) and (qnt>0)) then begin if (gddktid is not null) then update gddkt gk set gk.source=gk.source+:qnt, gk.quant=gk.quant+:qnt where gk.id=:gddktid;--обновление кол-ва в накладной если она есть else begin if (notinzakaz=0) then begin insert into gddkt(dgvkey, gdskey, zmid, source, quant, wrgdsid) values(:ktid, :godsid, :mid, :qnt, :qnt, :wrid); end else begin insert into gddkt(dgvkey, gdskey, zmid, source, quant) values(:ktid, :godsid, :mid, :qnt, :qnt); end end source=source-quant; end end end if (source>0.001) then begin if (wzid is null) then begin znbr=extract(DAY from (:bdate)); znbr=znbr||'/'||lpad(K,3,'0'); wzid=GEN_ID(WORKZAKAZ_ID,1); insert into workzakaz(id, dat_, nbr, ourorgnid, stor) values(:wzid, :bdate, :znbr, :curorgnid, :wstor); K=K+1; end MID= gen_id(WORKZMST_ID,1); insert into workzmst(ID, ZID, MID, GODSID, STOR, SOURCE ) values (:mid,:wzid, :wmid, :godsid, :wstor, :source); ktid = (select max(d.id) ktid from dgvkt d where d.typ=4 and d.dat_=:bdate and d.zid=:wzid); dtid = (select dgvkey from dgvkt where id=:ktid); /*Проверка накладной в заказе*/ if (ktid is null ) then begin ktid =GEN_ID(DGVKT_ID,1); procnds = (select s.ndsproc from storlist s where s.id=:gpstor); insert into dgvkt(id, dat_, nbr, typ, stor, storid, zid, procnds) values(:ktid, :pdate, :znbr, 4, :gpstor, :wstor, :wzid, :procnds); end if (dtid is null) then begin DTID=GEN_ID(DGVDT_ID,1); procnds = (select s.ndsproc from storlist s where s.id=:wstor); insert into dgvdt(id, dat_, out_date, saledate, REALDATE, nbr, typ, stor, storid, procnds,zid,dgvkey) values(:dtid, :pdate, :pdate, :pdate,:pdate, :znbr, 8, :wstor, :gpstor, :procnds, :wzid, :ktid); update dgvkt k set k.dgvkey = :dtid where k.id=:ktid; end if (notinzakaz=0) then begin insert into gddkt(dgvkey, gdskey, zmid, source, quant, wrgdsid) values(:ktid, :godsid, :mid, :source, :source, :wrid); end else begin insert into gddkt(dgvkey, gdskey, zmid, source, quant) values(:ktid, :godsid, :mid, :source, :source); end source=0.0; end suspend; end END^ ALTER PROCEDURE WORKREQUESTADDWR ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURORGNID INTEGER, STORGRP INTEGER, USERNAME VARCHAR(20)) RETURNS ( SZID INTEGER) AS declare variable ZNBR varchar(32); declare variable MID integer; declare variable GODSID integer; declare variable SOURCE double precision; declare variable WRID integer; declare variable PDATE timestamp; BEGIN /*Отбираем заказы за выбранный период плановой готовности */ for select sz.id szid, sz.readypdatetime, sz.nbr from storzakazdt sz join storzdtgds zg on zg.szid=sz.id join goods g on g.id=zg.godsid left join GDSPARAMGDSREF GR on g.id=gr.goodsid and gr.paramid=14 /*Типы продукции(Накл. расходы)*/ where sz.readypdatetime >=:BDATE and sz.readypdatetime<=:EDATE and sz.state <3 and sz.ourorgnid = :CURORGNID and sz.storgrpid = :storgrp --and sz.ourorgnid =19769 and sz.storgrpid = 30 and coalesce(gr.fixval,0) not in (34,35,31,42,44,41,40,50) /*Список типов продукции не изготавливаемых под заказ*/ group by 1,2,3 into :szid, :pdate, :znbr do begin /*Формируем список заявок с изделиями */ WRID= GEN_ID(WORKREQUEST_ID,1); insert into WORKREQUEST(id, dat_, nbr,pdate, ourorgnid, szid, username) values(:wrid, current_date, :znbr, :pdate, :curorgnid, :szid, :username); for select wm.id wmid, g.id, sum(zg.source) source from storzdtgds zg join goods g on g.id=zg.godsid join workmain wm on wm.godsid=g.id left join GDSPARAMGDSREF GR on g.id=gr.goodsid and gr.paramid=14 --Типы продукции(Накл. расх.) where zg.szid=:szid and coalesce(gr.fixval,0) not in (34,35,31,42,44,41,40,50) /*Список типов продукции не изготавливаемых под заказ*/ group by 1,2 into :mid, :godsid, :source do begin insert into WORKREQUESTGDS(WRID, GODSID, QUANT ) values (:wrid, :godsid, :source); end suspend; end --result='Расчет окончен'; --suspend; END^ ALTER PROCEDURE WORKZ_CHECK_CLOSE ( ZID INTEGER, MST INTEGER = 1, GDD INTEGER = 1) RETURNS ( MGDSID INTEGER, MTGDSID INTEGER, REALQUANT DOUBLE PRECISION, CALCQUANT DOUBLE PRECISION) AS declare variable Source double precision; declare variable SID Integer; declare variable SGdsID integer; --declare variable Quant double precision; begin if (:Mst=1) then begin for select GodsID, Sum(Source) from WorkZMst where ZID=:ZID Group by GodsID into MGdsID, :Source do begin RealQuant = :Source; CalcQuant = 0.0; MtGdsID = Null; select CoalEsce(sum(K.Source), 0) from WorkZMst M Join GddKt K on K.ZmID=M.ID where M.ZID=:ZID and M.godsid=:MGdsID into :CalcQuant; if (Abs(:RealQuant - :CalcQuant) > 0.0005) then begin suspend; end end end if (:Gdd = 1) then begin for Select M.GodsID, CoalEsce(Sum(K.Source), 0.0) from WorkZMst M join GddKt K on K.ZmID = M.ID where M.ZID = :ZID Group by M.GodsID into :MGdsID, :Source do begin RealQuant = :Source; CalcQuant = 0.0; /* for select S.ID, S.GodsID from WorkZSlv S where S.mstid = :MID and S.testone = 0 and s.rndqnt = 0 into :sid, :SGdsID do begin CalcQuant = 0.0; end */ for select K1.GdsKey, CoalEsce(sum(D.Source), 0.0) from WorkZMst M Join GddKt K on K.zmid=M.ID Join GddDt D on D.ZkID=K.ID and D.gddid is null Join GddKt K1 on K1.ID=D.GddKey where M.ZID=:ZID and M.GodsID=:MGdsID Group by K1.GdsKey into :MtGdsID, :CalcQuant do begin if (Abs(:RealQuant - :CalcQuant) > 0.0005) then begin suspend; end end end end end^ ALTER PROCEDURE WORKZ_DGVDT ( DGVKTID INTEGER, DGVDTID INTEGER, USERNAME VARCHAR(20)) AS declare variable ID integer; declare variable aDate TimeStamp; declare variable InpDate TimeStamp; declare variable aInpDate TimeStamp; declare variable Nbr varchar(20); declare variable Stor1 Integer; /* склад готовой продукции */ declare variable Stor2 integer; /* выпускающий изделия цех */ declare variable NdsProc Double Precision; declare variable NdsTyp Integer; declare variable ZID integer; /* ID заказа */ declare variable KID integer; /* ID изделия в приходе */ declare variable ZMID integer; /* ID изделия в заказе */ declare variable ZSID integer; /* комплектующие в заказе */ declare variable MQUANT double precision; /* кол-во изделий */ declare variable MQNT_ONE double precision; /* кол-во изделий */ declare variable ScaleSize integer; declare variable CalcType integer; /* необходимое кол-ко комплектующих - по расчету */ declare variable SQUANT double precision; /* фактическое количество комплектующих */ declare variable SSOURCE double precision; /* норма */ declare variable QNT double precision; /* позиция комплектующих (укомплектация) */ declare variable KSID Integer; /* остаток комплектущих (укомплектация заказа) */ declare variable KSQUANT Double Precision; /* списываемое количество комплектующих */ declare variable DQUANT Double Precision; declare variable Price Double Precision; declare variable NDS double precision; /* себестоимость изделия */ declare variable SGodsID integer; /* операция на оприходование изделий */ Declare variable RndQnt integer; declare variable SSum double precision; declare variable DSource double precision; declare variable Dgv_DtID integer; declare variable Options integer; declare variable NoCheckDate integer; begin -- накладная на оприходование изделий Select ID, DAT_, Nbr, Stor, StorID, UserName, ZID from DgvKt where ID=:DgvKtID into :ID, :aDate, :Nbr, :Stor1, :Stor2, :UserName, :ZID; if (:ID is null or :ZID is null) then exit; Select NdsProc, NdsTyp from StorList where ID=:Stor2 into :NdsProc, :NdsTyp; Select Options from WorkZakaz where ID=:ZID into :Options; NoCheckDate = 0; if (BIN_AND(:Options, 32) <> 0) then NoCheckDate = 1; Dgv_DtID = Null; SELECT ID FROM DGVDT WHERE ID=:DgvDtID INTO :Dgv_DtID; if (:Dgv_DtID is Null) then begin -- расходная накладная на списание комплектующих Insert Into DgvDt(ID,Dat_, NBr, Out_Date, Typ, Stor, StorID, RealTyp, ProcNds, NdsTyp, DgvKey, ZID, UserName) Values(:DgvDtID, :aDate, :Nbr, :aDate, 8, :Stor2, :Stor1, 0, :NdsProc, :NdsTyp, :DgvKtID, :ZID, :UserName); end else begin Delete from GddDt where DgvKey=:DgvDtID; Update DGvDt Set UserName=:UserName where ID=:DgvDtID; end Update DgvKt Set DgvKey=:DgvDtID/*, OperID=:OperID*/ where ID=:DgvKtID; InpDate = Null; -- дата последнего прихода материалов в заказ -- оприходование изделие должно быть не раньше даты прихода -- оприходованые изделия for Select K.ID, K.ZMID, K.SOURCE, K.Src_One, M.ScaleSize, WM.CalcType from GddKt K join WorkZMst M on M.ID=K.ZMID join WorkMain WM on WM.ID=M.MID where K.DgvKey=:DgvKtID into :KID, :ZMID, :MQUANT, :MQNT_ONE, :ScaleSize, :CalcType do begin -- нормы материалов в заказе (список материалов) for Select ID, GodsID, QNT, QUANT, SOURCE, CoalEsce(RndQnt, 0) from WorkZSlv S where MstID=:ZMID and NoZReserv=0 and (S.TestOne = 0 or S.TestOne is Null) Order by ID into :ZSID, :SGodsID, :QNT, :SQUANT, :SSOURCE, :RndQnt do begin -- SSOURCE - необходимо материала под выпускаемое количество изделий if (:ScaleSize = 1 and :CalcType = 0) then SSOURCE = :MQNT_ONE * :QNT; else SSOURCE = :MQUANT * :QNT; SSum = :SSource; -- зарезервировано в заказе for select K.ID, K.Quant, K.Price, K.Nds, KK.DAT_ from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey=:SGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds, :aInpDate do begin if (:SSOURCE > 0) then begin if (:KSQUANT > :SSOURCE) then DQUANT = :SSOURCE; else DQUANT = :KSQUANT; DSource = :MQuant / :SSum * :DQuant; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE-:DQUANT; insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(Gen_ID(GddDt_ID, 1), :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); end end end end -- вспомогательные материалы - не зарезеревированные в заказе for Select ID, GodsID, QNT, QUANT, SOURCE, CoalEsce(RndQnt, 0) from WorkZSlv S /* комплектующие в заказе */ where MstID=:ZMID and NoZReserv=1 and (S.TestOne = 0 or S.TestOne is Null) into :ZSID, :SGodsID, :QNT, :SQUANT, :SSOURCE, :RndQnt do begin if (:ScaleSize = 1 and :CalcType = 0) then SSOURCE = :MQNT_ONE * :QNT; else SSOURCE = :MQUANT * :QNT; SSum = :SSource; -- вспомогательные материалы в наличии в цехе for select K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor=:Stor2 and K.ID=Q.ID and K.GdsKey = :SGodsID and K.ZID is Null and KK.ID=K.DgvKey and KK.DAT_ <= :aDate order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds do begin if (:SSOURCE > 0) then begin if (:KSQUANT > :SSOURCE) then DQUANT = :SSOURCE; else DQUANT = :KSQUANT; DSource = :MQuant / :SSum * :DQuant; if (:RndQnt = 1) then DQuant = Cast(:DQuant as Integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE-:DQUANT; insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(Gen_ID(GddDt_ID, 1), :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); end end end end end Update DgvDt set Summa=Summa where ID=:DgvDtID; /* себестоимость изделия */ Execute procedure WorkZ_DgvKtReCalc(:DgvKtID) Returning_Values :DgvKtID; end^ ALTER PROCEDURE WORKZ_DGVDT_REFRESH_ALL ( ZID INTEGER, USERNAME VARCHAR(20)) AS declare variable DGVDTID integer; declare variable DGVKTID integer; declare variable EQUSE integer; declare variable OPTIONS integer; declare variable EQUSEPARALLEL integer; declare variable GDDKTID integer; begin for select KK.ID, DD.ID from DgvKt KK join DgvDt DD on DD.ID=KK.DgvKey join WorkZakaz Z on Z.ID = KK.ZID where KK.ZID=:ZID and KK.Typ=4 into :DgvKtID, :DgvDtID do begin delete from GddDt where DgvKey = :DGvDtID; end for select KK.ID, DD.ID, Z.EqUse, Z.Options from DgvKt KK join DgvDt DD on DD.ID=KK.DgvKey join WorkZakaz Z on Z.ID = KK.ZID where KK.ZID=:ZID and KK.Typ=4 into :DgvKtID, :DgvDtID, :EqUse, :Options do begin EqUseParallel = 0; if (BIN_AND(Options, 16) <> 0) then EqUseParallel = 1; if (:EqUse = 1) then begin if (:EqUseParallel = 1) then begin for select GddKtID from WorkZ_DgvDt_Select_P(:DgvKtID, :DGvDtID, :UserName) into :GddKtID do begin GddKtID = :GddKtID; end end else begin for select GddKtID from WorkZ_DgvDt_Select(:DgvKtID, :DGvDtID, :UserName) into :GddKtID do begin GddKtID = :GddKtID; end end end else begin execute Procedure WorkZ_DgvDt(:DgvKtID, :DgvDtID, :UserName); end end end^ ALTER PROCEDURE WORKZ_DGVDT_RESERV ( ZID INTEGER, STOR INTEGER, ADATE TIMESTAMP, USERID INTEGER, PF_ALLQNT INTEGER = 0) RETURNS ( ID INTEGER) AS declare variable GODSID integer; declare variable QUANTNORM double precision; declare variable QUANTRSV double precision; declare variable QUANTNEED double precision; declare variable QUANTCUR double precision; declare variable Q double precision; declare variable QDT double precision; declare variable DGVDTID integer; declare variable STORID integer; declare variable GDDKTID integer; declare variable HASOWNPF integer; begin if (:aDate is Null) then aDate = Cast(Current_Date as TimeStamp); DgvDtID = Null; select Z.stor from WorkZakaz Z where Z.ID=:ZID into :StorID; for select G.ID, Sum(S.Source+S.NormDelta) Quant from WorkZakaz Z join WorkZMst M on M.ZID=Z.ID join WorkZSlv S on S.MstID=M.ID and S.NoZReserv=0 join Goods G on G.ID=S.GodsID where Z.ID=:ZID Group by G.ID into :GodsID, :QuantNorm do begin select Sum(D.Quant) from dgvdt DD join GddDt D on D.DgvKey=DD.ID join GddKt K on K.ID=D.GddKey and K.GdsKey=:GodsID where DD.ZID=:ZID and DD.Typ=1 and DD.SubTyp=1 -- укоплектация заказа into :QuantRsv; QuantRsv = CoalEsce(:QuantRsv,0.0); QuantNeed = :QuantNorm - :QuantRsv; if (:QuantNeed < 0.0) then QuantNeed = 0.0; QuantCur = :QuantNeed; for select k.id, k.quant, CoalEsce(kk1.ID, 0) from GddKtQnt q join GddKt K on K.ID=Q.ID and K.GdsKey=:godsID join DgvKt KK on KK.ID=K.DgvKey and KK.DAT_ <= :aDate left join gddkt_srcktid(K.ID) ks on 0=0 left join gddkt k1 on k1.id=ks.ktid left join dgvkt kk1 on kk1.id=k1.dgvkey and kk1.ZID=:ZID and kk1.TYP=4 where q.Stor = :Stor order by KK.DAT_, KK.ID, K.ID into :GddKtID, :Q, :HasOwnPf do begin if ((:QuantCur > 0.0 and :Q > 0.0) or (:Pf_AllQnt <> 0 and :HasOwnPf <> 0)) then begin Qdt = :Q; if (:Pf_AllQnt <> 0 and :HasOwnPf <> 0) then begin -- списываем всю партию end else begin if (:Qdt > :QuantCur) then begin -- в партии большее количество чем необходимо Qdt = :QuantCur; QuantCur = 0.0; end else begin QuantCur = :QuantCur - :Qdt; end end if (:Qdt > 0.0) then begin if (:DgvDtID is Null) then begin DgvDtID = Gen_Id(dgvdt_id, 1); insert into DgvDt(id, Stor, StorID, Typ, SubTyp, DAT_, ZID, ProcNds, RealTyp,NdsTyp, UserName) values(:DgvDtID, :Stor, :StorID, 1, 1, :aDate, :ZID, (select s.ndsproc from storlist s where s.ID=:STOR), 0, 1, (select u.name from userlist u where ID=:USERID)); end -- DgvDt rec insert into GddDt(DgvKey, Quant, GddKey, ZID) values(:DgvDtID,:QDt, :GddKtID, :ZID); end end end end if (:DgvDtID is not Null) then begin update DgvDt set Out_Date = :aDate where ID=:DgvDtID; end ID = :DgvDtID; suspend; end^ ALTER PROCEDURE WORKZ_DGVDT_SELECT ( DGVKTID INTEGER, DGVDTID INTEGER, USERNAME VARCHAR(20)) RETURNS ( GDDKTID INTEGER, GDDDTID INTEGER, PARAMID INTEGER, EQUSE INTEGER, EQUSESMALL INTEGER, EQUSEMAIN INTEGER, EQUSENOZRESERV INTEGER, EQUSERECALCNORM INTEGER, EQUSEPARALLEL INTEGER, DQUANT DOUBLE PRECISION, DQ DOUBLE PRECISION, DSOURCE DOUBLE PRECISION, SIZEX DOUBLE PRECISION, GSIZEX DOUBLE PRECISION, FIXVAL INTEGER) AS declare variable ID integer; declare variable aDate TimeStamp; declare variable Nbr varchar(20); declare variable Stor1 Integer; declare variable Stor2 integer; declare variable NdsProc Double Precision; declare variable NdsTyp Integer; declare variable ZID integer; declare variable KID integer; declare variable ZMID integer; declare variable ZSID integer; declare variable MQUANT double precision; declare variable MQNT_ONE double precision; declare variable ScaleSize integer; declare variable CalcType integer; declare variable SQUANT double precision; declare variable SSOURCE double precision; declare variable QNT double precision; declare variable KSID Integer; declare variable KSQUANT Double Precision; declare variable Price Double Precision; declare variable NDS double precision; declare variable SGodsID integer; Declare variable RndQnt integer; declare variable SSum double precision; declare variable Dgv_DtID integer; declare variable Options integer; declare variable ParamName varchar(255); declare variable SizeY Double precision; declare variable SizeZ Double precision; declare variable GSizeY Double precision; declare variable GSizeZ Double precision; declare variable Main integer; declare variable aInpDate TimeStamp; -- option declare variable NoCheckDate integer; begin Select ID, DAT_, Nbr, Stor, StorID, UserName, ZID from DgvKt where ID=:DgvKtID into :ID, :aDate, :Nbr, :Stor1, :Stor2, :UserName, :ZID; if (:ID is null or :ZID is null) then exit; select CoalEsce(EqUse, 0), CoalEsce(Options, 0) from WorkZakaz where ID=:ZID into :EqUse, :Options; if (:EqUse = 0) then Options = 0; EqUseSmall = 0; EqUseMain = 0; EqUseNoZReserv = 0; EqUseRecalcNorm = 0; EqUseParallel = 0; NoCheckDate = 0; if (BIN_AND(:Options, 1) <> 0) then EqUseSmall = 1; if (BIN_AND(:Options, 2) <> 0) then EqUseMain = 1; if (BIN_AND(:Options, 4) <> 0) then EqUseNoZReserv = 1; if (BIN_AND(:Options, 8) <> 0) then EqUseRecalcNorm = 1; if (BIN_AND(:Options, 16) <> 0) then EqUseParallel = 1; if (BIN_AND(:Options, 32) <> 0) then NoCheckDate = 1; Select NdsProc, NdsTyp from StorList where ID=:Stor2 into :NdsProc, :NdsTyp; Dgv_DtID = Null; SELECT ID FROM DGVDT WHERE ID=:DgvDtID INTO :Dgv_DtID; if (:Dgv_DtID is Null) then begin Insert Into DgvDt(ID,Dat_, NBr, Out_Date, Typ, Stor, StorID, RealTyp, ProcNds, NdsTyp, DgvKey, ZID, UserName) Values(:DgvDtID, :aDate, :Nbr, :aDate, 8, :Stor2, :Stor1, 0, :NdsProc, :NdsTyp, :DgvKtID, :ZID,:UserName); end else begin DELETE FROM GddDt WHERE DgvKey = :DgvDtID; Update DGvDt Set UserName=:UserName where ID=:DgvDtID; end Update DgvKt Set DgvKey=:DgvDtID where ID=:DgvKtID; -- --> списание основных материалов -- выборка ассортимента эквивалентных материалов FOR SELECT K.ID, K.ZMID, K.SOURCE, K.Src_One, M.ScaleSize, WM.CalcType, S.ID, S.GodsID, S.QNT, S.QUANT, S.SOURCE, CoalEsce(S.RndQnt, 0), R.PARAMID, R.FIXVAL, V.STRVAL, S.SizeX, S.SizeY, S.SizeZ FROM GddKt K JOIN WorkZMst M on M.ID=K.ZMID JOIN WorkMain WM on WM.ID=M.MID JOIN WorkZSlv S ON S.MstID=M.ID and S.NoZReserv = 0 and COALESCE(S.TestOne, 0) = 0 JOIN GOODS G ON G.ID=S.godsid LEFT JOIN(GdsParamGdsRef R JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval ) ON R.goodsid=G.ID where K.DgvKey=:DgvKtID ORDER BY S.SizeX, S.SizeY, S.SizeZ, S.ID into :KID, :ZMID, :MQUANT, :MQNT_ONE, :ScaleSize, :CalcType, :ZSID, :SGodsID, :QNT, :SQUANT, :SSOURCE, :RndQnt, :ParamID, :FixVal, :ParamName, :SizeX, :SizeY, :SizeZ do begin if (:ScaleSize = 1 and :CalcType = 0) then SSOURCE = :MQNT_ONE * :QNT; else SSOURCE = :MQUANT * :QNT; SSum = :SSource; -- выборка "родных" материалов for select K.ID, K.Quant, K.Price, K.Nds, KK.DAT_, G.SizeX, G.SizeY, G.SizeZ from GddKt K, DgvKt KK, DgvDt DD, Goods G where K.ZID = :ZID and K.GdsKey=:SGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and G.ID = K.GdsKey and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds, :aInpDate, :GSizeX, :GSizeY, :GSizeZ do begin if (:SSOURCE > 0) then begin if (:KSQUANT > :SSOURCE) then DQUANT = :SSOURCE; else DQUANT = :KSQUANT; DQ = :DQUANT; DSource = :MQuant / :SSum * :DQuant * case when :EqUseReCalcNorm=1 and :GSizeX> 0 and :SizeX>0 then :GSizeX / :SizeX else 1 end; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE-:DQ; GddDtID = Gen_ID(GddDt_ID, 1); insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(:GddDtID, :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); GddKtID = :KID; suspend; end end end -- выборка параметрических эквивалентов if (:SSource > 0.0 and :ParamID is not Null and :FixVal is not Null) then begin for select K.ID, K.Quant, K.Price, K.Nds, KK.DAT_, G.SizeX, G.SizeY, G.SizeZ from DgvKt KK JOIN GddKt K ON K.DgvKey=KK.ID JOIN DgvDt DD ON DD.ID=KK.DgvKey and DD.SubTyp=1 JOIN Goods G ON G.ID=K.GdsKey JOIN GdsParamGdsRef R ON R.goodsid=G.ID AND R.ParamID=:ParamID and R.FixVal = :FixVal JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval where K.ZID=:ZID and K.Quant>0.0 and KK.Typ=1 and G.SizeX >= :SizeX and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by G.SizeX, KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds, :aInpDate, :GSizeX, :GSizeY, :GSizeZ do begin if (:SSOURCE > 0) then begin if (:EqUseRecalcNorm = 1 and :SizeX > 0.0 and :GSizeX > 0.0) then begin -- использовать пересчет норм if (:KSQUANT > :SSOURCE / :SizeX * :GSizeX) then begin DQUANT = :SSOURCE / :SizeX * :GSizeX; DQ = :SSOURCE; end else begin DQUANT = :KSQUANT; DQ = :KSQUANT / :GSizeX * :SizeX; end end else begin -- не пересчитывать нормы if (:KSQUANT > :SSOURCE) then begin DQUANT = :SSOURCE; DQ = :SSOURCE; end else begin DQUANT = :KSQUANT; DQ = :KSQUANT; end end DSource = :MQuant / :SSum * :DQ; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE-:DQ; GddDtID = Gen_ID(GddDt_ID, 1); insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(:GddDtID, :DgvDtID, :KSID, :DQuant, :Price, :Nds, :KID, :ZID, :DSource); GddKtID = :KID; suspend; end end end end -- дополнить материалами меньшего размера (если необходимо) if (:SSource > 0.0 and :ParamID is not Null and :FixVal is not Null and :EqUseSmall = 1) then begin for select K.ID, K.Quant, K.Price, K.Nds, KK.DAT_, G.SizeX, G.SizeY, G.SizeZ from DgvKt KK JOIN GddKt K ON K.DgvKey=KK.ID JOIN DgvDt DD ON DD.ID=KK.DgvKey and DD.SubTyp=1 JOIN Goods G ON G.ID=K.GdsKey JOIN GdsParamGdsRef R ON R.goodsid=G.ID AND R.ParamID=:ParamID and R.FixVal = :FixVal JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval where K.ZID=:ZID and K.Quant>0.0 and KK.Typ=1 and G.SizeX < :SizeX and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by G.SizeX DESC, KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds, :aInpDate, :GSizeX, :GSizeY, :GSizeZ do begin if (:SSOURCE > 0) then begin if (:EqUseRecalcNorm = 1 and :SizeX > 0.0) then begin if (:KSQUANT > :SSOURCE / :SizeX * :GSizeX) then begin DQUANT = :SSOURCE / :SizeX * :GSizeX; DQ = :SSOURCE; end else begin DQUANT = :KSQUANT; DQ = :KSQUANT; end end else begin if (:KSQUANT > :SSOURCE) then begin DQUANT = :SSOURCE; DQ = :SSOURCE; end else begin DQUANT = :KSQUANT; DQ = :KSQUANT; end end DSource = :MQuant / :SSum * :DQ; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE-:DQ; GddDtID = Gen_ID(GddDt_ID, 1); insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(:GddDtID, :DgvDtID, :KSID, :DQuant, :Price, :Nds, :KID, :ZID, :DSource); GddKtID = :KID; suspend; end end end end end -- <-- списание основных материалов -- --> списание вспомогательных материалов FOR SELECT K.ID, K.ZMID, K.SOURCE, K.Src_One, M.ScaleSize, WM.CalcType, S.ID, S.GodsID, S.QNT, S.QUANT, S.SOURCE, CoalEsce(S.RndQnt, 0), R.ParamID, R.FixVal, CoalEsce(G.SizeX, 0), CoalEsce(G.SizeY, 0), CoalEsce(G.SizeZ, 0) FROM GddKt K JOIN WorkZMst M on M.ID=K.ZMID join WorkMain WM on WM.ID=M.MID JOIN WorkZSlv S ON S.MstID=M.ID and S.NoZReserv=1 and CoalEsce(S.TestOne, 0) = 0 JOIN GOODS G ON G.ID=S.godsid LEFT JOIN(GdsParamGdsRef R JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval ) ON R.goodsid=G.ID where K.DgvKey=:DgvKtID into :KID, :ZMID, :MQUANT, :MQNT_ONE, :ScaleSize, :CalcType, :ZSID, :SGodsID, :QNT, :SQUANT, :SSOURCE, :RndQnt, :ParamID, :FixVal, :SizeX, :SizeY, :SizeZ do begin if (:ScaleSize = 1 and :CalcType = 0) then SSOURCE = :MQNT_ONE * :QNT; else SSOURCE = :MQUANT * :QNT; SSum = :SSource; for select 0 main, G.SizeX, G.SizeY, G.SizeZ, KK.DAT_, K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q JOIN GddKt K ON K.ID=Q.ID and K.GdsKey = :SGodsID and K.ZID is Null JOIN DgvKt KK ON KK.ID=K.DgvKey JOIN Goods G ON G.ID = K.GDSKEY and G.ID=:SGodsID and G.SizeX >= :SizeX where Q.Stor=:Stor2 and KK.DAT_ <= :aDate union all select 1 main, -G.SizeX, -G.SizeY, -G.SizeZ, KK.DAT_, K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q JOIN GddKt K ON K.ID=Q.ID and K.GdsKey = :SGodsID and K.ZID is Null JOIN DgvKt KK ON KK.ID=K.DgvKey JOIN Goods G ON G.ID = K.GDSKEY and G.ID=:SGodsID and (G.SizeX < :SizeX and :EqUseSmall = 1) where Q.Stor=:Stor2 and KK.DAT_ <= :aDate union all select 2 main, G.SizeX, G.SizeY, G.SizeZ, KK.DAT_, K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q JOIN GddKt K ON K.ID=Q.ID and K.ZID is Null JOIN DgvKt KK ON KK.ID=K.DgvKey JOIN Goods G ON G.ID = K.GDSKEY and G.ID <> :SGodsID and G.SizeX >= :SizeX JOIN GdsParamGdsRef R ON R.goodsid=G.ID AND R.ParamID=:ParamID and R.FixVal = :FixVal JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval where Q.Stor=:Stor2 and KK.DAT_ <= :aDate union all select 3 main, -G.SizeX, -G.SizeY, -G.SizeZ, KK.DAT_, K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q JOIN GddKt K ON K.ID=Q.ID and K.ZID is Null JOIN DgvKt KK ON KK.ID=K.DgvKey JOIN Goods G ON G.ID = K.GDSKEY and G.ID <> :SGodsID and (G.SizeX < :SizeX and :EqUseSmall = 1) JOIN GdsParamGdsRef R ON R.goodsid=G.ID AND R.ParamID=:ParamID and R.FixVal = :FixVal JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval where Q.Stor=:Stor2 and KK.DAT_ <= :aDate order by 1, 2, 3, 4, 5 into :Main, :GSizeX, :GSizeY, :GSizeZ, :aInpDate, :KSID, :KSQUANT, :Price, :Nds do begin GSizeX = Abs(:SizeX); GSizeY = Abs(:SizeY); GSizeZ = Abs(:SizeZ); if (:SSOURCE > 0) then begin if (:EqUseRecalcNorm = 1 and :SizeX > 0.0) then begin if (:KSQUANT > :SSOURCE / :SizeX * :GSizeX) then begin DQUANT = :SSOURCE / :SizeX * :GSizeX; DQ = :SSOURCE; end else begin DQUANT = :KSQUANT; DQ = :KSQUANT; end end else begin if (:KSQUANT > :SSOURCE) then begin DQUANT = :SSOURCE; DQ = :SSOURCE; end else begin DQUANT = :KSQUANT; DQ = :KSQUANT; end end DSource = :MQuant / :SSum * :DQ; if (:RndQnt = 1) then DQuant = Cast(:DQuant as Integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE-:DQ; GddDtID = Gen_ID(GddDt_ID, 1); insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(:GddDtID, :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); GddKtID = :KID; -- suspend; end end end end -- <-- списание вспомогательных материалов Update DgvDt set Summa=Summa where ID=:DgvDtID; Execute procedure WorkZ_DgvKtReCalc(:DgvKtID) Returning_Values :DgvKtID; end^ ALTER PROCEDURE WORKZ_DGVDT_SELECT_P ( DGVKTID INTEGER, DGVDTID INTEGER, USERNAME VARCHAR(20)) RETURNS ( GDDKTID INTEGER, GDDDTID INTEGER, PARAMID INTEGER, FIXVAL INTEGER, EQUSE INTEGER, EQUSESMALL INTEGER, EQUSEMAIN INTEGER, EQUSENOZRESERV INTEGER, EQUSERECALCNORM INTEGER, EQUSEPARALLEL INTEGER, DQUANT DOUBLE PRECISION, DQ DOUBLE PRECISION, DSOURCE DOUBLE PRECISION, SIZEX DOUBLE PRECISION, GSIZEX DOUBLE PRECISION, SUMQUANT DOUBLE PRECISION, ZID INTEGER, SGODSID INTEGER, MQ DOUBLE PRECISION, MSUM DOUBLE PRECISION, QNT DOUBLE PRECISION, KSQUANT DOUBLE PRECISION, MULSIZE DOUBLE PRECISION, MUL DOUBLE PRECISION) AS declare variable ID integer; declare variable aDate TimeStamp; declare variable InpDate TimeStamp; declare variable aInpDate TimeStamp; declare variable Nbr varchar(20); declare variable Stor1 Integer; declare variable Stor2 integer; declare variable NdsProc Double Precision; declare variable NdsTyp Integer; declare variable KID integer; declare variable ZMID integer; declare variable ZSID integer; declare variable MQUANT double precision; declare variable MQNT_ONE double precision; declare variable ScaleSize integer; declare variable CalcType integer; declare variable SQUANT double precision; declare variable SSOURCE double precision; declare variable KSID Integer; declare variable Price Double Precision; declare variable NDS double precision; Declare variable RndQnt integer; declare variable SSum double precision; declare variable Dgv_DtID integer; declare variable Options integer; declare variable ParamName varchar(255); declare variable SizeY Double precision; declare variable SizeZ Double precision; declare variable GSizeY Double precision; declare variable GSizeZ Double precision; declare variable SQ double precision; declare variable SrcDgvKtID integer; declare variable Main integer; declare variable NoCheckDate integer; begin Select KK.ID, KK.DAT_, KK.Nbr, KK.Stor, KK.StorID, KK.UserName, KK.ZID, DD.ID from DgvKt KK left join DgvDt DD on DD.ID=KK.DgvKey where KK.ID=:DgvKtID into :ID, :aDate, :Nbr, :Stor1, :Stor2, :UserName, :ZID, :Dgv_DtID; if (:ID is null or :ZID is null) then exit; if (CoalEsce(:DgvDtID, 0) = 0) then DgvDtID = :Dgv_DtID; if (:DgvDtID is Null) then DgvDtID = Gen_ID(DgvDt_ID, 1); select CoalEsce(EqUse, 0), CoalEsce(Options, 0) from WorkZakaz where ID=:ZID into :EqUse, :Options; if (:EqUse = 0) then Options = 0; EqUseSmall = 0; EqUseMain = 0; EqUseNoZReserv = 0; EqUseRecalcNorm = 0; EqUseParallel = 0; NoCheckDate = 0; if (BIN_AND(:Options, 1) <> 0) then EqUseSmall = 1; if (BIN_AND(:Options, 2) <> 0) then EqUseMain = 1; if (BIN_AND(:Options, 4) <> 0) then EqUseNoZReserv = 1; if (BIN_AND(:Options, 8) <> 0) then EqUseRecalcNorm = 1; if (BIN_AND(:Options, 16) <> 0) then EqUseParallel = 1; if (BIN_AND(:Options, 32) <> 0) then NoCheckDate = 1; Select NdsProc, NdsTyp from StorList where ID=:Stor2 into :NdsProc, :NdsTyp; Dgv_DtID = Null; SELECT ID FROM DGVDT WHERE ID=:DgvDtID INTO :Dgv_DtID; if (:Dgv_DtID is Null) then begin Insert Into DgvDt(ID,Dat_, NBr, Out_Date, Typ, Stor, StorID, RealTyp, ProcNds, NdsTyp, DgvKey, ZID, UserName) Values(:DgvDtID, :aDate, :Nbr, :aDate, 8, :Stor2, :Stor1, 0, :NdsProc, :NdsTyp, :DgvKtID, :ZID,:UserName); end else begin DELETE FROM GddDt WHERE DgvKey = :DgvDtID; Update DGvDt Set UserName=:UserName where ID=:DgvDtID; end Update DgvKt Set DgvKey=:DgvDtID where ID=:DgvKtID; -- --> списание основных материалов -- выборка ассортимента эквивалентных материалов FOR SELECT K.ID, K.ZMID, K.SOURCE, K.Src_One, M.ScaleSize, WM.CalcType, S.ID, S.GodsID, S.QNT, S.QUANT, S.SOURCE, CoalEsce(S.RndQnt, 0), R.PARAMID, R.FIXVAL, V.STRVAL, CoalEsce(S.SizeX, 0), CoalEsce(S.SizeY, 0), CoalEsce(S.SizeZ, 0) FROM GddKt K JOIN WorkZMst M on M.ID=K.ZMID join WorkMain WM on WM.ID=M.MID JOIN WorkZSlv S ON S.MstID=M.ID and S.NoZReserv = 0 and COALESCE(S.TestOne, 0) = 0 JOIN GOODS G ON G.ID=S.godsid LEFT JOIN(GdsParamGdsRef R JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval ) ON R.goodsid=G.ID where K.DgvKey=:DgvKtID ORDER BY M.ID, S.ID, S.SizeX, S.SizeY, S.SizeZ into :KID, :ZMID, :MQUANT, :MQNT_ONE, :ScaleSize, :CalcType, :ZSID, :SGodsID, :QNT, :SQUANT, :SSOURCE, :RndQnt, :ParamID, :FixVal, :ParamName, :SizeX, :SizeY, :SizeZ do begin if (:ScaleSize = 1 and :CalcType = 0) then SSOURCE = :MQNT_ONE * :QNT; else SSOURCE = :MQUANT * :QNT; SSum = :SSource; -- необходимо материала под указанное кол-во изделий -- суммарное кол-во текущего материала SumQuant = 0.0; MSum = 0.0; for select CoalEsce((K.Quant), 0.0), -- "родной" материал CoalEsce((K.Quant / (:Qnt)), 0.0), K.Quant, G.SizeX from GddKt K, DgvKt KK, DgvDt DD, Goods G where K.ZID = :ZID and K.GdsKey=:SGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and G.ID = K.GdsKey and (G.SizeX >= :SizeX or :EqUseSmall = 1) and (KK.DAT_ <= :aDate or :NoCheckDate = 1) union all select CoalEsce((K.Quant * case when :EqUseReCalcNorm=1 and G.SizeX> 0 and :SizeX>0 then G.SizeX / :SizeX else 1 end), 0.0), -- эквиваленты CoalEsce((K.Quant / (:Qnt * case when :EqUseReCalcNorm=1 and G.SizeX> 0 and :SizeX>0 then G.SizeX / :SizeX else 1 end)), 0.0), K.Quant, G.SizeX from DgvKt KK JOIN GddKt K ON K.DgvKey=KK.ID JOIN DgvDt DD ON DD.ID=KK.DgvKey and DD.SubTyp=1 JOIN Goods G ON G.ID=K.GdsKey AND G.ID <> :SGodsID JOIN GdsParamGdsRef R ON R.goodsid=G.ID AND R.ParamID=:ParamID and R.FixVal = :FixVal JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval where K.ZID=:ZID and K.Quant>0.0 and KK.Typ=1 and (G.SizeX >= :SizeX or :EqUseSmall = 1) and (KK.DAT_ <= :aDate or :NoCheckDate = 1) into :SQ, :MQ, :KSQuant, :GSizeX do begin SumQuant = :SumQuant + :SQ; MSum = :MSum + :MQ; suspend; end -- выборка "родных" материалов for select KK.DAT_, KK.ID, K.ID, K.Quant, K.Price, K.Nds, G.SizeX, G.SizeY, G.SizeZ from GddKt K, DgvKt KK, DgvDt DD, Goods G where K.ZID = :ZID and K.GdsKey=:SGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and G.ID = K.GdsKey and (KK.DAT_ <= :aDate or :NoCheckDate = 1) union all select KK.DAT_, KK.ID, K.ID, K.Quant, K.Price, K.Nds, G.SizeX, G.SizeY, G.SizeZ -- выборка эквивалентов from DgvKt KK JOIN GddKt K ON K.DgvKey=KK.ID JOIN DgvDt DD ON DD.ID=KK.DgvKey and DD.SubTyp=1 JOIN Goods G ON G.ID=K.GdsKey and G.ID <> :SGodsID JOIN GdsParamGdsRef R ON R.goodsid=G.ID AND R.ParamID=:ParamID and R.FixVal = :FixVal JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval where K.ZID=:ZID and K.Quant>0.0 and KK.Typ=1 and (G.SizeX >= :SizeX or :EqUseSmall = 1) and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by 1, 2, 3 into :aInpDate, :SrcDgvKtID, :KSID, :KSQUANT, :Price, :Nds, :GSizeX, :GSizeY, :GSizeZ do begin -- еще требуется добрать материал -- требуемое суммарное количество данного материала меньше кол-ва материала в наличии -- (типичная ситуация - комплектация с избытком) MulSize = case when :EqUseReCalcNorm=1 and :GSizeX > 0 and :SizeX > 0 then :GSizeX / :SizeX else 1 end; MQ = :KSQuant / (:Qnt * :MulSize); Mul = (:KSQuant / (:Qnt * :MulSize)) / :MSum; -- множитель DQuant = :MQuant * :Mul * (:Qnt * :MulSize); suspend; if (:DQuant > :KSQuant) then begin DQuant = :KSQuant; end DSource = :DQuant / (:Qnt * :MulSize); suspend; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin GddDtID = Gen_ID(GddDt_ID, 1); insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(:GddDtID, :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); GddKtID = :KID; end end end -- <-- списание основных материалов -- --> списание вспомогательных материалов FOR SELECT K.ID, K.ZMID, K.SOURCE, K.Src_One, M.ScaleSize, WM.CalcType, S.ID, S.GodsID, S.QNT, S.QUANT, S.SOURCE, CoalEsce(S.RndQnt, 0), R.ParamID, R.FixVal, CoalEsce(G.SizeX, 0), CoalEsce(G.SizeY, 0), CoalEsce(G.SizeZ, 0) FROM GddKt K JOIN WorkZMst M on M.ID=K.ZMID join WorkMain WM on WM.ID=M.MID JOIN WorkZSlv S ON S.MstID=M.ID and S.NoZReserv=1 and CoalEsce(S.TestOne, 0) = 0 JOIN GOODS G ON G.ID=S.godsid LEFT JOIN(GdsParamGdsRef R JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval ) ON R.goodsid=G.ID where K.DgvKey=:DgvKtID into :KID, :ZMID, :MQUANT, :MQNT_ONE, :ScaleSize, :CalcType, :ZSID, :SGodsID, :QNT, :SQUANT, :SSOURCE, :RndQnt, :ParamID, :FixVal, :SizeX, :SizeY, :SizeZ do begin if (:ScaleSize = 1 and :CalcType = 0) then SSOURCE = :MQNT_ONE * :QNT; else SSOURCE = :MQUANT * :QNT; SSum = :SSource; for select 0 main, G.SizeX, G.SizeY, G.SizeZ, KK.DAT_, K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q JOIN GddKt K ON K.ID=Q.ID and K.GdsKey = :SGodsID and K.ZID is Null JOIN DgvKt KK ON KK.ID=K.DgvKey JOIN Goods G ON G.ID = K.GDSKEY and G.ID=:SGodsID and G.SizeX >= :SizeX where Q.Stor=:Stor2 and KK.DAT_ <= :aDate union all select 1 main, -G.SizeX, -G.SizeY, -G.SizeZ, KK.DAT_, K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q JOIN GddKt K ON K.ID=Q.ID and K.GdsKey = :SGodsID and K.ZID is Null JOIN DgvKt KK ON KK.ID=K.DgvKey JOIN Goods G ON G.ID = K.GDSKEY and G.ID=:SGodsID and (G.SizeX < :SizeX and :EqUseSmall = 1) where Q.Stor=:Stor2 and KK.DAT_ <= :aDate union all select 2 main, G.SizeX, G.SizeY, G.SizeZ, KK.DAT_, K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q JOIN GddKt K ON K.ID=Q.ID and K.ZID is Null JOIN DgvKt KK ON KK.ID=K.DgvKey JOIN Goods G ON G.ID = K.GDSKEY and G.ID <> :SGodsID and G.SizeX >= :SizeX JOIN GdsParamGdsRef R ON R.goodsid=G.ID AND R.ParamID=:ParamID and R.FixVal = :FixVal JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval where Q.Stor=:Stor2 and KK.DAT_ <= :aDate union all select 3 main, -G.SizeX, -G.SizeY, -G.SizeZ, KK.DAT_, K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q JOIN GddKt K ON K.ID=Q.ID and K.ZID is Null JOIN DgvKt KK ON KK.ID=K.DgvKey JOIN Goods G ON G.ID = K.GDSKEY and G.ID <> :SGodsID and (G.SizeX < :SizeX and :EqUseSmall = 1) JOIN GdsParamGdsRef R ON R.goodsid=G.ID AND R.ParamID=:ParamID and R.FixVal = :FixVal JOIN GdsParamPrm P ON P.ID = R.paramid AND P.typ = 4 JOIN GdsParamVal V ON V.paramid = P.ID AND V.id=R.fixval where Q.Stor=:Stor2 and KK.DAT_ <= :aDate order by 1, 2, 3, 4, 5 into :Main, :GSizeX, :GSizeY, :GSizeZ, :aInpDate, :KSID, :KSQUANT, :Price, :Nds do begin GSizeX = Abs(:SizeX); GSizeY = Abs(:SizeY); GSizeZ = Abs(:SizeZ); if (:SSOURCE > 0) then begin if (:EqUseRecalcNorm = 1 and :SizeX > 0.0) then begin if (:KSQUANT > :SSOURCE / :SizeX * :GSizeX) then begin DQUANT = :SSOURCE / :SizeX * :GSizeX; DQ = :SSOURCE; end else begin DQUANT = :KSQUANT; DQ = :KSQUANT; end end else begin if (:KSQUANT > :SSOURCE) then begin DQUANT = :SSOURCE; DQ = :SSOURCE; end else begin DQUANT = :KSQUANT; DQ = :KSQUANT; end end DSource = :MQuant / :SSum * :DQ; if (:RndQnt = 1) then DQuant = Cast(:DQuant as Integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE-:DQ; GddDtID = Gen_ID(GddDt_ID, 1); insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(:GddDtID, :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); GddKtID = :KID; -- suspend; end end end end -- <-- списание вспомогательных материалов Update DgvDt set Summa=Summa where ID=:DgvDtID; Execute procedure WorkZ_DgvKtReCalc(:DgvKtID) Returning_Values :DgvKtID; end^ ALTER PROCEDURE WORKZ_DGVKTRECALC ( ID INTEGER) RETURNS ( KID INTEGER) AS Declare Variable DKtID integer; Declare Variable MKtID integer; Declare Variable NdsProc Double Precision; Declare Variable Stor integer; Declare Variable mPrice Double Precision; Declare Variable mQuant Double Precision; Declare Variable mNds Double Precision; Declare variable kPrice double precision; Declare variable kNds double precision; Declare variable kPSum double precision; Declare variable kNSum double precision; Declare Variable DtID integer; Declare Variable KSource double precision; Declare Variable KSrcOne double precision; Declare Variable DQuant double precision; Declare Variable DQntOne double precision; begin for select KK.ID, KK.Stor, S.NdsProc from DgvKt KK, StorList S where KK.ID=:ID and S.ID=KK.Stor into :DKtID, :Stor, :NdsProc do begin KID = :DKtID; if (:NdsProc is Null) then NdsProc = 20.0; for Select ID, Source from GddKt where DgvKey=:DKtID into :MKtID, :mQuant do begin for Select D.ID, K.Source, K.Src_One, D.Quant from GddDt D, GddKt K where D.ZkID=:MKtID and K.ID=D.GddKey into :DtID, :KSource, :KSrcOne, :DQuant do begin DQntOne = 0.0; if (:KSrcOne <> 0.0 and :KSource <> 0.0) then Begin DQntOne = :KSrcOne * :DQuant / :KSource; Update GddDt Set Qnt_One = :DQntOne where ID = :DtID and Qnt_One <> :DQntOne; end end /* себестоимость списанных материалов */ Select Sum(D.Price*D.Quant), Sum(D.Nds*D.Quant), Sum(D.Quant*K.kPrice), Sum(D.Quant*K.kNds) from GddDt D, GddKt K where D.ZKID=:MKtID and K.ID=D.GddKey into :mPrice, :mNds, :kPSum, :kNSum; if (:mPrice is Null) then mPrice = 0.0; if (:mNds is Null) then mNds = 0.0; mPrice = :mPrice-:mNds; mNds = :mPrice * :NdsProc / Cast(100.0 as double precision); if (:mQuant <> 0.0) then begin mPrice = :mPrice / :mQuant; mNds = :mNds / :mQuant; end kPrice = 0.0; kNds = 0.0; if (:mQuant <> 0.0) then begin kPrice = :kPSum / :mQuant; kNds = :kNSum / :mQuant; end mPrice = :mPrice + :mNds; Update GddKt set Price = :mPrice, Nds = :mNds, TPrice = :mPrice, TNds = :mNds, KPrice = :kPrice, KNds = :kNds where ID=:MKtID and (Price <>:mPrice or Nds <>:mNds or TPrice<>:mPrice or TNds<>:mNds or kPrice<>:kPrice or kNds<>:kNds or Price is Null or TPrice is Null or kPrice is Null); end Update DgvKt set Summa = Summa where ID=:DKtID; end suspend; end^ ALTER PROCEDURE WORKZ_DIFF ( STORID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( ZID INTEGER, MSTID INTEGER, KQUANT DOUBLE PRECISION, MQUANT DOUBLE PRECISION, GDDKTID INTEGER, SGODSID INTEGER, IX INTEGER) AS -- ID основного материала declare variable GodsID integer; -- ID материала-эквивалента declare variable RefGodsID integer; -- ID изделия в справочнике изделий declare variable MID integer; declare variable MQ double precision; declare variable MCount integer; begin for select Z.ID, M.ID, M.MID from WorkZakaz Z, WorkZMst M where Z.stor = :StorID and Z.DAT_ >= :BDATE and Z.DAT_ <= :EDATE and Z.ZTrash = 1 and M.ZID = Z.ID into :ZID, :MSTID, :MID do begin for select ID, CoalEsce(K.Source, 0.0) from GddKt K where K.ZMID = :MstID into :GddKtID, :KQuant do begin ix = 0; for select L.GODSID from WorkLink L Join WorkZSlv S on S.mstid = :MSTID and S.lid = L.ID and CoalEsce(S.testone, 0) <> 1 where L.Owner = :MID group by L.GodsID into :GodsID do begin SGodsID = :GodsID; select CoalEsce(Count(*), 0) from WorkLink L Join WorkZSlv S on S.mstid = : MSTID and S.lid = L.ID and CoalEsce(S.testone, 0) <> 1 where L.Owner = :MID and L.GodsID = :GodsID into :MCount; MQ = 0.0; MQuant = 0.0; -- кол-во изделий по основному материалу Select CoalEsce(Sum(D.Source), 0.0) from GddDt D, GddKt K where D.ZKID = :GddKtID and K.ID=D.GddKey and K.GdsKey = :GodsID and D.GddID is Null into :MQ; MQuant = :MQuant + :MQ; ix = :ix + 1; -- suspend; -- количество изделий по эквивалентам for select L1.GodsID from WorkLink L, WorkHbLn L1 where L.Owner = :MID and L.GodsID = :GodsID and L1.RefID = L.ID into :RefGodsID do begin Select CoalEsce(Sum(D.Source), 0.0) from GddDt D, GddKt K where D.ZKID = :GddKtID and K.ID=D.GddKey and K.GdsKey = :RefGodsID and D.GddID is Null into :MQ; MQuant = :MQuant + :MQ; end ix = -1; MQuant = :MQuant / :MCount; if (Abs(:KQuant-:MQuant) > 1.0e-5) then suspend; end end end end^ ALTER PROCEDURE WORKZ_DTL_MSTRECS ( ID INTEGER) RETURNS ( PARENTID INTEGER) AS declare variable mid integer; declare variable m1id integer; declare variable did integer; begin for select mstid, dtlid from WorkZRef where DtlID=:ID into :mid, :did do begin ParentID = :MID; suspend; for select ParentID from WORKZ_DTL_MSTRECS(:MID) into :m1ID do begin parentid = :m1ID; suspend; end end end^ ALTER PROCEDURE WORKZ_EQ_AVG ( ZID INTEGER, ADATE TIMESTAMP, NOCHECKDATE INTEGER, DGVDTID INTEGER, MQUANT DOUBLE PRECISION, SSOURCE DOUBLE PRECISION, MID INTEGER, ZSID INTEGER, ZKID INTEGER) AS -- ID материала (GOODS) declare variable SGODSID integer; declare variable Q double precision; -- всего - в наличии declare variable QSum double precision; -- всего - необходимо списать по норме declare variable SSum double precision; declare variable LQGODSID integer; -- норма основного материала (по справочнику) declare variable LQUANT double precision; -- норма основного материала (в заказе) declare variable LQNT double precision; -- норма эквивалента declare variable LQQUANT double precision; declare variable SQnt double precision; declare variable KSID integer; declare variable KSQuant double precision; declare variable Price double precision; declare variable Nds double precision; declare variable DQuant double precision; declare variable RndQnt integer; declare variable DSource double precision; begin select GodsID, Qnt, CoalEsce(RndQnt, 0) from WorkZSlv where ID = :ZSID into :SGodsID, :LQNT, :RndQnt; QSum = 0.0; -- количество основного материала select CoalEsce(Sum(K.Quant), 0.0) from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey = :SGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) into :Q; QSum = :QSum + :Q; -- количество эквивалентов for select lq.godsid, l.quant, lq.quant from worklink l join goods g on g.id = l.godsid join workhbln lq on lq.refid = l.id join goods gq on gq.id = lq.godsid where l.owner = :MID and l.godsid = :SGodsID and (L.TestOne = 0 or L.TestOne is Null) order by lq.priority into :LQGODSID, :LQUANT, :LQQUANT do begin if (:LQUANT = 0) then LQUANT = 1.0; if (:LQQUANT = 0) then LQQUANT = 1.0; select CoalEsce(Sum(K.Quant), 0.0) from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey = :LQGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) into :Q; Q = :Q / :LQQUANT * :LQUANT; QSum = :QSum + :Q; end SSum = :SSource; -- списание основного материала select CoalEsce(Sum(K.Quant), 0.0) from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey = :SGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) into :Q; -- наличие основного материала if (:QSum = 0.0) then SQnt = 0.0; else SQnt = :Q / :QSum * :SSum; -- списываемое количество for select K.ID, K.Quant, K.Price, K.Nds from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey=:SGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds do begin if (:SQnt > 0.0) then begin if (:KSQUANT > :SQnt) then DQuant = :SQnt; else DQuant = :KSQUANT; if (:DQuant <> 0) then begin DSource = :MQuant / :SSum * :DQuant; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SQnt = :SQnt - :DQuant; insert Into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(Gen_ID(GddDt_ID, 1), :DgvDtID, :KSID, :DQuant, :Price, :Nds, :ZKID, :ZID, :DSource); end end end end -- списание эквивалентов for select lq.godsid, l.quant, lq.quant from worklink l join goods g on g.id = l.godsid join workhbln lq on lq.refid = l.id join goods gq on gq.id = lq.godsid where l.owner = :MID and l.godsid = :SGodsID and (L.TestOne = 0 or L.TestOne is Null) order by lq.priority into :LQGODSID, :LQUANT, :LQQUANT do begin if (:LQUANT = 0) then LQUANT = 1.0; if (:LQQUANT = 0) then LQQUANT = 1.0; select CoalEsce(Sum(K.Quant), 0.0) from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey = :LQGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) into :Q; if (:QSum = 0.0) then SQnt = 0.0; else SQnt = :Q / :QSum * :SSum; for select K.ID, K.Quant, K.Price, K.Nds from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey=:LQGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds do begin if (:SQnt > 0) then begin if (:KSQUANT > :SQnt) then -- избыток материала DQuant = :SQnt; else DQUANT = :KSQUANT; if (:DQuant <> 0) then begin DSource = :MQuant / :SSum * :DQuant / :LQQuant * :LQuant; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SQnt = :SQnt - :DQUANT; insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(Gen_ID(GddDt_ID,1), :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :ZKID, :ZID, :DSource); end end end end end end^ ALTER PROCEDURE WORKZ_EQ_DGVDT ( DGVKTID INTEGER, DGVDTID INTEGER) AS declare variable ID integer; declare variable aDate TimeStamp; declare variable InpDate TimeStamp; declare variable aInpDate TimeStamp; declare variable Nbr varchar(20); declare variable Stor1 Integer; /* склад готовой продукции */ declare variable Stor2 integer; /* выпускающий изделия цех */ declare variable NdsProc Double Precision; declare variable UserName Varchar(20); declare variable NdsTyp Integer; declare variable ZID integer; /* ID заказа */ declare variable KID integer; /* ID изделия в приходе */ declare variable ZMID integer; /* ID изделия в заказе */ declare variable ZSID integer; /* комплектующие в заказе */ declare variable MQUANT double precision; /* кол-во изделий */ declare variable MQNT_ONE double precision; /* кол-во изделий */ declare variable ScaleSize integer; /* необходимое кол-ко комплектующих - по расчету */ declare variable SQUANT double precision; /* фактическое количество комплектующих */ declare variable SSOURCE double precision; /* норма */ declare variable QNT double precision; /* позиция комплектующих (укомплектация) */ declare variable KSID Integer; /* остаток комплектущих (укомплектация заказа) */ declare variable KSQUANT Double Precision; /* списываемое количество комплектующих */ declare variable DQUANT Double Precision; declare variable Price Double Precision; declare variable NDS double precision; /* себестоимость изделия */ declare variable SGodsID integer; -- ID изделия в справочнике declare variable MID integer; -- норма по основному материалу declare variable LQUANT double precision; -- норма по эквиваленту declare variable LQQUANT double precision; -- GODSID эквивалента declare variable LQGODSID integer; -- признак: пропорциональное распределение эквивалентов declare variable EQAVG integer; declare variable RndQnt integer; declare variable DSource double precision; declare variable SSum double precision; declare variable Options integer; declare variable NoCheckDate integer; begin -- накладная на оприходование изделий Select ID, DAT_, Nbr, Stor, StorID, UserName, ZID from DgvKt where ID=:DgvKtID into :ID, :aDate, :Nbr, :Stor1, :Stor2, :UserName, :ZID; if (:ID is null or :ZID is null) then exit; select EQAVG, Options from WorkZakaz where ID = :ZID into :EQAVG, :Options; Select NdsProc, NdsTyp from StorList where ID=:Stor2 into :NdsProc, :NdsTyp; NoCheckDate = 0; if (BIN_AND(:Options, 32) <> 0) then NoCheckDate = 1; -- расходная накладная на списание комплектующих insert into DgvDt(ID,Dat_, NBr, Out_Date, Typ, Stor, StorID, RealTyp, ProcNds, NdsTyp, DgvKey, ZID) values(:DgvDtID, :aDate, :Nbr, :aDate, 8, :Stor2, :Stor1, 0, :NdsProc, :NdsTyp, :DgvKtID, :ZID); update DgvKt Set DgvKey = :DgvDtID where ID = :DgvKtID; InpDate = Null; -- дата последнего прихода материалов в заказ -- оприходование изделие должно быть не раньше даты прихода /* оприходованые изделия */ for Select K.ID, K.ZMID, K.SOURCE, K.Src_One, M.ScaleSize, M.MID from GddKt K join WorkZMst M on M.ID=K.ZMID where K.DgvKey=:DgvKtID into :KID, :ZMID, :MQUANT, :MQNT_ONE, :ScaleSize, :MID do begin -- зарезервированные в заказе материалы for select ID, GodsID, QNT, QUANT, SOURCE, CoalEsce(RndQnt, 0) from WorkZSlv S -- комплектующие в заказе where MstID = :ZMID and NoZReserv=0 and (S.TestOne = 0 or S.TestOne is Null) order by ID into :ZSID, :SGodsID, :QNT, :SQUANT, :SSOURCE, :RndQnt do begin if (:ScaleSize = 0) then SSOURCE = :MQUANT * :QNT; else SSOURCE = :MQNT_ONE * :QNT; SSum = :SSource; if (:EQAVG = 1) then begin -- пропорциональное списание материалов и эквивалентов qnt = :qnt; execute procedure WorkZ_Eq_Avg(:ZID, :aDate, :NoCheckDate, :DgvDtID, :MQUANT, :SSource, :MID, :ZSID, :KID); end else begin -- "последовательное" списание материалов и эквивалентов -- материалы в заказе (укоплектация заказа) for select K.ID, K.Quant, K.Price, K.Nds, KK.DAT_ from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey=:SGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds, :aInpDate do begin if (:SSOURCE > 0) then begin if (:KSQUANT > :SSOURCE) then DQUANT = :SSOURCE; else DQUANT = :KSQUANT; if (:DQuant <> 0) then begin DSource = :MQuant / :SSum * :DQuant; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE-:DQUANT; insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(Gen_ID(GddDt_ID, 1), :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); end end end end -- выборка эквивалентов if (:SSOURCE > 0) then begin for select lq.godsid, l.quant lquant, lq.quant from worklink l join goods g on g.id = l.godsid join workhbln lq on lq.refid = l.id join goods gq on gq.id = lq.godsid where l.owner = :MID and l.godsid = :SGodsID order by lq.priority into :LQGODSID, :LQUANT, :LQQUANT do begin if (:LQUANT = 0) then LQUANT = 1.0; if (:LQQUANT = 0) then LQQUANT = 1.0; for select K.ID, K.Quant, K.Price, K.Nds, KK.DAT_ from GddKt K, DgvKt KK, DgvDt DD where K.ZID = :ZID and K.GdsKey=:LQGodsID and K.Quant > 0.0 and KK.ID=K.DgvKey and KK.Typ=1 and DD.ID=KK.DgvKey and DD.SubTyp=1 and (KK.DAT_ <= :aDate or :NoCheckDate = 1) order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds, :aInpDate do begin if (:SSOURCE > 0) then begin if (:KSQUANT / :LQUANT * :LQQUANT > :SSOURCE) then -- избыток материала DQUANT = :SSOURCE / :LQUANT * :LQQUANT; else DQUANT = :KSQUANT; DSource = :MQuant / :SSum * :DQuant / :LQQuant * :LQuant; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE - :DQUANT / :LQQUANT * :LQUANT; Insert Into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) Values(Gen_ID(GddDt_ID,1), :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); end end end end end end -- EQAVG <> 1 end -- вспомогательные материалы - не зарезеревированные в заказе for Select ID, GodsID, QNT, QUANT, SOURCE, CoalEsce(RndQnt, 0) from WorkZSlv S -- комплектующие в заказе where MstID=:ZMID and NoZReserv = 1 and (S.TestOne = 0 or S.TestOne is Null) into :ZSID, :SGodsID, :QNT, :SQUANT, :SSOURCE, :RndQnt do begin if (:ScaleSize = 0) then SSOURCE = :MQUANT * :QNT; else SSOURCE = :MQNT_ONE * :QNT; SSum = :SSource; -- вспомогательные материалы в наличии в цехе for select K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor = :Stor2 and K.ID=Q.ID and K.GdsKey = :SGodsID and K.ZID is Null and KK.ID=K.DgvKey and KK.DAT_ <= :aDate order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds do begin if (:SSOURCE > 0) then begin if (:KSQUANT > :SSOURCE) then DQUANT = :SSOURCE; else DQUANT = :KSQUANT; DSource = :MQuant / :SSum * :DQuant; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE - :DQUANT; Insert Into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) Values(Gen_ID(GddDt_ID,1), :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); end end end if (:SSOURCE > 0) then begin -- эквиваленты - вспомогательные материалы for select lq.godsid, l.quant lquant, lq.quant from worklink l join goods g on g.id = l.godsid join workhbln lq on lq.refid = l.id join goods gq on gq.id = lq.godsid where l.owner = :MID and l.godsid = :SGodsID order by lq.priority into :LQGODSID, :LQUANT, :LQQUANT do begin if (:LQUANT = 0) then LQUANT = 1.0; if (:LQQUANT = 0) then LQQUANT = 1.0; for select K.ID, K.Quant, K.Price, K.Nds from GddKtQnt Q, GddKt K, DgvKt KK where Q.Stor = :Stor2 and K.ID=Q.ID and K.GdsKey = :LQGodsID and K.ZID is Null and KK.ID=K.DgvKey and KK.DAT_ <= :aDate order by KK.DAT_, KK.ID, K.ID into :KSID, :KSQUANT, :Price, :Nds do begin if (:SSOURCE > 0) then begin if (:KSQUANT / :LQUANT * :LQQUANT > :SSOURCE) then DQUANT = :SSOURCE / :LQUANT * :LQQUANT; else DQUANT = :KSQUANT; DSource = :MQuant / :SSum * :DQuant / :LQQUANT * :LQUANT; if (:RndQnt = 1) then DQuant = Cast(:DQuant as integer); if (:DQuant <> 0.0) then begin SSOURCE = :SSOURCE - :DQUANT / :LQQUANT * :LQUANT; insert into GddDt(ID, DgvKey, GddKey, Quant, Price, Nds, ZKID, ZID, Source) values(Gen_ID(GddDt_ID,1), :DgvDtID, :KSID, :DQUANT, :Price, :Nds, :KID, :ZID, :DSource); end end end end end end end update DgvDt set Summa=Summa where ID=:DgvDtID; -- себестоимость изделия execute procedure WorkZ_DgvKtReCalc(:DgvKtID) returning_values :DgvKtID; end^ ALTER PROCEDURE WORKZ_GROUPBYGOODS ( ZID INTEGER) RETURNS ( GODSID INTEGER, NOZRESERV INTEGER) AS begin /* for select S.GodsID, S.NoZReserv from WorkZakaz Z, WorkZMst M, WorkZSlv S where Z.ID=:ZID and M.ZID=Z.ID and S.MstID=M.ID Group by S.GodsID, S.NoZReserv into :GodsID, :NoZReserv do begin Suspend; end */ NoZReserv = Null; -- нормы в заказе for select distinct S.GodsID from WorkZMst M, WorkZSlv S where M.ZID=:ZID and S.MstID=M.ID union -- эквиваленты select distinct Eq.GodsID from WorkZMst M, WorkMain M1, WorkLink L, WorkHbLn Eq where M.ZID = :ZID and M1.ID = M.MID and L.Owner = M1.ID and Eq.RefID = L.ID union -- резервирование материалов select K.GdsKey from DgvDt DD, GddDt D, GddKt K where DD.ZID = :ZID and DD.Typ = 1 and DD.SubTyp = 1 and D.DgvKey = DD.ID and K.ID = D.GddKey union -- списание матеалов select K.GdsKey from DgvDt DD, GddDt D, GddKt K where DD.ZID = :ZID and DD.Typ = 8 and D.DgvKey = DD.ID and K.ID = D.GddKey into :GodsID do begin Suspend; end end^ ALTER PROCEDURE WORKZ_LGOODSSELECT ( BDATE TIMESTAMP, EDATE TIMESTAMP, STOR INTEGER) RETURNS ( KID INTEGER, GDSKEY INTEGER, SRCQNT DOUBLE PRECISION, RTNQNT DOUBLE PRECISION, QNTQNT DOUBLE PRECISION, DLTQNT DOUBLE PRECISION) AS declare variable ZID integer; declare variable DTYP integer; declare variable SubTyp integer; declare variable GddID integer; declare variable Qnt double precision; begin for select Z.ID from WorkZakaz Z where Z.eDate >= :BDATE and Z.eDate <= :EDATE and Z.Stor=:Stor into :ZID do begin SrcQnt = 0.0; RtnQnt = 0.0; QntQnt = 0.0; DltQnt = 0.0; for Select K.ID, K.GdsKey, K.Source from DgvKt KK, DgvDt DD, gddkt K where KK.ZID=:ZID and KK.Typ=1 and DD.ID=KK.dgvkey and DD.Typ=1 and DD.SubTyp=1 and K.DgvKey=KK.ID into :KID, :GdsKey, :SrcQnt do begin RtnQnt = 0.0; QntQnt = 0.0; DltQnt = 0.0; Suspend; for Select D.Quant, D.GddID, DD.Typ, DD.SubTyp from GddDt D, DgvDt DD where D.GddKey = :KID and DD.ID=D.DgvKey into :Qnt, :GddID, :DTYP, :SubTyp do begin SrcQnt = 0.0; RtnQnt = 0.0; QntQnt = 0.0; DltQnt = 0.0; if (:DTyp=1 and :SubTyp=2) then RtnQnt = :Qnt; if (:DTyp=8 and :GddID is Null) then QntQnt = :Qnt; if (:DTyp=8 and :gddid is not Null) then DltQnt = :Qnt; suspend; end end end end^ ALTER PROCEDURE WORKZ_MAKEDETAILS ( IDS VARCHAR(1024), ADATE TIMESTAMP, NBR_SUF VARCHAR(32), OPTIONS INTEGER, USERNAME VARCHAR(20)) AS declare variable ZID integer; declare variable ZMID integer; declare variable MID integer; declare variable ZSID integer; declare variable STOR integer; declare variable GODSID integer; declare variable OURORGNID integer; declare variable SQUANT double precision; declare variable MSQUANT double precision; declare variable SQNTONE double precision; declare variable Z_ID integer; /* new zakaz */ declare variable MST_ID integer; /* new zakaz */ declare variable OPT_SAVENBR integer; declare variable OPT_NOGROUP integer; declare variable OPT_QNTONE integer; declare variable ZNBR DMN_NBR; begin Opt_SaveNbr = 0; Opt_NoGroup = 0; Opt_QntOne = 0; if (Bin_And(Options, 01) != 0) then Opt_SaveNbr = 1; if (Bin_And(Options, 02) != 0) then Opt_NoGroup = 1; if (Bin_And(Options, 04) != 0) then Opt_QntOne = 1; if (:Opt_NoGroup=0) then begin -- группировать по изделиям for select mn.StorID, z.OurOrgnID from WorkZakaz z JOIN WorkZMst M on M.zid = z.ID JOIN WorkZSlv S on S.mstid=M.ID JOIN WorkMain mn on mn.GodsID=S.GodsID where z.ztrash = 0 and POSITION(('|' || z.ID || '|') in :Ids) > 0 Group by mn.StorID, z.ourorgnid INTO :Stor, :OurOrgnID do begin Z_ID = Gen_ID(WorkZakaz_ID, 1); if (:Opt_SaveNbr = 1) then begin SELECT FIRST 1 Z.Nbr FROM WorkZakaz z where z.ztrash = 0 and POSITION(('|' || z.ID || '|') in :Ids) > 0 into :ZNBr; ZNBr = :ZNbr || :Nbr_Suf; end else begin ZNbr = :Z_ID || :Nbr_Suf; end insert into WorkZakaz(ID, OurOrgnID, DAT_, NBR, STOR, UserName) Values(:Z_ID, :OurOrgnID, :aDate, :ZNbr, :Stor, :UserName); for select mn.id, Sum(S.Source), Sum(S.Qnt_One), Sum(M.source*S.Qnt_One) from WorkZakaz z JOIN WorkZMst M on M.zid = z.ID JOIN WorkZSlv S on S.mstid=M.ID JOIN WorkMain mn on mn.GodsID=S.GodsID where z.ztrash = 0 and POSITION(('|' || z.ID || '|') in :Ids) > 0 AND z.OurOrgnID=:OurOrgnID and CoalEsce(mn.StorID, 0) = CoalEsce(:Stor, 0) Group by mn.id INTO :MID, :SQuant, :SQntOne, :msquant do begin if (:Opt_QntOne=1) then SQntOne = :msquant; Mst_ID = Gen_ID(WorkZMst_ID, 1); insert into WorkZMst(ID, ZID, MID, GodsID, Source, Src_One, UserName, NW, GW, Stor, ScaleSize, SizeX, SizeY, SizeZ) select :Mst_ID, :Z_ID, :MID, m.GodsID, :SQuant, :SQntOne, :UserName, m.NW, m.GW, m.StorID, m.ScaleSize, m.SizeX, m.SizeY, m.SizeZ from WorkMain M where ID=:MID; insert into WorkZRef(MstID, DtlID) select S.ID, :Mst_ID from WorkZakaz z JOIN WorkZMst M on M.zid = z.ID JOIN WorkZSlv S on S.mstid=M.ID JOIN WorkMain mn on mn.GodsID=S.GodsID where z.ztrash = 0 and POSITION(('|' || z.ID || '|') in :Ids) > 0 AND z.OurOrgnID=:OurOrgnID and CoalEsce(mn.StorID, 0) = CoalEsce(:Stor, 0) AND mn.ID=:MID Group by S.ID; end end end if (:Opt_NoGroup=1) then begin -- не группировать по изделиям for select mn.StorID, z.OurOrgnID from WorkZakaz z JOIN WorkZMst M on M.zid = z.ID JOIN WorkZSlv S on S.mstid=M.ID JOIN WorkMain mn on mn.GodsID=S.GodsID where z.ztrash = 0 and POSITION(('|' || z.ID || '|') in :Ids) > 0 Group by mn.StorID, z.ourorgnid INTO :Stor, :OurOrgnID do begin Z_ID = Gen_ID(WorkZakaz_ID, 1); if (:Opt_SaveNbr = 1) then begin SELECT FIRST 1 Z.Nbr FROM WorkZakaz z where z.ztrash = 0 and POSITION(('|' || z.ID || '|') in :Ids) > 0 into :ZNBr; ZNBr = :ZNbr || :Nbr_Suf; end else begin ZNbr = :Z_ID || :Nbr_Suf; end insert into WorkZakaz(ID, OurOrgnID, DAT_, NBR, STOR, UserName) Values(:Z_ID, :OurOrgnID, :aDate, :ZNbr, :Stor, :UserName); for select M.ID, mn.ID, S.ID, Sum(S.Source), Sum(S.Qnt_One), M.source from WorkZakaz z JOIN WorkZMst M on M.zid = z.ID JOIN WorkZSlv S on S.mstid=M.ID JOIN WorkMain mn on mn.GodsID=S.GodsID where z.ztrash = 0 and POSITION(('|' || z.ID || '|') in :Ids) > 0 AND z.OurOrgnID=:OurOrgnID and CoalEsce(mn.StorID, 0) = CoalEsce(:Stor, 0) Group by M.ID, mn.id, S.ID, M.source INTO :ZmID, :MID, :ZsID, :SQuant, :SQntOne, :msquant do begin Mst_ID = Gen_ID(WorkZMst_ID, 1); if (:Opt_QntOne = 1) then SQntOne = :SQntOne*:msquant ; insert into WorkZMst(ID, ZID, MID, GodsID, Source, Src_One, UserName, NW, GW, Stor, ScaleSize, SizeX, SizeY, SizeZ) select :Mst_ID, :Z_ID, :MID, m.GodsID, :SQuant, :SQntOne, :UserName, m.NW, m.GW, m.StorID, m.ScaleSize, m.SizeX, m.SizeY, m.SizeZ from WorkMain M where ID=:MID; insert into WorkZRef(MstID, DtlID) Values(:ZsID, :Mst_ID); end end end end^ ALTER PROCEDURE WORKZ_MAKEDOCRTN ( ZID INTEGER, ADATE TIMESTAMP, USERNAME VARCHAR(20)) RETURNS ( DGVDTID INTEGER, DGVKTID INTEGER) AS Declare Variable GodsID integer; Declare Variable SizeX double precision; Declare Variable SizeY double precision; Declare Variable SizeZ double precision; Declare Variable Qnt_One double precision; Declare Variable Source Double Precision; Declare Variable Src_One Double Precision; -- расчетное значение списываемых отходов Declare Variable QntSum double precision; Declare Variable QntSumS double precision; Declare Variable QntSumF double precision; -- фактическое наличие Declare Variable Quant double precision; Declare Variable Quant_Sum double precision; Declare Variable Qnt double precision; Declare Variable QntS double precision; -- расчетное наличие - по площади Declare Variable QuantS double precision; Declare Variable KtID integer; Declare Variable Price double precision; Declare Variable Nds double precision; Declare Variable Stor1 integer; Declare Variable Stor2 integer; Declare Variable Nbr varchar(20); Declare Variable ProcNds double precision; Declare Variable SumPrs double precision; Declare Variable SumNds double precision; Declare Variable Prs1 double precision; Declare Variable Nds1 double precision; Declare Variable CID integer; Declare Variable DgvEmpty integer; declare variable MaterialTyp integer; begin Select Z.Stor, Z.InpStor2, Z.Nbr, S.NdsProc from WorkZakaz Z, StorList S where Z.ID=:ZID and S.ID=Z.Stor into :Stor1, :Stor2, :Nbr, :ProcNds; DgvDtID = Gen_ID(DgvDt_ID, 1); DgvKtID = Gen_ID(DgvKt_ID, 1); Insert into DgvDt (ID, Stor, StorID, DAT_, Nbr, Out_Date, Typ, SubTyp, ProcNds, RealTyp, NdsTyp, ZID, UserName) Values(:DgvDtID, :Stor1, :Stor2, :aDate, :Nbr, :aDate, 1, 2, :ProcNds, 0, 1, :ZID, :UserName); Insert into DgvKt (ID, DAT_, NBR, Stor, StorID, Typ, ZID, DgvKey, UserName) Values (:DgvKtID, :aDate, :Nbr, :Stor2, :Stor1, 1, :ZID, :DgvDtID, :UserName); -- в расходной накладной списываем общей массой по площади for Select C.GodsID, Case when G.MaterialTyp=3 then Sum(C.SizeX * C.SizeY * C.SizeZ / 1000.000 / 1000.000 / 1000.000 * C.Qnt_One) else Sum(C.SizeX * C.SizeY / 1000.000 / 1000.000 * C.Qnt_One) end, G.MaterialTyp from WorkZCutting C Join Goods G on G.ID=C.GodsID where C.ZID=:ZID and C.CutStorTyp=2 and C.Qnt_One > 0.0 and C.SizeX <> 0 and C.SizeY <> 0 and C.GddKey is Null and C.Deleted = 0 and C.Mark = 1 Group by C.GodsID, G.MaterialTyp -- площадь/объем материала в текущем обрезке into :GodsID, :QntSum, :MaterialTyp do begin SumPrs = 0.0; SumNds = 0.0; QntSumS = :QntSum; QntSumF = 0.0; select CoalEsce(sum(K.Quant),0.0) from GddKt K, DgvKt KK, DgvDt DD, GddKtQnt Q, Goods G where K.ZID=:ZID and K.GdsKey=:GodsID and Q.ID=K.ID and KK.ID=K.DgvKey and DD.ID=KK.DgvKey and DD.Typ=1 and DD.SubTyp=1 and G.ID=K.GdsKey and K.Qnt_One <> 0.0 and K.SizeX <> 0.0 and K.SizeY <> 0.0 and KK.DAT_ <= :aDate into :Quant_Sum; if (:Quant_Sum >= :QntSum) then begin for select K.ID, K.Source, K.Src_One, K.Qnt_One, K.SizeX, K.SizeY, K.SizeZ, K.Price, K.Nds, -- фактическое значение в кв.(куб.) м. - наличие K.Quant, -- расчетное значение в кв. м. (куб.м.) - наличие case when G.MaterialTyp=3 then K.Qnt_One*(K.SizeX * K.SizeY * K.SizeZ / 1000.000 / 1000.000 / 1000.000) else K.Qnt_One*(K.SizeX * K.SizeY / 1000.000 / 1000.000) end QuantS from GddKt K, DgvKt KK, DgvDt DD, GddKtQnt Q, Goods G where K.ZID=:ZID and K.GdsKey=:GodsID and Q.ID=K.ID and KK.ID=K.DgvKey and DD.ID=KK.DgvKey and DD.Typ=1 and DD.SubTyp=1 and G.ID=K.GdsKey and K.Qnt_One <> 0.0 and K.SizeX <> 0.0 and K.SizeY <> 0.0 and KK.DAT_ <= :aDate into :KtID, :Source, :Src_One, :Qnt_One, :SizeX, :SizeY, :SizeZ, :Price, :Nds, :Quant, -- фактическое кол-во :QuantS -- расчетное кол-во do begin QntSumF = :QntSumF + :Quant; if (:QntSum > 0.0) then begin QntS = :QntSum; if (QntS > :QuantS) then QntS = :QuantS; if (:QntS > 0.0) then begin Qnt = Quant * QntS / QuantS; end SumPrs = SumPrs + Qnt * Price; SumNds = SumNds + Qnt * Nds; Insert Into GddDt (ID, DgvKey, GdsKey, GddKey, Quant, Qnt_One, Price, Nds, PriceN) Values (Gen_ID(GddDt_ID, 1), :DgvDtID, :GodsID, :KtID, :Qnt, :Qnt_One * :QntS / :QuantS, 0.0, 0.0, 0.0); QntSum = :QntSum - :QntS; end end -- средняя цена обрезков из данного материала Prs1 = :SumPrs / :QntSumS; Nds1 = :SumNds / :QntSumS; -- в приходной накладной формируем по отдельным обрезкам if (:QntSumF > 0.0) then begin for Select C.ID, C.GodsID, C.SizeX, C.SizeY, C.SizeZ, C.Qnt_One, G.MaterialTyp from WorkZCutting C Join Goods G on G.ID=C.GodsID where C.ZID=:ZID and C.GodsID=:GodsID and C.CutStorTyp=2 and C.Qnt_One > 0 and C.SizeX <> 0 and C.SizeY <> 0 and C.GddKey is Null and C.Deleted = 0 and C.Mark = 1 into :CID, :GodsID, :SizeX, :SizeY, :SizeZ, :QntSum, : MaterialTyp do begin if (:MaterialTyp=3) then Quant = :SizeX * :SizeY * :SizeZ / 1000.000 / 1000.000 / 1000.000; else Quant = :SizeX * :SizeY / 1000.000 / 1000.000; Quant = :Quant * :QntSum; KtID = Gen_ID(GddKt_ID, 1); Insert Into GddKt (ID, DgvKey, GdsKey, Quant, Source, Qnt_One, Src_One, SizeX, SizeY, SizeZ, Price, Nds) Values(:KtID, :DgvKtID, :GodsID, :Quant, :Quant, :QntSum, :QntSum, :SizeX, :SizeY, :SizeZ, :Prs1, :Nds1); Update WorkZCutting Set GddKey = :KtID where ID=:CID; end end end end -- цикл по наименованиям материалов DgvEmpty = 0; -- списано ли что-нибудь - не пустая ли накладная Select 1 from DgvDt DD where DD.ID=:DgvDtID and not Exists(Select ID from GddDt where DgvKey=:DgvDtID) into :DgvEmpty; if (:DgvEmpty = 1) then begin delete from DgvKt where ID=:DgvKtID; Delete from DgvDt where ID=:DGvDtID; DgvDtID = Null; DgvKtID = Null; end else begin Update DgvDt Set DgvKey=:DgvKtID where ID=:DgvDtID; Update DgvKt Set DgvKey=:DgvDtID where ID=:DgvKtID; end suspend; end^ ALTER PROCEDURE WORKZ_NORMSELECT1 ( BDATE TIMESTAMP, EDATE TIMESTAMP, WSTORID INTEGER) RETURNS ( ZMGDSID INTEGER, ZSGDSID INTEGER, ZMQUANT DOUBLE PRECISION, ZSQUANT DOUBLE PRECISION, ZSTRQUANT DOUBLE PRECISION, ZSHBNORM DOUBLE PRECISION, ZSZKNORM DOUBLE PRECISION, ZSZKDELTA DOUBLE PRECISION) AS begin for select distinct K.GdsKey, K1.GdsKey from DgvKt KK join GddKt K on K.DgvKey = KK.ID join GddDt D on D.ZkID = K.ID left join GddKt K1 on K1.ID = D.GddKey where KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.StorID = :WStorID and KK.Typ = 4 into :ZmGdsID, :ZsGdsID do begin select CoalEsce(Sum(K.source), 0.0) from DgvKt KK join GddKt K on K.DgvKey = KK.ID and K.GdsKey = :ZmGdsID where KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.StorID = :WStorID and KK.Typ = 4 and (exists(Select D1.ID from GddDt D1, GddKt K1 where D1.ZkID = K.ID and K1.ID=D1.GddKey and K1.GdsKey = :ZsGdsID) ) into :ZmQuant; select CoalEsce(Sum(case when D.GddID is null then D.Quant else 0.0 end), 0.0), CoalEsce(Sum(case when D.GddID is not null then D.Quant else 0.0 end), 0.0) from DgvKt KK join GddKt K on K.DgvKey = KK.ID and K.GdsKey = :ZmGdsID join GddDt D on D.ZkID = K.ID join GddKt K1 on K1.ID = D.GddKey and K1.GdsKey = :ZsGdsID where KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.StorID = :WStorID and KK.Typ = 4 and (exists(Select D1.ID from GddDt D1, GddKt K1 where D1.ZkID = K.ID and K1.ID=D1.GddKey and K1.GdsKey = :ZsGdsID) ) into :ZsQuant, :ZsTrQuant; select CoalEsce(Sum(ZS.Qnt), 0.0), CoalEsce(Sum(K.Source * ZS.Qnt * ZS.kDelta), 0.0) from DgvKt KK join GddKt K on K.DgvKey = KK.ID and K.GdsKey = :ZmGdsID join WorkZMst ZM on ZM.ID = K.ZMID join WorkZSlv ZS on ZS.MstID = ZM.ID and not (ZS.TestOne = 1) and ZS.GodsID = :ZsGdsID where KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.StorID = :WStorID and KK.Typ = 4 and (exists(Select D1.ID from GddDt D1, GddKt K1 where D1.ZkID = K.ID and K1.ID=D1.GddKey and K1.GdsKey = :ZsGdsID) ) into :ZsZkNorm, :ZsZkDelta; select CoalEsce(Sum(L.Quant), 0.0) from DgvKt KK join GddKt K on K.DgvKey = KK.ID and K.GdsKey = :ZmGdsID join WorkZMst ZM on ZM.ID = K.ZMID join WorkZMst M on M.ID = ZM.MID join WorkLink L on L.Owner = M.ID and not (L.TestOne = 1) where KK.DAT_ >= :BDATE and KK.DAT_ <= :EDATE and KK.StorID = :WStorID and KK.Typ = 4 and (exists(Select D1.ID from GddDt D1, GddKt K1 where D1.ZkID = K.ID and K1.ID=D1.GddKey and K1.GdsKey = :ZsGdsID) ) into :ZsHbNorm; suspend; end end^ ALTER PROCEDURE WORKZ_TRASHADD ( ZID INTEGER) RETURNS ( ID INTEGER) AS Declare Variable GdsKey Integer; Declare Variable Quant Double Precision; Declare Variable DQnt Double Precision; Declare Variable D1Qnt Double Precision; Declare Variable KQnt Double Precision; Declare Variable RQnt Double Precision; Declare Variable MQnt Double Precision; Declare Variable GddDtID integer; Declare Variable GddKtID integer; Declare Variable Source Double Precision; Declare Variable Delta double precision; Declare Variable DeltaQnt double precision; Declare Variable GddKey integer; Declare Variable GddID integer; Declare Variable DgvKey Integer; Declare Variable ZKID integer; Declare Variable mPrice double precision; Declare Variable mNds double precision; begin Select ID from WorkZakaz where ID=:ZID into :ID; if (:ID is Null) then exit; /* удаляем позиции распределенной дельты в списании материалов */ /* по текущему заказу */ For select D.ID from DgvDt DD, GddDt D where DD.ZID=:ZID and DD.Typ=8 and D.DgvKey=DD.ID and D.GddID is not Null into :GddID do begin Delete from GddDt where ID=:GddID; end /* зарезервированное количество материалов */ /* цикл по наименованиям материалов */ for Select K.GdsKey, Sum(D.Quant) From DgvDt DD, GddDt D, GddKt K where DD.ZID=:ZID /* внутренние передачи - укомплектация заказа */ and DD.Typ=1 and DD.SubTyp = 1 and D.DgvKey = DD.ID and K.ID=D.GddKey Group by K.GdsKey into :GdsKey, :Source /* резерв */ do begin /* списание материалов текущего наименования */ MQnt = Null; RQnt = Null; Select Sum(D.Quant) from DgvDt DD, GddDt D, GddKt K where DD.ZID=:ZID and DD.Typ = 1 and DD.SubTyp = 2 and D.DgvKey=DD.ID and K.ID=D.GddKey and K.GdsKey+0 = :GdsKey into :RQnt; /* возвраты материалов текущего наименования */ Select Sum(D.Quant) from DgvDt DD, GddDt D, GddKt K where DD.ZID=:ZID and DD.Typ = 8 and D.DgvKey=DD.ID and D.GddID+0 is Null and K.ID=D.GddKey and K.GdsKey+0 = :GdsKey into :MQnt; /* списано в изделие материалов текущего наименования */ /* по всем изделиям */ if (:RQnt is Null) then RQnt = 0.0; if (:MQnt is Null) then MQnt = 0.0; Quant = :MQnt + :RQnt; /* отходы в целом по заказу материалов текущего наименования */ Delta = :Source-:Quant; if (:Delta <> 0.0 and :MQnt <> 0.0) then begin /* распределение отходов по позициям списанных материалов */ /* ушло в изделия - по позициям материалов */ for Select K.ID, K.Quant from DgvDt DD, DgvKt KK, GddKt K where DD.ZID=:ZID and DD.Typ=1 and DD.SubTyp=1 and KK.ID=DD.DgvKey and K.DgvKey=KK.ID and K.GdsKey+0=:GdsKey and K.Quant > 0.0 into :GddKtID, :KQnt do begin for Select D.ID, D.DgvKey, D.Quant, D.ZKID from DgvDt DD, GddDt D, GddKt K where DD.ZID=:ZID and DD.Typ = 8 and D.DgvKey=DD.ID and D.GddID+0 is Null and K.ID=D.GddKey and K.GdsKey+0=:GdsKey into :GddDtID, :DgvKey, :DQnt, /* списано в изделие */ :ZKID do begin /* D1Qnt = :Delta / :MQnt * :DQnt;*/ D1Qnt = :KQnt / :MQnt * :DQnt; if (:D1Qnt <> 0.0) then begin Insert Into GddDt (ID, DgvKey, GddKey, GddID, Quant, Price, Nds, ZKID) Select Gen_ID(GddDt_ID,1), :DgvKey, :GddKtID, :GddDtID, :D1Qnt, K.Price, K.Nds, :ZKID from GddKt K where ID=:GddKtID; end end end end end /* пересчет суммы накладных на списание */ update DgvDt set Summa=Summa where ZID=:ZID and Typ=8; /* пересчет себестоимости готовой продукции */ for Select ID from DgvKt where ZID=:ZID and Typ=4 into :DgvKey do begin execute procedure WorkZ_DgvKtReCalc(:DgvKey) Returning_Values :DgvKey; end Update WorkZakaz Z set Z.ZTrash=1, Z.eDate= (Select Max(KK.DAT_) from DgvKt KK where KK.ZID=Z.ID and KK.Typ=4) where Z.ID=:ZID; suspend; end^ ALTER PROCEDURE WORKZ_TRASHDEL ( ZID INTEGER) AS declare variable Z_ID integer; declare variable DgvKtID integer; declare variable DgvDtID integer; begin select ID from WorkZakaz where ID=:ZID into Z_ID; if (:Z_ID is Null) then exit; for Select ID from DgvDt DD where DD.ZID=:ZID and DD.Typ=8 into :DgvDtID do begin Delete from GddDt where DgvKey=:DgvDtID and GddID is not Null; Update DgvDt set Summa = Summa where ID=:DgvDtID; end for Select ID from DgvKt where ZID=:ZID and Typ=4 into :DgvKtID do begin Execute Procedure WorkZ_DgvKtReCalc (:DgvKtID) Returning_Values :DgvKtID; end Update WorkZakaz set ZTrash = 0, eDate = Null where ID=:ZID; Suspend; end^ ALTER PROCEDURE WORKZAKAZ_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(WorkZakaz_ID, 1); end^ ALTER PROCEDURE WORKZAKAZADDWR ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURORGNID INTEGER, STOR INTEGER, GDSPARAMID INTEGER, USERNAME VARCHAR(20), FORPF INTEGER = 0) RETURNS ( ZID INTEGER) AS declare variable TP integer; declare variable K integer; declare variable ZNBR varchar(10); declare variable DNBR varchar(10); declare variable MID integer; declare variable GODSID integer; declare variable WRGDSID integer; declare variable SOURCE double precision; declare variable LID integer; declare variable QNT double precision; declare variable LGKEY integer; declare variable MSTID integer; declare variable CDATE timestamp; BEGIN k=1; /*Дата производственных заказов*/ CDATE=:edate; dnbr=extract(DAY from (:cdate)); /*Отбираем изделия в заявках и группируем их по параметру №Тех.процесса*/ for select coalesce(p.intval,0) tp from workrequest w join workrequestgds wg on wg.wrid=w.id and wg.wmid is null join goods g on g.id=wg.godsid left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid where w.pdate >=:BDATE and w.pdate<=:EDATE and w.ourorgnid=:curorgnid and w.username=:username --группируем по пользователю заявки group by 1 into :tp do begin /*Формируем список заказов с изделиями по видам техпроцесса изделий*/ ZID= GEN_ID(WORKZAKAZ_ID,1); /*Номер производственного заказа Цифра Даты + номер по порядку с лид.нулями*/ znbr=dnbr||'/'||lpad(k,3,'0'); insert into workzakaz(id, dat_, nbr, ourorgnid, stor,username) values(:zid, :cdate, :znbr, :curorgnid, :stor, :username); k=k+1; for select wm.id mid, g.id godsid, wg.id WRGDSID, wg.quant source from workrequest w join workrequestgds wg on wg.wrid=w.id and wg.wmid is null join workmain wm on wm.godsid=wg.godsid join goods g on wg.godsid = g.id left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid where w.pdate >=:BDATE and w.pdate<=:EDATE and w.ourorgnid=:curorgnid and coalesce(p.intval,0)=:tp and w.username= :username -- только заявки текущего пользователя into :mid, :godsid, :wrgdsid, :source do begin MSTID= gen_id(WORKZMST_ID,1); insert into workzmst(ID, ZID, MID, GODSID, WRGDSID, STOR, SOURCE ) values (:mstid,:zid, :mid, :godsid, :wrgdsid, :stor, :source); end --Включить ПФ в заказ с основными изделиями if (:forpf=1) then begin for select w.id mid, sum(wl.quant* wm.source) source, wl.godsid from workzmst wm join worklink wl on wl.owner = wm.mid join workmain w on wl.godsid=w.godsid join goods g on wm.godsid = g.id left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid where wm.zid= :zid and coalesce(p.intval,0) in (1,5,6,15,32,37,25,39,41,45,46,36,42,44,18,60,62) and wl.godsid not in (12851,12681,12678,13050,12581,13630,12772,12629, 12657, 12826,13930,12010,10925,14552,15555,16139,16140) --начинки 12095,12094,- закваски group by 1,3 into :lid, :source, :godsid do begin MSTID= gen_id(WORKZMST_ID,1); insert into workzmst(ID, ZID, MID, GODSID, STOR, SOURCE ) values (:mstid, :zid, :lid, :godsid, :stor, :source); end end suspend; end --result='Расчет окончен'; --suspend; END^ ALTER PROCEDURE WORKZAKAZADDWR1 ( BDATE TIMESTAMP, EDATE TIMESTAMP, CURORGNID INTEGER, STOR INTEGER, GDSPARAMID INTEGER, USERNAME VARCHAR(20), FORPF INTEGER = 0) RETURNS ( ZID INTEGER) AS declare variable TP integer; declare variable K integer; declare variable ZNBR varchar(10); declare variable DNBR varchar(10); declare variable MID integer; declare variable GODSID integer; declare variable WRGDSID integer; declare variable SOURCE double precision; declare variable LID integer; declare variable QNT double precision; declare variable LGKEY integer; declare variable MSTID integer; declare variable CDATE timestamp; BEGIN k=1; /*Дата производственных заказов*/ CDATE=:edate; dnbr=extract(DAY from (:cdate)); /*Отбираем изделия в заявках и группируем их по параметру №Тех.процесса*/ for select coalesce(p.intval,0) tp from workrequest w join workrequestgds wg on wg.wrid=w.id and wg.wmid is null join goods g on g.id=wg.godsid left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid where w.pdate >=:BDATE and w.pdate<=:EDATE and w.ourorgnid=:curorgnid and w.username=:UserName --отбираем только заявки текущего пользователя group by 1 into :tp do begin /*Формируем список заказов с изделиями по видам техпроцесса изделий*/ ZID= GEN_ID(WORKZAKAZ_ID,1); /*Номер производственного заказа Цифра Даты + номер по порядку с лид.нулями*/ znbr=dnbr||'/'||lpad(k,3,'0'); insert into workzakaz(id, dat_, nbr, ourorgnid, stor, username) values(:zid, :cdate, :znbr, :curorgnid, :stor, :username); k=k+1; for select wm.id mid, g.id godsid, null WRGDSID, sum(wg.quant) source from workrequest w join workrequestgds wg on wg.wrid=w.id and wg.wmid is null join workmain wm on wm.godsid=wg.godsid join goods g on wg.godsid = g.id left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid where w.pdate >=:BDATE and w.pdate<=:EDATE and w.ourorgnid=:curorgnid and coalesce(p.intval,0)=:tp and w.username = :username --отбираем только заявки текущего пользователя group by 1,2,3 into :mid, :godsid, :wrgdsid, :source do begin MSTID= gen_id(WORKZMST_ID,1); insert into workzmst(ID, ZID, MID, GODSID, WRGDSID, STOR, SOURCE ) values (:mstid,:zid, :mid, :godsid, :wrgdsid, :stor, :source); end --Включить ПФ в заказ с основными изделиями if (:forpf=1) then begin for select w.id mid, sum(wl.quant* wm.source) source, wl.godsid from workzmst wm join worklink wl on wl.owner = wm.mid join workmain w on wl.godsid=w.godsid join goods g on wm.godsid = g.id left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid where wm.zid= :zid and coalesce(p.intval,0) in (1,5,6,15,16,18,32,37,25,39,41,45,46,36,42,44,60,62) and wl.godsid not in (12851,12681,12678,13050,12581,13630,12772,12629, 12657, 12826,13930,12010,10925,14552,15555,16139,16140) --начинки 12095,12094,- закваски group by 1,3 into :lid, :source, :godsid do begin MSTID= gen_id(WORKZMST_ID,1); insert into workzmst(ID, ZID, MID, GODSID, STOR, SOURCE ) values (:mstid, :zid, :lid, :godsid, :stor, :source); end end suspend; end --result='Расчет окончен'; --suspend; END^ ALTER PROCEDURE WORKZMAIN_DIFF ( ID INTEGER) RETURNS ( RESULT INTEGER) AS declare variable WorkMainID integer; declare variable Cnt1 integer; declare variable Cnt2 integer; begin Result = 0; select MID from WorkZMst where ID = :ID into :WorkMainID; if (not exists(Select ID from WorkMain where ID=:WorkMainID)) then begin /* если изделие не создано в справочнике... */ Result = 1; Suspend; exit; end if (not exists(Select ID from WorkLink where Owner=:WorkMainID) and (not exists(Select ID from WorkZSlv where MstID = :ID))) then begin /* если комплектующие отсутствуют... */ Suspend; exit; end Select Count(*) from WorkLink where Owner = :WorkMainID into :Cnt1; Select Count(*) from WorkZSlv where MstID = :ID into :Cnt2; if (:Cnt1 <> :Cnt2) then begin /* если различается кол-во позиций комплектующих */ Result = 1; Suspend; exit; end /* попозиционное сравнение */ /* ... */ end^ ALTER PROCEDURE WORKZMST_CALCSLV ( MID INTEGER) AS -- изделие declare variable MainID integer; -- модель declare variable ModelID integer; -- материал/деталь в заказе declare variable SID integer; -- материал / деталь в справочнике изделий declare variable LID integer; -- материал в модели declare variable MGID integer; declare variable ScaleSize integer; declare variable ScaleDelta integer; declare variable SizeX double precision; declare variable SizeY double precision; declare variable SizeZ double precision; declare variable DeltaX double precision; declare variable DeltaY double precision; declare variable DeltaZ double precision; declare variable ScaleX double precision; declare variable ScaleY double precision; declare variable ScaleZ double precision; declare variable ScaleDX double precision; declare variable ScaleDY double precision; declare variable ScaleDZ double precision; -- размеры материала в изделии declare variable SX double precision; declare variable SY double precision; declare variable SZ double precision; declare variable DX double precision; declare variable DY double precision; declare variable DZ double precision; -- размеры изделия declare variable MNSizeX double precision; declare variable MNSizeY double precision; declare variable MNSizeZ double precision; -- размеры модели declare variable CalcType integer; declare variable MDSizeX double precision; declare variable MDSizeY double precision; declare variable MDSizeZ double precision; declare variable KX double precision; declare variable KY double precision; declare variable KZ double precision; declare variable kNorm double precision; declare variable Rnd double precision; -- норма расхода материала declare variable Qnt double precision; -- расчетное (промасштабированное) кол-во материала declare variable Quant double precision; -- количество деталей в изделии declare variable Qnt_One double precision; declare variable Source double precision; -- кол-во изделий (шт.) declare variable Src_One double precision; begin Select MN.ID, MD.ID, M.ScaleSize, MN.CalcType, M.SizeX, M.SizeY, M.SizeZ, Md.SizeX, Md.SizeY, Md.SizeZ, M.Source, M.Src_One from WorkZMst M join WorkMain MN on MN.ID=M.MID left join WorkModel MD on MD.ID=MN.ModelID where M.ID=:MID into :MainID, :ModelID, :ScaleSize, :CalcType, :MnSizeX, :MnSizeY, :MnSizeZ, MdSizeX, :MdSizeY, :MdSizeZ, :Source, :Src_One; if (:MainID is Null) then exit; -- ? изделие масштабируется if (:ScaleSize=0) then exit; if (:CalcType <> 0) then begin -- авто-расчет количества по размерам update WorkZSlv set Source=Qnt * :Source where MstID=:MID and TestOne=0; end if (:CalcType = 0) then begin -- штучные изделия for select S.ID, L.ID, MG.ID, Mg.ScaleSize, Mg.ScaleDelta, L.Qnt_One, Mg.Quant, L.SizeX, L.SizeY, L.SizeZ, Mg.SizeX, Mg.SizeY, Mg.SizeZ, Mg.DeltaX, Mg.DeltaY, Mg.DeltaZ, Mg.ScaleX, Mg.ScaleY, Mg.ScaleZ, Mg.ScaleDX, Mg.ScaleDY, Mg.ScaleDZ, Mg.CalcType, Mg.Kx, Mg.Ky, Mg.Kz, Mg.kNorm, Mg.Qnt, Wg.Rnd from WorkZSlv S, WorkLink L, WorkModelGds MG, WorkGoods Wg where S.MstID = :MID and L.ID = S.LID and MG.ID = L.ModelGdsID and Wg.ID = Mg.WkGdsID into :SID, :LID, :MGID, :ScaleSize, :ScaleDelta, :Qnt_One, :Quant, :SX, :SY, :SZ, :SizeX, :SizeY, :SizeZ, :DeltaX, :DeltaY, :DeltaZ, :ScaleX, :ScaleY, :ScaleZ, :ScaleDX, :ScaleDY, :ScaleDZ, :CalcType, :Kx, :Ky, :Kz, :kNorm, :Qnt, :Rnd do begin if (:ScaleSize = 1) then begin if (:MdSizeX <> 0.0 and :ScaleX <> 0.0) then Sx = :SizeX * :MnSizeX / :MdSizeX * :ScaleX; if (:ScaleX = 0.0) then Sx = :SizeX; if (:MdSizeY <> 0.0 and :ScaleY <> 0.0) then Sy = :SizeY * :MnSizeY / :MdSizeY * :ScaleY; if (:ScaleY = 0.0) then Sy = :SizeY; if (:MdSizeZ <> 0.0 and :ScaleZ <> 0.0) then Sz = :SizeZ * :MnSizeZ / :MdSizeZ * :ScaleZ; if (:ScaleZ = 0.0) then Sz = :SizeZ; end else begin Sx = :SizeX; Sy = :SizeY; Sz = :SizeZ; end if (:ScaleDelta = 1) then begin if (:MdSizeX <> 0.0 and :ScaleDX <> 0.0) then Dx = :DeltaX * :MnSizeX / :MdSizeX * :ScaleDX; if (:ScaleDX = 0.0) then Dx = :DeltaX; if (:MdSizeY <> 0.0 and :ScaleDX <> 0.0) then Dy = :DeltaY * :MnSizeY / :MdSizeY * :ScaleDY; if (:ScaleDY = 0.0) then Dy = :DeltaY; if (:MdSizeZ <> 0.0 and :ScaleDZ <> 0.0) then Dz = :DeltaZ * :MnSizeZ / :MdSizeZ * :ScaleDZ; if (:ScaleDZ = 0.0) then Dz = :DeltaZ; end else begin Dx = :DeltaX; Dy = :DeltaY; Dz = :DeltaZ; end -- расчет количества по размерам на одну деталь Select Quant from WorkModelGds_CalcQuant (:Quant, :CalcType, :Sx, :Sy, :Sz, :Dx, :Dy, :Dz, :Kx, :Ky, :Kz, :kNorm, :Rnd, :Qnt) into :Quant; /* количество на все детали */ Quant = :Quant * :Qnt_One; /* размеры детали в изделии - с припусками */ Sx = :Sx + :Dx; Sy = :Sy + :Dy; Sz = :Sz + :Dz; update WorkZSlv set SizeX = :Sx, SizeY = :Sy, SizeZ = :Sz, Qnt = :Quant, Source = :Src_One * :Quant where ID = :SID; end end end^ ALTER PROCEDURE WORKZMST_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(WorkZMst_ID, 1); end^ ALTER PROCEDURE WORKZSLV_NEWID RETURNS ( ID INTEGER) AS begin ID = Gen_ID(WorkZSlv_ID, 1); end^ ALTER PROCEDURE XXX_BDG_TMP AS DECLARE VARIABLE BG_ID INTEGER; DECLARE VARIABLE BGL_ID INTEGER; DECLARE VARIABLE SRC_PRICE DOUBLE PRECISION; begin /* Заполнение материальной себестоимости произв-й продукции */ for select bg.id, sum(bgl.price * bgl.quant) from bdg_paper p left join bdg_goods bg on bg.paper_id = p.id left join bdg_goods bgl on bgl.link_to = bg.id where p.source_type = 4 and p.plan_id is null and p.obj_id is not null and bg.link_to is null group by bg.id into :bg_id, :src_price do begin if (src_price is not null) then update bdg_goods set src_price = :src_price / quant where id = :bg_id; end /* Заполнение входной стоимости реализов-х товаров */ /* !!!!! Выключить тригеры на BDG_GOODS */ for select bg.id, bgl.id, bgl.price from bdg_paper p left join bdg_goods bg on bg.paper_id = p.id left join bdg_goods bgl on bgl.link_to = bg.id where p.source_type = 2 and p.plan_id is null and p.obj_id is not null and bg.link_to is null into :bg_id, :bgl_id, :src_price do begin if (src_price is not null) then update bdg_goods set src_price = :src_price where id = :bg_id; delete from bdg_goods where id = :bgl_id; end for select p.id, sum(bg.quant * bg.src_price) from bdg_paper p left join bdg_goods bg on bg.paper_id = p.id where p.source_type = 2 and p.plan_id is null and p.obj_id is not null and bg.link_to is null group by p.id into :bg_id, :src_price do update bdg_paper set amount = :src_price where link_to = :bg_id; suspend; end^ ALTER PROCEDURE XXX_WORKMODEL_UPDATE AS declare variable ID integer; declare variable ModelID integer; declare variable DetailID integer; Declare variable Quant double precision; Declare Variable Nbr varchar(20); declare variable PackNbr integer; Declare variable Nw double precision; Declare variable Gw double precision; Declare variable UserName varchar(20); begin for select ID, ModelID, DetailID, Quant, Nbr, PackNbr, Nw, Gw, UserName from WorkModelDtl where ParentID is null and ModelDtlID is Null into :ID, :ModelID, :DetailID, :Quant, :Nbr, :PackNbr, :Nw, :Gw, :UserName do begin Delete from WorkModelDtl where ID = :ID; Insert into WorkModelDtl(ID, ModelID, DetailID, Quant, Nbr, PackNbr, Nw, Gw) Values (:ID, :ModelID, :DetailID, :Quant, :Nbr, :PackNbr, :Nw, :Gw); end end^ ALTER PROCEDURE ZPLT_CALCAVGACC ( OURORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( VAL DOUBLE PRECISION) AS declare variable d1 double precision; declare variable d2 double precision; declare variable d3 double precision; declare variable d4 double precision; declare variable d5 double precision; declare variable d6 double precision; declare variable d7 double precision; declare variable d8 double precision; declare variable d9 double precision; declare variable d10 double precision; declare variable d11 double precision; declare variable d12 double precision; declare variable d13 double precision; declare variable d14 double precision; declare variable d15 double precision; declare variable d16 double precision; declare variable d17 double precision; declare variable d18 double precision; declare variable d19 double precision; declare variable d20 double precision; declare variable d21 double precision; declare variable d22 double precision; declare variable d23 double precision; declare variable d24 double precision; declare variable d25 double precision; declare variable d26 double precision; declare variable d27 double precision; declare variable d28 double precision; declare variable d29 double precision; declare variable d30 double precision; declare variable d31 double precision; declare variable bsumma double precision; declare variable pptabplan integer; declare variable prsnid integer; declare variable pd1 double precision; declare variable pd2 double precision; declare variable pd3 double precision; declare variable pd4 double precision; declare variable pd5 double precision; declare variable pd6 double precision; declare variable pd7 double precision; declare variable pd8 double precision; declare variable pd9 double precision; declare variable pd10 double precision; declare variable pd11 double precision; declare variable pd12 double precision; declare variable pd13 double precision; declare variable pd14 double precision; declare variable pd15 double precision; declare variable pd16 double precision; declare variable pd17 double precision; declare variable pd18 double precision; declare variable pd19 double precision; declare variable pd20 double precision; declare variable pd21 double precision; declare variable pd22 double precision; declare variable pd23 double precision; declare variable pd24 double precision; declare variable pd25 double precision; declare variable pd26 double precision; declare variable pd27 double precision; declare variable pd28 double precision; declare variable pd29 double precision; declare variable pd30 double precision; declare variable pd31 double precision; declare variable pwtime double precision; declare variable bpdate timestamp; declare variable epdate timestamp; declare variable inpdate timestamp; declare variable outdate timestamp; declare variable wtype integer; declare variable qday integer; declare variable quant double precision; declare variable tquant double precision; declare variable wtime double precision; /*кол-во отработанных часов*/ declare variable summaall double precision; declare variable summadog double precision; begin execute procedure f_monthfirstday(bdate) returning_values(bdate); execute procedure f_monthfirstday(edate) returning_values(edate); /*запускаем цикл прохода по месяцам*/ val = 0.0; while (bdate <= edate) do begin execute procedure f_monthfirstday(bdate) returning_values(bpdate); execute procedure f_monthlastday(bdate) returning_values(epdate); qday = extract (day from epdate); /*запускаем цикл выбора сотрудников с расчетной ведомости за определенный месяц и их табеля учета рабочего времени*/ summaall = 0.0; summadog = 0.0; quant = 0.0; for select p.tabelid, p.id, p.inp_date, p.out_date, p.wtyp, zcc.d1, zcc.d2, zcc.d3, zcc.d4, zcc.d5, zcc.d6, zcc.d7, zcc.d8, zcc.d9, zcc.d10, zcc.d11, zcc.d12, zcc.d13, zcc.d14, zcc.d15, zcc.d16, zcc.d17, zcc.d18, zcc.d19, zcc.d20, zcc.d21, zcc.d22, zcc.d23, zcc.d24, zcc.d25, zcc.d26, zcc.d27, zcc.d28, zcc.d29, zcc.d30, zcc.d31, zcc.bsumma from zpltcalcslv zcc, zpltcalcmst zcm, personal p where zcm.dat_ >= :bpdate and zcm.dat_ <= :epdate and zcm.ourorgnid = :ourorgnid and zcm.avans = 0 and zcc.mstid = zcm.id and p.id = zcc.prsnid into :pptabplan, :prsnid, :inpdate, :outdate, :wtype, :d1, :d2, :d3, :d4, :d5, :d6, :d7, :d8, :d9, :d10, :d11, :d12, :d13, :d14, :d15, :d16, :d17, :d18, :d19, :d20, :d21, :d22, :d23, :d24, :d25, :d26, :d27, :d28, :d29, :d30, :d31, :bsumma do begin /*выбираем плановый табель, привязаный к определенному сотруднику*/ pwtime = null; wtime = 0.0; tquant = 0.0; select ztp.d1, ztp.d2, ztp.d3, ztp.d4, ztp.d5, ztp.d6, ztp.d7, ztp.d8, ztp.d9, ztp.d10, ztp.d11, ztp.d12, ztp.d13, ztp.d14, ztp.d15, ztp.d16, ztp.d17, ztp.d18, ztp.d19, ztp.d20, ztp.d21, ztp.d22, ztp.d23, ztp.d24, ztp.d25, ztp.d26, ztp.d27, ztp.d28, ztp.d29, ztp.d30, ztp.d31, ztp.wtime from zplttabelplan ztp where ztp.bdate = :bpdate and ztp.edate = :epdate and ztp.ourorgnid = :ourorgnid and ztp.tabelid = :pptabplan into :pd1, :pd2, :pd3, :pd4, :pd5, :pd6, :pd7, :pd8, :pd9, :pd10, :pd11, :pd12, :pd13, :pd14, :pd15, :pd16, :pd17, :pd18, :pd19, :pd20, :pd21, :pd22, :pd23, :pd24, :pd25, :pd26, :pd27, :pd28, :pd29, :pd30, :pd31, :pwtime; if ( (wtype = 0) or (wtype=1) ) then /*сумма начисленой з/п сотрудников учетного состава*/ summaall = summaall + bsumma; else /*сумма начисленых доходов по договору подряда*/ summadog = summadog + bsumma; if (inpdate is null) then inpdate = bpdate; if (outdate is null) then outdate = epdate; if (wtype <> 2) then begin /*блок просчета отработанного времени по дням с учетом отпусков и больничных (штатные сотрудники и совместители)*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 1, d1, pd1, wtime) returning_values(wtime); /*день 1*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 2, d2, pd2, wtime) returning_values(wtime); /*день 2*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 3, d3, pd3, wtime) returning_values(wtime); /*день 3*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 4, d4, pd4, wtime) returning_values(wtime); /*день 4*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 5, d5, pd5, wtime) returning_values(wtime); /*день 5*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 6, d6, pd6, wtime) returning_values(wtime); /*день 6*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 7, d7, pd7, wtime) returning_values(wtime); /*день 7*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 8, d8, pd8, wtime) returning_values(wtime); /*день 8*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 9, d9, pd9, wtime) returning_values(wtime); /*день 9*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 10, d10, pd10, wtime) returning_values(wtime); /*день 10*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 11, d11, pd11, wtime) returning_values(wtime); /*день 11*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 12, d12, pd12, wtime) returning_values(wtime); /*день 12*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 13, d13, pd13, wtime) returning_values(wtime); /*день 13*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 14, d14, pd14, wtime) returning_values(wtime); /*день 14*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 15, d15, pd15, wtime) returning_values(wtime); /*день 15*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 16, d16, pd16, wtime) returning_values(wtime); /*день 16*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 17, d17, pd17, wtime) returning_values(wtime); /*день 17*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 18, d18, pd18, wtime) returning_values(wtime); /*день 18*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 19, d19, pd19, wtime) returning_values(wtime); /*день 19*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 20, d20, pd20, wtime) returning_values(wtime); /*день 20*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 21, d21, pd21, wtime) returning_values(wtime); /*день 21*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 22, d22, pd22, wtime) returning_values(wtime); /*день 22*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 23, d23, pd23, wtime) returning_values(wtime); /*день 23*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 24, d24, pd24, wtime) returning_values(wtime); /*день 24*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 25, d25, pd25, wtime) returning_values(wtime); /*день 25*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 26, d26, pd26, wtime) returning_values(wtime); /*день 26*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 27, d27, pd27, wtime) returning_values(wtime); /*день 27*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 28, d28, pd28, wtime) returning_values(wtime); /*день 28*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 29, d29, pd29, wtime) returning_values(wtime); /*день 29*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 30, d30, pd30, wtime) returning_values(wtime); /*день 30*/ execute procedure zplt_calcavgacc_addtime(prsnid, inpdate, outdate, bpdate, 31, d31, pd31, wtime) returning_values(wtime); /*день 31*/ if (wtime = pwtime) then tquant = tquant + 1; else tquant = tquant + wtime/pwtime; quant = quant + tquant; end end /*расчет СЧ сотрудников по договорам подрядов*/ if (:Quant <> 0.0) then tquant = summaall/quant; else tquant = 0.0; if (:tQuant <> 0.0) then tquant = summadog/tquant; else tQuant = 0.0; quant = quant + tquant; val = val + quant; /* -счетчик- увеличиваем месяц в указанной дате на 1*/ execute procedure f_addmonth(bdate, 1) returning_values(bdate); end suspend; end^ ALTER PROCEDURE ZPLT_CALCAVGACC_ADDTIME ( PRSNID INTEGER, INPDATE TIMESTAMP, OUTDATE TIMESTAMP, YEAR_MONTH TIMESTAMP, DAYNUM INTEGER, ACTUAL_TIME_IN_DAY DOUBLE PRECISION, PLAN_TIME_IN_DAY DOUBLE PRECISION, WTIMESTACK DOUBLE PRECISION) RETURNS ( WTIME DOUBLE PRECISION) AS declare variable tmpdate timestamp; declare variable flag integer; declare variable qday integer; begin wtime = wtimestack; execute procedure f_monthlastday(year_month) returning_values(tmpdate); qday = extract (day from tmpdate); if (daynum > qday) then begin suspend; exit; end execute procedure f_encodedate( extract (year from year_month), extract (month from year_month), daynum) returning_values(tmpdate); /*если день попадает в период работы сотрудника на предприятии*/ if ((tmpdate >= inpdate) and (tmpdate <= outdate)) then begin if ((actual_time_in_day = plan_time_in_day) and (plan_time_in_day <> 0)) then wtime = wtime + plan_time_in_day; /*если отраб. как обычно*/ else if (((actual_time_in_day <> 0) and (actual_time_in_day < plan_time_in_day)) or (actual_time_in_day > plan_time_in_day)) then wtime = wtime + actual_time_in_day; else if ((actual_time_in_day = 0) and (plan_time_in_day <> 0)) then begin /*если не работал,...*/ flag = 0; SELECT zsv.ID FROM zpltsertvacat zsv where zsv.prsnid = :prsnid and zsv.bdate <= :tmpdate and zsv.edate >= :tmpdate and zsv.typ = 0 into :flag; if (flag <> 0) then /*...но был в оплачиваемом отпуске*/ wtime = wtime + plan_time_in_day; /*...или болел (и т.п.), или нет уважительных причин то не учитываем часы*/ end end suspend; end^ ALTER PROCEDURE ZPLT_CALCAVGEPZ ( OURORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( VAL DOUBLE PRECISION, KVAL DOUBLE PRECISION, PDAYS DOUBLE PRECISION, WDAYS DOUBLE PRECISION, NAME VARCHAR(40), IDATE TIMESTAMP, ODATE TIMESTAMP) AS declare variable PrsnID integer; Declare Variable CalcDate Date; Declare Variable TabelDate Date; Declare Variable TabelID integer; Declare Variable TabelPlanID integer; Declare Variable Time1 Double precision; Declare Variable Time2 Double precision; begin Val = 0.0; Select xDate from f_MonthFirstDay(:bDate) into :bDate; Select xDate from f_MonthLastDay(:eDate) into :eDate; if (:OurOrgnID is Null or :OurOrgnID = 0) then Select ID from Orgn where OurOrgn = 1 into :OurOrgnID; /* кол-во штатных сотрудников */ pDays = :eDate-:bDate + 1; for select P.ID, P.Inp_Date, P.Out_Date, P.Name from Personal P where P.OurOrgnID = :OURORGNID and P.WTYP = 0 and P.Inp_Date is not Null and P.Inp_Date <= :eDate and (P.Out_Date is Null or P.Out_Date >= :bDate) into :PrsnID, :iDate, :oDate, :Name do begin if (:oDate is Null) then oDate = :eDate; if (:iDate < :bDate) then iDate = :bDate; if (:oDate > :eDate) then oDate = :eDate; wDays = :oDate - :iDate + 1; kVal = (:wDays / :pDays); Val = :Val + :kVal; end /* совместители */ for select P.ID from Personal P, ZpltCalcSlv S, ZpltCalcMst M where P.WTyp = 1 and S.PrsnID=P.ID and M.ID=S.MstID and M.DAT_ >= :eDate and M.DAT_ <= :eDate and M.Avans = 0 Group by P.ID into :PrsnID do begin Time1 = Null; Time2 = Null; Select Sum(S1.WTime) from zpltcalcslv S1, ZpltCalcMst M1 where S1.PrsnID=PrsnID and M1.ID=S1.MstID and S1.WTime is not Null and S1.WTime <> 0.0 and M1.DAT_ >= :bDate and M1.DAT_ <= :eDate into :Time1; Select Sum(M2.W5) from zpltcalcslv S2 Left Join ZpltCalcMst M2 on M2.ID=S2.MstID and M2.DAT_ >= :bDate and M2.DAT_ <= :eDate where S2.PrsnID=:PrsnID into :Time2; if (:Time1 is Null or :Time2 is Null or :Time2 = 0.0) then KVal = 0.0; else KVal = :Time1 / :Time2; Val = :Val + :kVal; end Suspend; end^ ALTER PROCEDURE ZPLT_CALCDECRMST ( ID INTEGER) AS Declare Variable SID integer; begin for Select ID from ZPltCalcSlv where MstID=:ID into :SID do begin Execute Procedure ZPlt_CalcDecrPrsn :SID; end end^ ALTER PROCEDURE ZPLT_CALCDECRPRSN ( SID INTEGER) AS Declare Variable Summa Double Precision; Declare Variable S Double Precision; Declare Variable Proc Double Precision; Declare Variable cSumma Double Precision; Declare Variable ID integer; /* сумма начислений - база */ Declare Variable bSumma Double Precision; Declare Variable DecrID integer; /* сумма приоритетных удержаний */ Declare Variable dSumma Double Precision; Declare Variable dTyp integer; Declare Variable Priority Integer; Declare Variable RoundTyp integer; -- сумма больничных declare variable blSumma double precision; declare variable InclBL integer; begin dSumma = 0.0; /* перед расчетом всех удержаний... */ update ZpltCalcDecr set cSumma = 0.0 where SlvID=:SID and cSumma <> 0.0; for select D.ID, D.DecrID, D.Summa, D.Proc, N.Typ, N.Priority, N.RoundTyp, N.InclBL from ZPltCalcDecr D, ZpltDecr N where D.SlvID=:SID and N.ID=D.DecrID order by N.Priority, N.Typ into :ID, :DecrID, :Summa, :Proc, :dTyp, :Priority, :RoundTyp, :InclBL as Cursor DecrCursor do begin Select Sum(cSumma) from ZpltCalcIncr I, ZpltDecrIncr DI where I.SlvID = :SID and DI.IncrID = I.IncrID and DI.DecrID = :DecrID into :bSumma; if (:bSumma is null) then bSumma = 0.0; cSumma = 0.0; if (:Summa is Null) then Summa = 0.0; if (:Proc is Null) then Proc = 0.0; if (:dTyp is Null) then dTyp = 0; /* удержание по сумме */ if (:Summa <> 0.0) then cSumma = :Summa; /* удержание по проценту */ if (:Summa = 0.0 and :Proc <> 0.0) then begin /* база - сумма начисления */ S = :bSumma; /* база - от суммы к выдаче */ if (:dTyp = 1) then S = :bSumma - :dSumma; if (:RoundTyp = 1) then /* округлять до грн. */ S = Cast(:S as Integer); if (:RoundTyp = 2) then /* отбрасывать копейки */ S = Floor(:S); cSumma = (:S / 100.0 * :Proc); end /* округляем рассчитанную сумму удержания до копеек */ cSumma = Cast(Cast(:cSumma * 100.0 as Integer) as double precision) / 100.0; update ZPltCalcDecr set cSumma = :cSumma where ID=:ID and (cSumma <> :cSumma or cSumma is Null); if (:Summa = 0.0 and :Proc = 0.0) then begin blSumma = 0.0; if (:InclBL = 1) then begin -- включать ли больничные в ФОТ Select CoalEsce(Sum(CI.cSumma), 0.0) from ZpltCalcIncr CI, ZpltIncr I where CI.SlvID = :SID and I.ID = CI.IncrID and I.System_Flag in (3, 8, 9) into :blSumma; end Select cSumma from ZPlt_CalcGridNalog (:DecrID, :ID, :bSumma, :blSumma, :dSumma) into :cSumma; end /* сумма более приоритетных удержаний */ dSumma = :dSumma + :cSumma; end -- после расчета удержаний... Select Sum(CI.cSumma) from ZpltCalcIncr CI join ZpltIncr I on I.ID=CI.IncrID where CI.SlvID = :SID and I.System_Flag != 16 into :bSumma; if(:bSumma is null) then bSumma = 0.0; update ZPltCalcSlv set eSumma = (:bSumma - :dSumma), bSumma = :bSumma where ID = :SID; end^ ALTER PROCEDURE ZPLT_CALCFOTMST ( ID INTEGER) AS Declare Variable S Double Precision; /* Incr Summary to calculation */ Declare Variable iSumma Double Precision; /* One Incr Summa */ Declare Variable cS Double Precision; /* FOT calculated Summa */ Declare Variable fiS Double Precision; /* FOT Summa for one Incr */ Declare Variable Proc Double Precision; Declare Variable IncrID integer; /* Base Incr ID */ Declare Variable FotID integer; /* Base FOT ID */ Declare Variable SlvID Integer; Declare Variable GridTyp Integer; Declare Variable s1 Double Precision; Declare Variable s2 Double Precision; Declare Variable s3 Double Precision; Declare Variable s4 Double Precision; Declare Variable s5 Double Precision; Declare Variable s6 Double Precision; Declare Variable p1 Double Precision; Declare Variable p2 Double Precision; Declare Variable p3 Double Precision; Declare Variable p4 Double Precision; Declare Variable p5 Double Precision; Declare Variable p6 Double Precision; Declare Variable sm1 Double Precision; Declare Variable sm2 Double Precision; Declare Variable sm3 Double Precision; Declare Variable sm4 Double Precision; Declare Variable sm5 Double Precision; Declare Variable sm6 Double Precision; Declare Variable CalcDate Date; begin Select DAT_ from ZpltCalcMst where ID = :ID into :CalcDate; /* Удаляем предудущие рассчитанные начисления на ФОТ по Сотрудникам */ for Select ID From ZpltCalcSlv where MstID=:ID into :SlvID do Delete From ZpltCalcSlvFot where SlvID =:SlvID; Insert Into ZPltCalcSlvFot (ID, SlvID, IncrID, FotID, cSumma) Select Gen_ID(ZpltCalcSlvFot_ID,1), S.ID, D.IncrID, F.ID, 0.0 from ZpltCalcSlv S Join ZpltCalcIncr D on D.SlvID=S.ID Join ZpltIncrFot C on D.IncrID=C.IncrID Join ZpltDecrFot F on F.ID=C.FotID Join Personal P on P.ID=S.PrsnID Join ZpltFotGrp FG on FG.ID=P.FotGrpID Join ZpltFotGrpRef FR on FR.GrpID = FG.ID and F.ID=FR.FOTID where S.MstID=:ID Group by S.ID, D.IncrID, F.ID; For Select S.ID, F.ID, SUM(D.cSumma) from ZpltCalcSlv S, ZpltCalcIncr D, ZpltIncrFot C, ZpltDecrFot F where S.MstID=:ID and D.SlvID=S.ID and C.IncrID=D.IncrID and F.ID=C.FotID Group by S.ID, F.ID into :SlvID, :FotID, :S do begin select Proc, GridTyp, Sum1, Sum2, Sum3, Sum4, Sum5, Sum6, Proc1, Proc2, Proc3, Proc4, Proc5, Proc6, Summ1, Summ2, Summ4, Summ4, Summ5, Summ6 from ZpltDecrFot where ID=:FotID Into :Proc, :GridTyp, :s1, :s2, :s3, :s4, :s5, :s6, :p1, :p2, :p3, :p4, :p5, :p6, :sm1, :sm2, :sm3, :sm4, :sm5, :sm6; if(:Proc <> 0) then cS = :S/100*:Proc; else begin /* расчет по сетке */ cS = 0; if(:S<=:s6) then begin if(:Sm6<>0) then cS=:Sm6; else cS=:S/100*:P6; end if(:S<=:s5) then begin if(:Sm5<>0) then cS=:Sm5; else cS=:S/100*:P5; end if(:S<=:s4) then begin if(:Sm4<>0) then cS=:Sm4; else cS=:S/100*:P4; end if(:S<=:s3) then begin if(:Sm3<>0) then cS=:Sm3; else cS=:S/100*:P3; end if(:S<=:s2) then begin if(:Sm2<>0) then cS=:Sm2; else cS=:S/100*:P2; end if(:S<=:s1) then begin if(:Sm1<>0) then cS=:Sm1; else cS=:S/100*:P1; end end if (:S<>0 and :S is not null and :cS<>0 and :cS is not null) then for Select I.IncrID, Sum(I.cSumma) from ZpltCalcIncr I, ZpltIncrFot C where I.SlvID=:SlvID and C.IncrID=I.IncrID and C.FotID=:FotID Group By I.IncrID into :IncrID, :iSumma do begin fiS = :cS / :S * :iSumma; Update ZpltCalcSlvFot set cSumma = :fiS where SlvID=:SlvID and FotID=:FotID and IncrID=:IncrID; end end for Select ID From ZpltCalcSlv where MstID=:ID into :SlvID do begin Delete From ZpltCalcSlvFot where SlvID =:SlvID and (cSumma = 0.0 or cSumma is Null); end end^ ALTER PROCEDURE ZPLT_CALCGRIDNALOG ( ID INTEGER, CDECRID INTEGER, S DOUBLE PRECISION, BLS DOUBLE PRECISION, DS DOUBLE PRECISION) RETURNS ( CSUMMA DOUBLE PRECISION) AS begin Select cSumma from Zplt_CalcGridNalogSum (:ID, :CDECRID, :S, :BLS, :DS) into :cSumma; update ZPltCalcDecr C set C.cSumma = :cSumma where C.ID=:CDecrID and (C.cSumma <> :cSumma or C.cSumma is Null); Suspend; end^ ALTER PROCEDURE ZPLT_CALCGRIDNALOGSUM ( ID INTEGER, CDECRID INTEGER, S DOUBLE PRECISION, BLS DOUBLE PRECISION, DS DOUBLE PRECISION) RETURNS ( CSUMMA DOUBLE PRECISION) AS Declare Variable cS Double Precision; /* S - база начислений */ /* BLS - сумма больничных */ /* DS - сумма приоритетных удержаний */ Declare Variable S1 Double Precision; Declare Variable S2 Double Precision; Declare Variable S3 Double Precision; Declare Variable S4 Double Precision; Declare Variable S5 Double Precision; Declare Variable S6 Double Precision; -- проценты по интервалам Declare Variable P1 Double Precision; Declare Variable P2 Double Precision; Declare Variable P3 Double Precision; Declare Variable P4 Double Precision; Declare Variable P5 Double Precision; Declare Variable P6 Double Precision; -- суммы по интервалам Declare Variable Sm1 Double Precision; Declare Variable Sm2 Double Precision; Declare Variable Sm3 Double Precision; Declare Variable Sm4 Double Precision; Declare Variable Sm5 Double Precision; Declare Variable Sm6 Double Precision; Declare Variable I1 Double Precision; Declare Variable I2 Double Precision; Declare Variable I3 Double Precision; Declare Variable I4 Double Precision; Declare Variable I5 Double Precision; Declare Variable I6 double precision; -- Признаки - без учета льгот Declare Variable Grid1 Integer; Declare Variable Grid2 Integer; Declare Variable Grid3 Integer; Declare Variable Grid4 Integer; Declare Variable Grid5 Integer; Declare Variable Grid6 Integer; Declare Variable GridTyp Integer; declare variable RoundTyp integer; Declare Variable Typ integer; /* база для диапазонов */ declare variable SB double precision; declare variable SlvID integer; declare variable cDate Date; declare variable OutDate Date; declare variable Date1 Date; declare variable Date2 Date; /* признак расчета з/п в последний месяц (без льготы) */ declare variable LM integer; declare variable Ss double precision; declare variable Cod varchar(5); declare variable UserName varchar(20); begin -- расчет з/п в месяц увольнения (без льготы) Select CD.SlvID, M.DAT_, P.Out_Date, S.UserName from ZpltCalcDecr CD, ZpltCalcSlv S, ZpltCalcMst M, Personal P where CD.ID = :CDecrID and S.ID = CD.SlvID and M.ID = S.MstID and P.ID = S.PrsnID into :SlvID, :cDate, :OutDate, :UserName; LM = 0; /* if (:OutDate is not Null) then begin Select xDate from f_MonthFirstDay(:cDate) into :Date1; Select xDate from f_MonthFirstDay(:OutDate) into :Date2; if (:Date1 = :Date2) then LM = 1; end */ cS = 0.0; for Select Sum1,Sum2,Sum3,Sum4,Sum5,Sum6, Proc1,Proc2,Proc3,Proc4,Proc5,Proc6, GridTyp,Summ1,Summ2,Summ3,Summ4,Summ5,Summ6, Grid1,Grid2,Grid3,Grid4,Grid5,Grid6, RoundTyp, Typ, Cod from ZPltDecr where ID = :ID into :S1,:S2,:S3,:S4,:S5,:S6,:P1,:P2,:P3,:P4,:P5,:P6, :GridTyp,:Sm1,:Sm2,:Sm3,:Sm4,:Sm5,:Sm6, :Grid1,:Grid2,:Grid3,:Grid4,:Grid5,:Grid6, :RoundTyp, :Typ, :Cod do begin /* если расчет от суммы к выдачи - */ /* вычитаем сумму расчитанных до этого удержаний */ SB = S; if (:Typ = 1) then Ss = S - :DS; else Ss = :S; if (:RoundTyp = 1) then begin /* округлять до грн. */ S = Cast(:S as Integer); end if (:RoundTyp = 2) then begin /* отбрасывать копейки */ S = Floor(:S); end cS = 0.0; if(:S1 is null) then S1=0.0; if(:S2 is null) then S2=0.0; if(:S3 is null) then S3=0.0; if(:S4 is null) then S4=0.0; if(:S5 is null) then S5=0.0; if(:S6 is null) then S6=0.0; if(:p1 is null) then p1=0.0; if(:p2 is null) then p2=0.0; if(:p3 is null) then p3=0.0; if(:p4 is null) then p4=0.0; if(:p5 is null) then p5=0.0; if(:p6 is null) then p6=0.0; if(:Sm1 is null) then Sm1=0.0; if(:Sm2 is null) then Sm2=0.0; if(:Sm3 is null) then Sm3=0.0; if(:Sm4 is null) then Sm4=0.0; if(:Sm5 is null) then Sm5=0.0; if(:Sm6 is null) then Sm6=0.0; if ((:GridTyp = 0) or (:GridTyp is null)) then begin /* расчет по алгоритму подоходного налога */ i1 = 0; i2=:i1; if (:s1<>0.0) then i2 = :s1/100.00*:p1; else i2=0.0; i3=:i2; if ((:s2-:s1) <> 0.0) then i3=:i2+(:s2-:s1)/100.00*:p2; i4=:i3; if ((:s3-:s2) <> 0.0) then i4=:i3+(:s3-:s2)/100.00*:p3; i5=:i4; if ((:s4-:s3) <> 0.0) then i5=:i4+(:s4-:s3)/100.00*:p4; i6=:i5; if ((:s5-:s4) <> 0.0) then i6=:i5+(:s5-:s4)/100.00*:p5; if(:S + :BLS > :S5 and :SB <> 0.0) then begin if (:Sm6 <> 0.0) then cS = :Sm6; else begin if (:Grid6 = 1 or LM = 1) then begin cS = :Ss/100.00*:P6; Cod = '0'; end else cS=:i6+(:Ss-:S5)/100.00*:P6; end end if(:S + :BLS > :s4 and :S + :BLS <= :s5 and :S <> 0.0) then begin if (:Sm5 <> 0.0) then cS = Sm5; else begin if (:Grid5 = 1 or LM = 1) then begin cS = :Ss/100.00*:P5; Cod = '0'; end else cS = :i5+(:Ss-:S4)/100.00*:P5; end end if(:S + :BLS > :s3 and :S + :BLS <= :s4 and :S <> 0.0) then begin if (:Sm4 <> 0.0) then cS = Sm4; else begin if (:Grid4 = 1 or LM = 1) then begin cS = :Ss/100.00*:P4; Cod = '0'; end else cS = :i4+(:Ss-:S3)/100.00*:P4; end end if(:S + :BLS > :s2 and :S + :BLS <= :s3 and :S <> 0.0) then begin if (:Sm3 <> 0.0) then cS = Sm3; else begin if (:Grid3 = 1 or LM = 1) then begin cS = :Ss/100.00*:P3; Cod = '0'; end else cS = :i3+(:Ss-:S2)/100.00*:P3; end end if(:S + :BLS > :s1 and :S + :BLS <= :s2 and :S <> 0.0) then begin if (:Sm2 <> 0.0) then cS = :Sm2; else begin if (:Grid2 = 1 or LM = 1) then begin cS = :Ss/100.00*:P2; Cod = '0'; end else cS = :i2+(:Ss-:S1)/100.00*:P2; end end if(:S + :BLS > 0.0 and :S + :BLS <= :s1 and :S <> 0.0) then begin if (:Sm1 <> 0.0) then cS = :Sm1; else begin if (:Grid1 = 1 or LM = 1) then begin cS = :Ss/100.00*:P1; Cod = '0'; end else cS = :i1+(:Ss-0.0)/100.00*:P1; end end end else begin -- расчет по интервалам if(:S+:BLS <= :s6) then begin if(:Sm6<>0.0) then cS=:Sm6; else cS=:S/100.00*:P6; end if(:S+:BLS <= :s5) then begin if(:Sm5<>0.0) then cS=:Sm5; else cS=:S/100.00*:P5; end if(:S+:BLS <= :s4) then begin if(:Sm4<>0.0) then cS=:Sm4; else cS=:S/100.00*:P4; end if(:S+:BLS <= :s3) then begin if(:Sm3<>0.0) then cS=:Sm3; else cS=:S/100.00*:P3; end if(:S+:BLS <= :s2) then begin if(:Sm2<>0.0) then cS=:Sm2; else cS=:S/100.00*:P2; end if(:S+:BLS <= :s1) then begin if(:Sm1<>0.0) then cS=:Sm1; else cS=:S/100.00*:P1; end end end cSumma = Cast(Cast(:cS * 100.00 as Integer) as double precision) / 100.00; update ZpltCalcDecr set Cod=:Cod, UserName=:UserName where ID=:CDecrID; Suspend; end^ ALTER PROCEDURE ZPLT_CALCINCRMST ( ID INTEGER) AS /* расчет начислений по ведомости */ Declare Variable SID integer; Declare Variable PrsnID integer; Declare Variable OurOrgnID integer; Declare Variable HIncrMul Double Precision; Declare Variable WIncrMul Double Precision; Declare Variable HolidayIncrID integer; Declare Variable WeekendIncrID integer; Declare Variable HcIncrID integer; Declare Variable WcIncrID integer; -- включать в оклад - оплата за праздничные дни declare variable HIncrIncl integer; -- включать в оклад - оплата за выходные дни declare variable WIncrIncl integer; Declare Variable CalcDate TimeStamp; Declare Variable TabelDate TimeStamp; Declare Variable TabelID integer; Declare Variable TabelPlanID integer; Declare Variable TPID integer; Declare Variable TID integer; Declare Variable TimeW double precision; begin Select M.OurOrgnID, M.DAT_ from ZpltCalcMst M where M.ID=:ID into :OurOrgnID, :CalcDate; HIncrMul = 1; WIncrMul = 1; HIncrIncl = 0; WIncrIncl = 0; /* коффициент повышения ставок для праздничных дней */ Select cast(Val as Double Precision) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltIncrHoliday' into :HIncrMul; /* коффициент повышения ставок для выходных дней */ Select cast(Val as Double Precision) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltIncrWeekend' into :WIncrMul; /* начисление - Оплата за Выходные Дни */ Select cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltHolidayIncr' into :HolidayIncrID; /* начисление - Оплата за Праздничные Дни */ Select cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltWeekendIncr' into :WeekendIncrID; /* включать в оклад - Оплата за Выходные Дни */ Select cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltInclWeekend' into :WIncrIncl; /* включать в оклад - Оплата за Праздничные Дни */ Select cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltInclHoliday' into :HIncrIncl; if (:WIncrIncl is Null) then WIncrIncl = 0; if (:HIncrIncl is Null) then HIncrIncl = 0; /* есть ли эти начисления на самом деле */ HcIncrID = null; if (:HolidayIncrID is not Null) then begin Select ID from ZpltIncr where ID=:HolidayIncrID into :HcIncrID; if(:HcIncrID is Null) then HolidayIncrID = Null; end WcIncrID = null; if (:WeekendIncrID is not Null) then begin Select ID from ZpltIncr where ID=:WeekendIncrID into :WcIncrID; if(:WcIncrID is Null) then WeekendIncrID = Null; end Select xDate from f_MonthFirstDay(:CalcDate) into :TabelDate; TabelPlanID = Null; TabelID = Null; TimeW = 0.0; for Select S.ID, S.PrsnID, P.TabelID from ZPltCalcSlv S, Personal P where S.MstID=:ID and P.ID = S.PrsnID into :SID, :PrsnID, :TID do begin if (:TID is Null) then begin TabelPlanID = Null; end else if (:TID is not Null and (:TID <> :TabelID or :TabelID is Null)) then begin TPID = Null; TimeW = 0.0; Select Max(TP.ID) from ZpltTabelPlan TP where TP.TabelID = :TID and OurOrgnID = :OurOrgnID and bDate=:TabelDate into :TPID; if (:TPID is not Null) then Select WTime from ZpltTabelPlan where ID = :TPID into :TimeW; TabelPlanID = :TPID; TabelID = :TID; end execute procedure Zplt_CalcIncrPrsn :SID, :WIncrMul, :HIncrMul, :WeekendIncrID, :HolidayIncrID, :WIncrIncl, :HIncrIncl, :TimeW, :TabelPlanID; end end^ ALTER PROCEDURE ZPLT_CALCINCRPRSN ( ID INTEGER, WINCRMUL DOUBLE PRECISION, HINCRMUL DOUBLE PRECISION, WEEKENDINCRID INTEGER, HOLIDAYINCRID INTEGER, WINCRINCL INTEGER, HINCRINCL INTEGER, TIMEW DOUBLE PRECISION, TABELPLANID INTEGER) AS Declare Variable DID integer; Declare Variable bSumma Double Precision; Declare Variable Oklad Double Precision; Declare Variable Summa Double Precision; Declare Variable Proc Double Precision; Declare Variable cSumma Double Precision; Declare Variable TimeWrk Double Precision; /* отработано в рабочие дни (ч.) */ Declare Variable TimeWkn Double Precision; /* отработано в выходные дни (ч.) */ Declare Variable TimeHld Double Precision; /* отработано в праздничные дни (ч.) */ /* Сумма Оплаты... */ Declare Variable SummaWrk Double Precision; /* ...рабочие дни */ Declare Variable SummaWkn Double Precision; /* ...выходные дни */ Declare Variable SummaHld Double Precision; /* ...праздничные дни */ Declare Variable PrsnID integer; Declare Variable sFlag integer; Declare Variable DayWTime Double Precision; Declare Variable MstID Integer; Declare Variable IncrPriority integer; Declare Variable IncrID integer; Declare Variable cIncr16ID integer; -- Разница между мин. з/п. (начисление в ведосости - по сотруднику) Declare Variable Incr16ID integer; -- Разница между мин. з/п. (начисление - в справочнике начислений) declare variable cSumma16 double precision; -- Разница между мин. з/п. (расчет) declare variable Summa16 double precision; -- Разница между мин. з/п. (явно указанная сумма) declare variable UserName varchar(20); declare variable NoCalc integer; begin for select S.MstID, S.PrsnID, S.TimeWrk, S.TimeWkn, S.TimeHld from ZpltCalcSlv S where S.ID=:ID into :MstID,:PrsnID, :TimeWrk, :TimeWkn, :TimeHld do begin Select DayWTime from Personal where ID=:PrsnID into :DayWTime; if (:TimeW is Null) then TimeW = 0.0; bSumma = 0.0; -- Сумма оклада Select Sum(C.Summa) from ZPltCalcIncr C Left Join ZpltIncr I on I.ID=C.IncrID where C.SlvID=:ID and I.System_Flag in (1, 15) into :Oklad; if(:Oklad is Null) then Oklad = 0.0; bSumma = 0.0; if (:WeekendIncrID is not Null) then Delete From ZpltCalcIncr where SlvID=:ID and IncrID=:WeekendIncrID; if (:HolidayIncrID is not Null) then Delete From ZpltCalcIncr where SlvID=:ID and IncrID=:HolidayIncrID; if(:WeekendIncrID is not Null and :HolidayIncrID is not Null and :WeekendIncrID=:HolidayIncrID) then begin Insert Into ZpltCalcIncr(ID, SlvID, IncrID, Summa) Values(Gen_ID(ZpltCalcIncr_ID, 1),:ID, :WeekendIncrID, 0.0); end if(:WeekendIncrID is not Null and :WeekendIncrID <> :HolidayIncrID) then begin Insert Into ZpltCalcIncr(ID, SlvID, IncrID, Summa) Values(Gen_ID(ZpltCalcIncr_ID, 1),:ID, :WeekendIncrID, 0.0); end if(:HolidayIncrID is not Null and :HolidayIncrID <> :WeekendIncrID) then begin Insert Into ZpltCalcIncr(ID, SlvID, IncrID, Summa) Values(Gen_ID(ZpltCalcIncr_ID, 1), :ID, :HolidayIncrID, 0.0); end -- среднечасовой оклад for Select CI.ID, CI.Summa from ZPltCalcIncr CI Left join ZpltIncr I on I.ID=CI.IncrID where CI.SlvID = :ID and I.System_Flag = 1 into :DID, :Summa do begin SummaWrk = 0.0; SummaWkn = 0.0; SummaHld = 0.0; if(:TimeW <> 0.0 and :TimeWrk <> 0.0) then begin SummaWrk = SummaWrk + (:Summa / :TimeW * :TimeWrk); SummaWrk = Cast(Cast(:SummaWrk * 100.00 as integer) as double precision) / 100.00; end if(:TimeW <> 0.0 and :TimeWkn <> 0.0) then begin if (:WIncrIncl = 0) then begin SummaWkn = (:Summa / :TimeW * :TimeWkn * :WIncrMul); end else begin SummaWkn = (:Summa / :TimeW * :TimeWkn * (:WIncrMul - 1.0)); SummaWrk = SummaWrk + :Summa / :TimeW * :TimeWkn; end SummaWrk = Cast(Cast(:SummaWrk * 100.00 as integer) as double precision) / 100.00; SummaWkn = Cast(Cast(:SummaWkn * 100.00 as integer) as double precision) / 100.00; end if(:TimeW <> 0.0 and :TimeHld <> 0.0) then begin if (:HincrIncl = 0) then begin SummaHld = (:Summa / :TimeW * :TimeHld * :HIncrMul); end else begin SummaHld = (:Summa / :TimeW * :TimeHld * (:HIncrMul - 1.0)); SummaWrk = SummaWrk + :Summa / :TimeW * :TimeHld; end SummaWrk = Cast(Cast(:SummaWrk * 100.00 as integer) as double precision) / 100.00; SummaHld = Cast(Cast(:SummaHld * 100.00 as integer) as double precision) / 100.00; end update ZPltCalcIncr set cSumma = :SummaWrk where ID=:DID and (cSumma <> :SummaWrk or cSumma is Null); bSumma = :Bsumma + :SummaWrk; if(:SummaWkn <> 0.0) then begin /* оплата за выходные */ if(:WeekendIncrID is not Null) then begin /* Update Weekend incr */ Update ZpltCalcIncr set Summa = Summa + :SummaWkn where SlvID = :ID and IncrID = :WeekendIncrID; end else begin /* включить в оклад */ Update ZPltCalcIncr set cSumma = cSumma + :SummaWkn where ID = :DID; bSumma = :bSumma + :SummaWkn; end end if(:SummaHld <> 0.0) then begin /* оплата за праздники */ if(:HolidayIncrID is not Null) then begin /* Update Holiday incr */ Update ZpltCalcIncr set Summa = Summa + :SummaHld where SlvID=:ID and IncrID=:HolidayIncrID; end else begin /* включить в оклад */ Update ZPltCalcIncr set cSumma = cSumma + :SummaHld where ID=:DID; bSumma = :bSumma + :SummaHld; end end end -- среднедневной оклад for Select CI.ID, CI.Summa from ZPltCalcIncr CI Left join ZpltIncr I on I.ID=CI.IncrID where CI.SlvID = :ID and I.System_Flag = 15 into :DID, :Summa do begin select SummaWrk, SummaWkn, SummaHld from Zplt_CalcIncrPrsnAvgDays(:DID, :TabelPlanID, :WIncrMul, :HIncrMul, :WIncrIncl, :HIncrIncl) into :SummaWrk, :SummaWkn, :SummaHld; update ZPltCalcIncr set cSumma = :SummaWrk where ID=:DID and (cSumma <> :SummaWrk or cSumma is Null); bSumma = :Bsumma + :SummaWrk; if(:SummaWkn <> 0.0) then begin /* оплата за выходные */ if(:WeekendIncrID is not Null) then begin /* Update Weekend incr */ Update ZpltCalcIncr set Summa = Summa + :SummaWkn where SlvID = :ID and IncrID = :WeekendIncrID; end else begin /* включить в оклад */ Update ZPltCalcIncr set cSumma = cSumma + :SummaWkn where ID = :DID; bSumma = :bSumma + :SummaWkn; end end if(:SummaHld <> 0.0) then begin /* оплата за праздники */ if(:HolidayIncrID is not Null) then begin /* Update Holiday incr */ Update ZpltCalcIncr set Summa = Summa + :SummaHld where SlvID=:ID and IncrID=:HolidayIncrID; end else begin /* включить в оклад */ Update ZPltCalcIncr set cSumma = cSumma + :SummaHld where ID=:DID; bSumma = :bSumma + :SummaHld; end end end if (:WeekendIncrID is not Null) then Delete From ZpltCalcIncr where SlvID=:ID and IncrID=:WeekendIncrID and Summa = 0.0; if (:HolidayIncrID is not Null) then Delete From ZpltCalcIncr where SlvID=:ID and IncrID=:HolidayIncrID and Summa = 0.0; -- Расчет начислений (исключая оклад и индексацию) for Select CI.ID, CI.Summa, CI.Proc, I.System_Flag, I.Priority, CI.IncrID from ZPltCalcIncr CI Left Join ZpltIncr I on I.ID=CI.IncrID where CI.SlvID = :ID and ((I.System_Flag is Null) or (I.System_Flag not in (1, 15, 16)) or (I.System_Flag = 7 and (CI.Summa <> 0.0 or CI.Proc <> 0.0))) order by I.Priority, I.ID into :DID, :Summa, :Proc, :sFlag, :IncrPriority, :IncrID do begin cSumma = 0.0; -- процент от продаж if (:sFlag = 14) then select Summa from Zplt_CalcIncrPrsn14(:DID) into :cSumma; -- начисление задано суммой else if(:Summa <> 0.0) then cSumma = :Summa; -- начисление задано процентом else if(:Proc <> 0.0) then begin select Summa from Zplt_CalcIncrPrsnProc(:DID, :WeekendIncrID, :HolidayIncrID, :WIncrIncl, :HIncrIncl) into :cSumma; end if (:cSumma is Null) then cSumma = 0.0; update ZPltCalcIncr set cSumma = :cSumma where ID=:DID and (cSumma <> :cSumma or cSumma is Null); bSumma = :bSumma + :cSumma; end -- Расчет индексации for Select CI.ID from ZpltCalcIncr CI Left Join ZpltIncr I on I.ID=CI.IncrID where CI.SlvID = :ID and I.System_Flag = 7 and CI.Summa = 0.0 and CI.Proc = 0.0 into :DID do begin cSumma = 0.0; Select Summa from Zplt_CalcSlvIdx(:DID) into :cSumma; update ZPltCalcIncr set cSumma=:cSumma where ID=:DID and (cSumma <> :cSumma or cSumma is Null); bSumma=:bSumma + :cSumma; end -- расчет разницы между минимальной з/п Incr16ID = Null; select first 1 I.ID from ZpltIncr I where I.System_Flag=16 into :Incr16ID; cIncr16ID = Null; select first 1 CI.ID, CI.Summa, M.UserName, CoalEsce(CI.NoCalc, 0) from ZpltCalcIncr CI join ZpltIncr I on I.ID=CI.IncrID join zpltcalcslv S on S.ID=CI.SlvID join ZpltCalcMst M on M.ID=S.MstID where CI.SlvID=:ID and I.System_Flag=16 into :CIncr16ID, :Summa16, :UserName, :NoCalc; NoCalc = CoalEsce(:NoCalc, 0); Summa16 = CoalEsce(:Summa16, 0.0); if (:NoCalc = 0) then begin Select Summa from Zplt_CalcIncrPrsn16(:cIncr16ID, :ID) into :cSumma16; end else cSumma16 = :Summa16; if (:cSumma16 = 0.0 and :cIncr16ID is not Null) then update ZpltCalcIncr set cSumma=0.0 where ID=:cIncr16ID; if (:cSumma16 <> 0.0) then begin if (:cIncr16ID is Null) then begin insert into ZpltCalcIncr(SlvID, IncrID, Summa, Proc, cSumma, UserName) values(:ID, :Incr16ID, 0.0, 0.0, :cSumma16, :UserName); end else begin update ZpltCalcIncr set cSumma = :cSumma16, UserName=:UserName where ID=:cIncr16ID; end end -- Общая сумма начислений -- exception common_exception :bsumma; update ZPltCalcSlv set bSumma = :bSumma where ID = :ID and (bSumma <> :bSumma or bSumma is Null); end end^ ALTER PROCEDURE ZPLT_CALCINCRPRSN14 ( ID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS declare variable Summ double precision; declare variable Proc double precision; declare variable Sum1 double precision; declare variable Sum2 double precision; declare variable Sum3 double precision; declare variable Sum4 double precision; declare variable Sum5 double precision; declare variable Sum6 double precision; declare variable Proc1 double precision; declare variable Proc2 double precision; declare variable Proc3 double precision; declare variable Proc4 double precision; declare variable Proc5 double precision; declare variable Proc6 double precision; begin Summa = 0.0; select CI.Summa, CI.Proc, I.Sum1, I.Sum2, I.Sum3, I.Sum4, I.Sum5, I.Sum6, I.Proc1, I.Proc2, I.Proc3, I.Proc4, I.Proc5, I.Proc6 from ZpltCalcIncr CI, ZpltIncr I where CI.ID = :ID and I.ID = CI.IncrID and I.System_Flag = 14 into :Summ, :Proc, :Sum1, :Sum2, :Sum3, :Sum4, :Sum5, :Sum6, :Proc1, :Proc2, :Proc3, :Proc4, :Proc5, :Proc6; if (:Proc <> 0.0) then Summa = :Summ * :Proc / 100.00; else begin if (:Sum1 <> 0.0 and :Summ < :Sum1) then Summa = :Summ * :Proc1 / 100.00; if (:Sum2 <> 0.0 and :Summ < :Sum2) then Summa = :Summ * :Proc2 / 100.00; if (:Sum3 <> 0.0 and :Summ < :Sum3) then Summa = :Summ * :Proc3 / 100.00; if (:Sum4 <> 0.0 and :Summ < :Sum4) then Summa = :Summ * :Proc4 / 100.00; if (:Sum5 <> 0.0 and :Summ < :Sum5) then Summa = :Summ * :Proc5 / 100.00; if (:Sum6 <> 0.0 and :Summ < :Sum6) then Summa = :Summ * :Proc6 / 100.00; end Summa = Cast(Cast(:Summa * 100.00 as integer) as double precision) / 100.00; suspend; end^ ALTER PROCEDURE ZPLT_CALCINCRPRSN16 ( ID INTEGER, SLVID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS declare variable mzpSumma double precision; declare variable mzpID integer; declare variable cDate timestamp; declare variable wTyp integer; declare variable inp_Date timestamp; declare variable out_Date timestamp; declare variable Date1 timestamp; declare variable Date2 timestamp; declare variable DateB timestamp; declare variable DateE timestamp; declare variable zSumma double precision; -- сумма начислений (ЕСВ) declare variable blSumma double precision; -- сумма (больничные) declare variable xSumma double precision; declare variable cDays integer; declare variable blDays integer; declare variable PrsnID integer; declare variable Avans integer; begin Summa = 0.0; mzpSumma = 0.0; select ID from CurrTyp where Sys_Flag = 3 into :mzpID; select m.DAT_, S.PrsnID, M.Avans from ZpltCalcSlv S join ZpltCalcMst M on M.ID=S.MstID where S.ID=:SlvID into :cDate, :PrsnID, :Avans; select Val from Currency_GetValue(:mzpID, :cDate) into :mzpSumma; select P.wTyp, P.Inp_Date, P.Out_Date from ZpltCalcSlv S join Personal P on P.ID=S.PrsnID where S.ID=:SlvID into :wTyp, :inp_Date, :out_Date; if (:wTyp in (1, 2, 3) or ( :Avans = 1) ) then begin Summa = 0.0; suspend; exit; end select xDate from F_MonthFirstWorkDay(:SlvID, :cDate) into :Date1; select xDate from F_MonthLastWorkDay(:SlvID, :cDate) into :Date2; if (:Date1 < '01.01.2015') then begin Summa = 0.0; suspend; exit; end if (:inp_Date is not Null) then begin if (:inp_Date > :Date1 and :inp_Date <= :Date2) then begin Summa = 0.0; suspend; exit; end end if (:out_Date is not Null) then begin if (:out_Date >= :Date1 and :out_Date < :Date2) then begin Summa = 0.0; suspend; exit; end end -- есть ли незакрытый начислением больничный лист select xDate from F_MonthFirstDay(:cDate) into :Date1; select xDate from F_MonthLastDay(:cDate) into :Date2; if (exists( select first 1 CI.ID from ZpltCalcIncr CI join ZpltCalcSlv S on S.ID=CI.SlvID join ZpltSertMedic M on M.PrsnID=S.PrsnID and m.bDate is not Null and (m.eDate is Null or (m.Edate >= :Date1 and m.eDate <= :Date2) ) join ZpltIncr I on I.ID=CI.IncrID and I.System_Flag in (3, 8, 9) where CI.SlvID=:SlvID and (M.bDate != CI.blDate or M.eDate != CI.elDate) )) then begin Summa = 0.0; suspend; exit; end blSumma = 0.0; for select CI.cSumma, CI.blDate, CI.elDate from ZpltCalcIncr CI join ZpltIncr I on I.ID=CI.IncrID where CI.SlvID=:SlvID and I.System_Flag in (3, 8, 9) and CI.elDate is not Null and CI.blDate is not Null and CI.elDate >= :Date1 and CI.elDate <= :Date2 into :xSumma, :DateB, :DateE do begin select Result from F_ElapsedDays(:DateB, :DateE) into :blDays; blDays = blDays + 1; if (:DateB < :Date1) then DateB = :Date1; select Result from F_ElapsedDays(:DateB, :DateE) into :cDays; cDays = cDays + 1; xSumma = :xSumma / :blDays * :cDays; blSumma = :blSumma + :xSumma; end select Sum(CI.cSumma) from ZpltCalcIncr CI join ZpltCalcSlv S on S.ID=CI.SlvID join ZpltIncr I on I.ID=CI.IncrID join personal P on P.ID=S.PrsnID join ZpltFotGrp G on G.ID=P.FotGrpID join ZpltFotGrpRef gr on gr.GrpID=G.ID join ZpltDecrFot DF on DF.ID=gr.FotID and DF.System_Flag=6 where CI.SlvID=:SlvID and I.System_Flag != 16 and I.System_Flag not in (3, 8, 9) into :zSumma; zSumma = CoalEsce(:zSumma, 0.0); Summa = :mzpSumma - (:zSumma + :blSumma); if (:Summa < 0.0) then Summa = 0.0; suspend; end^ ALTER PROCEDURE ZPLT_CALCINCRPRSNAVGDAYS ( ID INTEGER, TABELPLANID INTEGER, WINCRMUL DOUBLE PRECISION, HINCRMUL DOUBLE PRECISION, WINCRINCL INTEGER, HINCRINCL INTEGER) RETURNS ( SUMMAWRK DOUBLE PRECISION, SUMMAWKN DOUBLE PRECISION, SUMMAHLD DOUBLE PRECISION) AS declare variable SlvID integer; declare variable PrsnID integer; declare variable Summa Double Precision; declare variable DaySumma double precision; declare variable WDays double precision; declare variable DayNoT integer; declare variable wTimeT double precision; declare variable DayNoS integer; declare variable wTimeS double precision; declare variable HolidayMask integer; declare variable MstID integer; declare variable S double precision; declare variable PrsnName varchar(40); declare variable DayWTime double precision; declare variable DayMask integer; declare variable HldDay integer; begin SummaWrk = 0.0; SummaWkn = 0.0; SummaHld = 0.0; for select ID, SlvID, Summa from ZpltCalcIncr where ID = :ID into :ID, :SlvID, :Summa do begin if (:ID is Null) then begin suspend; exit; end select S.PrsnID, S.MstID from ZpltCalcSlv S where ID = :SlvID into :PrsnID, :MstID; select name, DayWTime from Personal where ID = :PrsnID into :PrsnName, :DayWTime; if (:DayWTime is Null or :DayWTime = 0.0) then DayWTime = 8.0; select HolidayMask from ZpltCalcMst where ID = :MstID into :HolidayMask; if (:HolidayMask is Null) then HolidayMask = 0; -- рабочие дни select Count(*) from Zplt_TabelDaysSelect(:TabelPlanID) where wTime <> 0.0 into :WDays; if (:WDays = 0.0) then begin suspend; exit; end DaySumma = :Summa / :WDays; DayMask = 1; for Select T.DayNo, T.wTime, S.DayNo, S.wTime from Zplt_TabelDaysSelect (:TabelPlanID) T left join Zplt_SlvDaysSelect(:SlvID) S on S.DayNo = T.DayNo order by T.DayNo into :DayNoT, :wTimeT, :DayNoS, :wTimeS do begin S = 0.0; Select Bin_And(:HolidayMask, :DayMask) from rdb$database into :HldDay; if (:wTimeT <> 0.0) then begin -- рабочий день S = DaySumma / :wTimeT * :wTimeS; SummaWrk = :SummaWrk + :S; end else if (:HldDay <> 0) then begin -- праздничный день S = :DaySumma / :DayWTime * :wTimeS; if (:HIncrIncl = 0) then SummaHld = :SummaHld + (:S * :HIncrMul); else begin SummaWrk = :SummaWrk + :S; SummaHld = :SummaHld + :S * (:HIncrMul - 1.0); end end else begin -- выходной день S = :DaySumma / :DayWTime * :wTimeS; if (:WIncrIncl = 0) then SummaWkn = :SummaWkn + (:S * :WIncrMul); else begin SummaWrk = :SummaWrk + :S; SummaWkn = :SummaWkn + :S * (:WIncrMul - 1.0); end end if (:DayNoT < 31) then DayMask = DayMask * 2; end end SummaWrk = Cast(Cast(:SummaWrk * 100.00 as integer) as double precision) / 100.00; SummaWkn = Cast(Cast(:SummaWkn * 100.00 as integer) as double precision) / 100.00; SummaHld = Cast(Cast(:SummaHld * 100.00 as integer) as double precision) / 100.00; suspend; end^ ALTER PROCEDURE ZPLT_CALCINCRPRSNPROC ( ID INTEGER, WINCRID INTEGER, HINCRID INTEGER, WINCRINCL INTEGER, HINCRINCL INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS declare variable SlvID integer; declare variable IsRefIncr integer; declare variable IncrID integer; declare variable Oklad double precision; declare variable Proc double precision; declare variable IncrWID1 integer; -- оклад declare variable IncrWID2 integer; -- надбавка declare variable IncrHID1 integer; -- оклад declare variable IncrHID2 integer; -- надбавка -- сумма оклада (фактическая - растет по табелю) declare variable oSumma double precision; declare variable owSumma double precision; declare variable ohSumma double precision; -- сумма за выходные дни declare variable wSumma double precision; declare variable hSumma double precision; -- текущее начисление - пропорция от оклада declare variable ocSumma double precision; -- дельта оплаты за выходные дни с текущего начисления declare variable wcSumma double precision; declare variable hcSumma double precision; declare variable CIWIncrID integer; declare variable CIHIncrID integer; declare variable S double precision; begin Summa = 0.0; Select SlvID, IncrID, Proc from ZpltCalcIncr where ID = :ID into :SlvID, :IncrID, :Proc; select Min(CI.ID) from ZpltIncrIncr II, ZpltIncr I, ZpltCalcIncr CI where II.MIncrID = :WIncrID and I.ID = II.DIncrID and I.System_Flag in (1, 15) and CI.IncrID = II.DIncrID and CI.SlvID = :SlvID into :IncrWID1; -- оклад по данному сотруднику во входящих начислениях "Оплата за выходные" select CI.ID from ZpltCalcIncr CI, ZpltIncrIncr II where CI.ID = :ID and II.MIncrID = :WIncrID and II.DIncrID = CI.IncrID into :IncrWID2; -- текущее рассч. начисление - во входящих начислениях "Оплата за выходные" select Min(CI.ID) from ZpltIncrIncr II, ZpltIncr I, ZpltCalcIncr CI where II.MIncrID = :HIncrID and I.ID = II.DIncrID and I.System_Flag in (1, 15) and CI.IncrID = II.DIncrID and CI.SlvID = :SlvID into :IncrHID1; -- оклад по данному сотруднику во входящих начислениях "Оплата за праздники" select CI.ID from ZpltCalcIncr CI, ZpltIncrIncr II where CI.ID = :ID and II.MIncrID = :HIncrID and II.DIncrID = CI.IncrID into :IncrHID2; -- текущее рассч. начисление - во входящих начислениях "Оплата за праздники" IsRefIncr = Null; Select Cast(1 as integer) from rdb$database where Exists (select ID from ZpltIncrIncr where MIncrID = :IncrID) into :IsRefIncr; if (:IsRefIncr = 1) then begin -- есть привязанные начисления (база) Select Sum(CI.cSumma) from ZpltCalcIncr CI, ZpltIncrIncr II where CI.SlvID = :SlvID and II.DIncrID = CI.IncrID and II.MIncrID = :IncrID into :Summa; if (:Summa is Null) then Summa = 0.0; Summa = :Summa / 100.00 * :Proc; end else begin -- базовые начисления не указаны - базой считать оклад Select Sum(C.Summa) from ZPltCalcIncr C Left Join ZpltIncr I on I.ID=C.IncrID where C.SlvID = :SlvID and I.System_Flag in (1, 15) into :Oklad; if(:Oklad is Null) then Oklad = 0.0; Summa = :Oklad / 100.00 * :Proc; end if (:WIncrID is not Null and :HIncrID is not Null and :WIncrID = :HIncrID and :WIncrIncl = 1 and :HIncrIncl = 1 and :IncrWID1 is not Null and :IncrWID2 is not Null) then begin -- расчет процентной надбавки в одно начисление за выходные и праздники Select Min(ID) from ZpltCalcIncr where SlvID = :SlvID and IncrID = :WIncrID into :CIWIncrID; Select cSumma from ZpltCalcIncr where ID = :IncrWID1 into :oSumma; Select cSumma from ZpltCalcIncr where ID = :CIWIncrID into :wSumma; if (:wSumma <> 0.0 and :oSumma <> 0.0) then begin wcSumma = :Summa / (:oSumma+:wSumma) * wSumma; ocSumma = :Summa - :wcSumma; wcSumma = Cast(Cast(:wcSumma * 100.00 as integer) as double precision) / 100.00; ocSumma = Cast(Cast(:ocSumma * 100.00 as integer) as double precision) / 100.00; Update ZpltCalcIncr set cSumma = cSumma + :wcSumma where ID = :CIWIncrID; Summa = :ocSumma; end end if (:WIncrID is not Null and :HIncrID is not Null and :WIncrID <> :HIncrID and :WIncrIncl = 1 and :HIncrIncl = 1 and :IncrWID1 is not Null and :IncrWID2 is not Null and :IncrHID1 is not Null and :IncrHID2 is not Null) then begin -- расчет процентной надбавки в разные начисления выходные / праздники -- доплата за выходные Select Min(ID) from ZpltCalcIncr where SlvID = :SlvID and IncrID = :WIncrID into :CIWIncrID; -- доплата за праздники Select Min(ID) from ZpltCalcIncr where SlvID = :SlvID and IncrID = :HIncrID into :CIHIncrID; -- сумма оклада Select cSumma from ZpltCalcIncr where ID = :IncrWID1 into :owSumma; -- сумма оклада Select cSumma from ZpltCalcIncr where ID = :IncrHID1 into :ohSumma; -- сумма доплаты за выходные Select cSumma from ZpltCalcIncr where ID = :CIWIncrID into :wSumma; -- сумма доплаты за праздники Select cSumma from ZpltCalcIncr where ID = :CIHIncrID into :hSumma; S = :Summa; wcSumma = 0.0; hcSumma = 0.0; if (:wSumma <> 0.0 and :owSumma <> 0.0) then begin -- wcSumma = :S / (:owSumma+:wSumma) * :wSumma; wcSumma = :wSumma / 100.00 * :Proc; ocSumma = :S - :wcSumma; wcSumma = Cast(Cast(:wcSumma * 100.00 as integer) as double precision) / 100.00; ocSumma = Cast(Cast(:ocSumma * 100.00 as integer) as double precision) / 100.00; Update ZpltCalcIncr set cSumma = cSumma + :wcSumma where ID = :CIWIncrID; end if (:hSumma <> 0.0 and :ohSumma <> 0.0) then begin -- hcSumma = :S / (:ohSumma+:hSumma) * :hSumma; hcSumma = :hSumma / 100.00 * :Proc; ocSumma = :S - :hcSumma; hcSumma = Cast(Cast(:hcSumma * 100.00 as integer) as double precision) / 100.00; ocSumma = Cast(Cast(:ocSumma * 100.00 as integer) as double precision) / 100.00; Update ZpltCalcIncr set cSumma = cSumma + :hcSumma where ID = :CIHIncrID; end Summa = :Summa - (:wcSumma + :hcSumma); end suspend; end^ ALTER PROCEDURE ZPLT_CALCJOB1BRIGADE ( ID INTEGER) AS /* оплата за выполннные работы */ Declare Variable JTSumma double precision; /* премия за выполненные работы */ Declare Variable JPSumma double precision; /* тарифная оплата итого */ Declare Variable PTSumma double precision; /* тарифный коэффициент итого */ Declare Variable TK double precision; /* сумма приработка итого */ Declare Variable DSumma double precision; begin Select Sum(TSumma), Sum(PSumma) from ZpltJobGrpJob where MstID = :ID into :JTSumma, :JPSumma; if (:JTSumma is Null) then JTSumma = 0.0; if (:JPSumma is Null) then JPSumma = 0.0; Select Sum(TSumm*WTime), Sum(TSumm * WTime * KTU) from ZpltJobGrpPrsn where MstID = :ID into :PTSumma, :TK; if (:PTSumma is Null) then PTSumma = 0.0; if (:TK is Null) then TK = 0.0; DSumma = :JTSumma - :PTSumma; if (:PTSumma <> 0.0 and :TK <> 0.0) then begin Update ZpltJobGrpPrsn Set TSumma = Cast(((TSumm * WTime) * 100.00) as Integer) / 100.00, DSumma = Cast(:DSumma / :PTSumma * TSumm * WTime * 100.00 as integer) / 100.00, PSumma = Cast(:JPSumma / :TK * (TSumm*WTime*KTU) * 100.00 as integer) / 100.00 where MstID = :ID; end end^ ALTER PROCEDURE ZPLT_CALCJOB2BRIGADE ( ID INTEGER) AS /* оплата по тарифу (нормативное время) - итого */ Declare Variable TNSumma double precision; /* оплата по тарифу (фактическое время) - итого */ Declare Variable TFSumma double precision; /* премия - итого */ Declare Variable PSumma double precision; /* приработок итого */ declare Variable TDSumma double precision; /* тарифный коэффициент итого */ Declare Variable TK double precision; Declare Variable PProc double precision; begin /* нормативная заработная плата - итого */ Select Sum(O.NormWTime * P.TSumm) from ZpltJobGrpMst O, ZpltJobGrpPrsn P where O.ID = :ID and P.MstID=O.ID into :TNSumma; if (:TNSumma is Null) then TNSumma = 0.0; /* премия - итого */ Select PProc from ZpltJobGrpMst where ID=:ID into :PProc; PSumma = :TNSumma / 100.00 * :PProc; if (:PSumma is Null) then PSumma = 0.0; /* фактическая зарплата (по тарифу) */ Select Sum(P.WTime * P.TSumm) from ZpltJobGrpPrsn P where P.MstID = :ID into :TFSumma; if (:TFSumma is Null) then TFSumma = 0.0; /* приработок */ TDSumma = :TFSumma - :TNSumma; Select Sum(WTime * KTU) from ZpltJobGrpPrsn where MstID = :ID into :TK; if (:TK is Null) then TK = 0.0; if (:TFSumma <> 0.0 and :TK <> 0.0) then begin Update ZpltJobGrpPrsn Set TSumma = Cast(((TSumm * WTime) * 100.00) as Integer) / 100.00, DSumma = Cast(:TDSumma / :TFSumma * TSumm * WTime * 100.00 as integer) / 100.00, PSumma = Cast(:PSumma / :TK * (WTime*KTU) * 100.00 as integer) / 100.00 where MstID = :ID; end end^ ALTER PROCEDURE ZPLT_CALCJOBGRP ( ID INTEGER) AS Declare Variable MJID integer; Declare Variable SlvID integer; Declare Variable IncrID integer; /* начисление (из справочника) */ Declare Variable cIncrID integer; /* начисление в ведомости */ Declare Variable jSumma Double Precision; /* Job Grp Summa */ Declare Variable iSumma Double Precision; /* Prsn Incr Summa */ Declare Variable sFlag integer; Declare Variable KTU Double Precision; Declare Variable ktuSum Double Precision; Declare Variable Incr1ID integer; Declare Variable Incr2ID integer; Declare Variable Incr3ID integer; Declare Variable I1ID integer; Declare Variable I2ID integer; Declare Variable I3ID integer; Declare Variable Summa1 double precision; Declare Variable Summa2 double precision; Declare Variable Summa3 double precision; Declare Variable ZCalcTyp integer; begin -- Calculate GrpPrsn Job's /* Summary jSumma - Group By IncrID */ -- сдельная форма оплаты труда For Select MJ.ID, J.IncrID, I.System_Flag, Sum(JJ.Price*JJ.Quant) From ZPltJobGrpMst MJ, ZPltJobGrpJob JJ, ZpltJobsList J, ZpltIncr I Where MJ.MstID=:ID and (MJ.ZCalcTyp = 0 or MJ.ZCalcTyp is Null) and JJ.MstID=MJ.ID and J.ID=JJ.JobID and I.ID=J.IncrID Group by MJ.ID, J.IncrID, I.System_Flag Into :MJID, :IncrID, :sFlag, :jSumma do begin /* Prsn Count & Summary KTU */ ktuSum = 0.0; for Select SUM(KTU) from ZpltJobGrpPrsn where MstID=:MJID into :ktuSum do KtuSum = :KtuSum; For Select PJ.PrsnSlvID, PJ.KTU from ZPltJobGrpPrsn PJ where PJ.MstID=:MJID into :SlvID,:KTU do begin iSumma = 0; if(:ktuSum <> 0.0) then iSumma = :jSumma/:KtuSum*:KTU; iSumma = Cast(Cast(:iSumma * 100.0 as Integer) as double precision) / 100.0; cIncrID = null; for Select ID from ZpltCalcIncr where SlvID=:SlvID and IncrID=:IncrID into :cIncrID do cIncrID = :cIncrID; if(cIncrID is null) then begin insert into ZpltCalcIncr (ID, SlvID, IncrID, Summa) Values(Gen_ID(ZPltCalcIncr_ID,1),:SlvID,:IncrID,:iSumma); end else begin Update ZPltCalcIncr Set Summa=Summa + :iSumma where ID=:cIncrID; end end end -- сдельно-премиальная форма оплаты -- повременно-премиальная форма оплаты for Select MJ.ID, ZCalcTyp from ZpltJobGrpMst MJ where MJ.MstID = :ID and MJ.ZCalcTyp in (1,2) into :MJID, :ZCalcTyp do begin if (:ZCalcTyp = 1) then -- сдельно-премиальная Execute Procedure Zplt_CalcJob1Brigade(:MJID); if (:ZCalcTyp = 2) then -- повременно-премиальная Execute Procedure Zplt_CalcJob2Brigade(:MJID); for Select PrsnSlvID, Incr1ID, Incr2ID, Incr3ID, TSumma, DSumma, PSumma from ZpltJobGrpPrsn where MstID = :MJID into :SlvID, :Incr1ID, :Incr2ID, :Incr3ID, :Summa1, :Summa2, :Summa3 do begin I1ID = Null; I2ID = Null; I3ID = Null; Select ID from ZpltCalcIncr where SlvID = :SlvID and IncrID = :Incr1ID into :I1ID; if (:I1ID is Null and :Incr1ID is not Null) then begin I1ID = Gen_ID(ZpltCalcIncr_ID, 1); Insert into ZpltCalcIncr(ID, SlvID, IncrID, Summa, Proc) Values(:I1ID, :SlvID, :Incr1ID, 0.0, 0.0); end Select ID from ZpltCalcIncr where SlvID = :SlvID and IncrID = :Incr2ID into :I2ID; if (:I2ID is Null and :Incr2ID is not Null) then begin I2ID = Gen_ID(ZpltCalcIncr_ID, 1); Insert into ZpltCalcIncr(ID, SlvID, IncrID, Summa, Proc) Values(:I2ID, :SlvID, :Incr2ID, 0.0, 0.0); end Select ID from ZpltCalcIncr where SlvID = :SlvID and IncrID = :Incr3ID into :I3ID; if (:I3ID is Null and :Incr3ID is not Null) then begin I3ID = Gen_ID(ZpltCalcIncr_ID, 1); Insert into ZpltCalcIncr(ID, SlvID, IncrID, Summa, Proc) Values(:I3ID, :SlvID, :Incr3ID, 0.0, 0.0); end if (:I1ID is not Null) then Update ZpltCalcIncr set Summa = Summa + :Summa1 where ID = :I1ID; if (:I2ID is not Null) then Update ZpltCalcIncr set Summa = Summa + :Summa2 where ID = :I2ID; if (:I3ID is not Null) then Update ZpltCalcIncr set Summa = Summa + :Summa3 where ID = :I3ID; end end end^ ALTER PROCEDURE ZPLT_CALCJOBPRSN ( ID INTEGER) AS Declare Variable SlvID integer; Declare Variable IncrID integer; Declare Variable cIncrID integer; Declare Variable jSumma Double Precision; Declare Variable sFlag integer; begin /* Расчет индивидуальных нарядов */ /* Удаляем предыдущие начисления по нарядам */ For Select CI.ID From ZPltCalcSlv S, ZpltCalcIncr CI, ZpltJobsList J where S.MstID=:ID and CI.SlvID=S.ID and J.IncrID=CI.IncrID into :cIncrID do Delete From ZpltCalcIncr where ID=:cIncrID; /* Расчет... */ for Select SJ.PrsnID, I.ID, I.System_Flag, Sum(SJ.Summa) From ZPltJobPrsnMst MJ, ZPltJobPrsnSlv SJ, ZPltCalcSlv S, ZpltJobsList J, ZpltIncr I where MJ.MstID=:ID and SJ.MstID=MJ.ID and S.ID=SJ.PrsnID and J.ID=SJ.JobID and I.ID=J.IncrID Group By SJ.PrsnID, I.ID, I.System_Flag into :SlvID, :IncrID, :sFlag, :jSumma do begin insert into ZpltCalcIncr (ID, SlvID, IncrID, Summa) Values(Gen_ID(ZPltCalcIncr_ID,1),:SlvID,:IncrID,:jSumma); end end^ ALTER PROCEDURE ZPLT_CALCMST ( ID INTEGER) RETURNS ( MID INTEGER) AS Declare Variable SlvID integer; Declare Variable Incr1ID integer; Declare Variable Incr2ID integer; Declare Variable Incr3ID integer; begin /* очистка начислений для нарядов */ for Select P.Incr1ID, P.Incr2ID, P.Incr3ID from ZpltJobGrpMst M, ZpltJobGrpPrsn P where M.MstID = :ID and P.MstID = M.ID and P.Incr1ID is not null Group by P.Incr1ID, p.Incr2ID, P.Incr3ID into :Incr1ID, :Incr2ID, :Incr3ID do begin for Select ID from ZpltCalcSlv where MstID=:ID into :SlvID do begin Update ZpltCalcIncr set Summa = 0.0, cSumma = 0.0 where SlvID = :SlvID and (IncrID = :Incr1ID or IncrID = :Incr2ID or IncrID = :Incr3ID); end end /* очистка предыдущих рассчитанных сумм */ for Select ID from ZpltCalcSlv where MstID = :ID into :SlvID do begin Update ZpltCalcIncr Set cSumma = 0.0 where SlvID = :SlvID and cSumma <> 0.0; Update ZpltCalcDecr Set cSumma = 0.0 where SlvID = :SlvID and cSumma <> 0.0; end /* индивидуальные наряды */ Execute Procedure ZPlt_CalcJobPrsn :ID; /* бригадные наряды */ Execute Procedure ZPlt_CalcJobGrp :ID; /* расчет начислений */ Execute Procedure ZPlt_CalcIncrMst :ID; /* расчет удержаний */ Execute Procedure ZPlt_CalcDecrMst :ID; /* расчет начислений на фонд оплаты труда */ Execute Procedure ZPlt_CalcFotMst :ID; /* формирование проводок */ Update ZpltCalcMst Set CalcDate = Current_TimeStamp where ID=:ID; MID = :ID; Suspend; end^ ALTER PROCEDURE ZPLT_CALCMSTDELACCNREC ( ID INTEGER) AS Declare Variable AccnKey integer; Declare Variable cKey integer; begin for Select ID, AccnKey from ZPltCalcCrAc where MstID=:ID into :cKey, :AccnKey do begin Delete From ZPltCalcCrAc where ID=:cKey; Delete From AccnProv Where ID=:AccnKey; end end^ ALTER PROCEDURE ZPLT_CALCMSTGENACCNREC ( ID INTEGER) RETURNS ( MID INTEGER) AS Declare Variable dID integer; Declare Variable Summa Double Precision; Declare Variable Dt Varchar(5); Declare Variable Kt Varchar(5); Declare Variable Dt1 integer; Declare Variable Kt1 Integer; Declare Variable Dtp1 Integer; Declare Variable Ktp1 Integer; Declare Variable Dt3 integer; Declare Variable Kt3 Integer; Declare Variable Dtp3 Integer; Declare Variable Ktp3 Integer; Declare Variable Dt4 integer; Declare Variable Kt4 Integer; Declare Variable Dtp4 Integer; Declare Variable Ktp4 Integer; Declare Variable StorID integer; Declare Variable Nbr Varchar(20); Declare Variable Comment Varchar(255); Declare Variable DtPrt integer; Declare Variable DtObj integer; Declare Variable KtPrt integer; Declare Variable KtObj integer; Declare Variable OperID integer; Declare Variable Dat Date; Declare Variable AccnKey integer; Declare Variable UserName Varchar(20); Declare Variable Proc Double Precision; Declare Variable IncrID Integer; Declare Variable PrsnID Integer; declare variable Storno Integer; declare variable FinRes Integer; declare variable OrgnID integer; declare variable OurOrgnID integer; declare variable dt8 integer; Declare Variable dt9 integer; declare variable kt8 integer; Declare Variable kt9 Integer; declare variable VL1 integer; Declare Variable VL2 Integer; begin Execute Procedure Zplt_CalcMstDelAccnRec :ID; for select ID, Dat_, Nbr, OperID,UserName, OurOrgnID, VL1, VL2 from ZPltCalcMst where ID=:ID into :MID, :Dat, :Nbr, :OperID, :UserName, :OurOrgnID, :VL1, :VL2 do begin -- Проводки по начислениям for Select Dt, Kt, Comment, DtPrt, DtObj, KtPrt, KtObj, RealTyp, Storno, FinRes, VL1, VL2 from StorAccn where Oper = 70 and OperID = :OperID and Stor=0 into :Dt, :Kt, :Comment, :DtPrt, :DtObj, :KtPrt, :KtObj, :DID, :Storno, :FinRes, :VL1, :VL2 do begin Dt4 = Null; Kt4 = Null; Dt3 = Null; Kt3 = Null; Select A1, A3, A4, a8, a9 From AccnPlan Where Accn=:DT into :Dt1, :Kt3, :Dt4, :Dt8, :Dt9; Select A1, A3, A4, a8, a9 From AccnPlan Where Accn=:KT into :Kt1, :Kt3, :Kt4, :Kt8, :Kt9; if(:Dt1 = 0) then Dt1 = null; if(:kt1 = 0) then kt1 = null; if(:Dt3 = 0) then Dt3 = null; if(:kt3 = 0) then kt3 = null; if(:Dt4 = 0) then Dt4 = null; if(:kt4 = 0) then kt4 = null; if (:Dt1 is not Null) then Dtp1 = :OurOrgnID; else Dtp1 = Null; if (:Kt1 is not Null) then Ktp1 = :OurOrgnID; else Ktp1 = Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if ((:Dt3 is not Null) or (:Kt3 is not Null)) then begin -- аналитика по сотрудникам for select P.ID, P.StorID, Sum(D.cSumma) from ZPltCalcSlv S Left Join Personal P on P.ID=S.PrsnID Join ZPltCalcIncr D on D.SlvID=S.ID and D.IncrID=:DID where S.MstID=:ID Group by P.ID, P.StorID into :PrsnID, :StorID, :Summa do begin if (:Storno = 1) then Summa = -:Summa; if (:Summa <> 0) then begin if (:Dt3 = 1) then dtp3 = :PrsnID; else dtp3 = Null; if (:Kt3 = 1) then ktp3 = :PrsnID; else ktp3 = Null; if (:Dt4 = 1) then dtp4 = :StorID; else dtp4 = Null; if (:Kt4 = 1) then ktp4 = :StorID; else ktp4 = Null; AccnKey = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID, OurOrgnID, Dat_, Document, Dt, Kt, Summa, Comment, UserName, DtPrt, DtObj, KtPrt, KtObj, Oper, OperID, DocID, Dt1, Kt1, Dt4, Kt4, dt8, dt9, kt8, kt9, dt3, kt3) values (:AccnKey, :OurOrgnID, :Dat, :Nbr, :Dt, :Kt, :Summa, :Comment, :UserName, :DtPrt, :DtObj, :KtPrt, :KtObj, 70, :OperID, :ID, :Dtp1, :Ktp1, :Dtp4, :Ktp4, :dt8, :dt9, :kt8, :kt9, :dtp3, :ktp3); Insert into ZPltCalcCrAc (ID, Typ, TypID, MstID, AccnKey) Values (Gen_ID(ZPltCalcCrAc_ID,1),0,:dID,:ID,:AccnKey); end end end -- аналитика по сотрудникам else if ((:Dt4 is not null) or (:Kt4 is not null)) then begin -- аналитика по складам for select P.StorID, Sum(D.cSumma) from ZPltCalcSlv S Left Join Personal P on P.ID=S.PrsnID Join ZPltCalcIncr D on D.SlvID=S.ID and D.IncrID=:DID where S.MstID=:ID Group by P.StorID into :StorID, :Summa do begin if (:Storno = 1) then Summa = -:Summa; if (:Summa <> 0) then begin if(:Dt4 = 1) then dtp4=:StorID; else dtp4 = Null; if(:Kt4 = 1) then ktp4=:StorID; else ktp4 = Null; AccnKey = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID,OurOrgnID,Dat_,Document,Dt,Kt,Summa,Comment,UserName, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID,Dt1,Kt1,Dt4,Kt4, dt8, dt9, kt8, kt9) values (:AccnKey,:OurOrgnID,:Dat,:Nbr,:Dt,:Kt,:Summa,:Comment,:UserName, :DtPrt,:DtObj,:KtPrt,:KtObj,70,:OperID,:ID,:Dtp1,:Ktp1,:Dtp4,:Ktp4, :dt8, :dt9, :kt8, :kt9); Insert into ZPltCalcCrAc (ID, Typ, TypID, MstID, AccnKey) Values (Gen_ID(ZPltCalcCrAc_ID,1),0,:dID,:ID,:AccnKey); end end end -- аналитика по складам else begin -- по видам начислений for select Sum(D.cSumma) from ZPltCalcSlv S, ZPltCalcIncr D where S.MstID=:ID and D.SlvID=S.ID and D.IncrID=:DID into :Summa do begin if (Storno=1) then Summa = -:Summa; if (:Summa <> 0) then begin AccnKey = Gen_ID(AccnProv_ID, 1); insert into AccnProv(ID,OurOrgnID,Dat_,Document,Dt,Kt,Summa,Comment,UserName, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID,Dt1,Kt1, dt8, dt9, kt8, kt9) values (:AccnKey,:OurOrgnID,:Dat,:Nbr,:Dt,:Kt,:Summa,:Comment,:UserName, :DtPrt,:DtObj,:KtPrt,:KtObj,70,:OperID,:ID,:Dtp1,:Ktp1, :dt8, :dt9, :kt8, :kt9); Insert into ZPltCalcCrAc (ID, Typ, TypID, MstID, AccnKey) Values (Gen_ID(ZPltCalcCrAc_ID,1),0,:dID,:ID,:AccnKey); end end end -- по видам начислений end -- Проводки по начислениям -- Проводки по удержаниям for Select Dt,Kt,Comment,DtPrt,DtObj,KtPrt,KtObj,RealTyp, Storno, FinRes, VL1, VL2 from StorAccn where Oper=70 and OperID=:OperID and Stor=1 into :Dt,:Kt,:Comment,:DtPrt,:DtObj,:KtPrt,:KtObj,:DID, :Storno, :FinRes, :VL1, :VL2 do begin Dt3=Null; Kt3=Null; Select a1, A3, a8, a9 From AccnPlan Where Accn=:DT into :DT1, :DT3, :dt8, :dt9; Select a1, A3, a8, a9 From AccnPlan Where Accn=:KT into :KT1, :KT3, :kt8, :kt9; if(:Dt1 = 0) then Dt1 = Null; if(:Kt1 = 0) then Kt1 = Null; if(:Dt3 = 0) then Dt3 = Null; if(:kt3 = 0) then kt3 = Null; if (:Dt1 is not Null) then Dtp1 = :OurOrgnID; else Dtp1 = Null; if (:Kt1 is not Null) then Ktp1 = :OurOrgnID; else Ktp1 = Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if(:Dt3 is not null or :Kt3 is not null) then begin -- аналитика по сотрудникам for select S.PrsnID, Sum(D.cSumma) from ZPltCalcSlv S, ZPltCalcDecr D where S.MstID=:ID and D.SlvID=S.ID and D.DecrID=:DID Group by S.PrsnID into :PrsnID, :Summa do begin if (:Storno = 1) then Summa = -:Summa; if (:Summa <> 0) then begin if(:Dt3 is not Null) then Dtp3=:PrsnID; else Dtp3=Null; if(:Kt3 is not Null) then Ktp3=:PrsnID; else Ktp3=Null; AccnKey = Gen_ID(AccnProv_ID,1); insert into AccnProv(ID,OurOrgnID,Dat_,Document,Dt,Kt,Summa,Comment,UserName, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID,Dt1,Kt1,Dt3,Kt3, dt8, dt9, kt8, kt9) values (:AccnKey,:OurOrgnID,:Dat,:Nbr,:Dt,:Kt,:Summa,:Comment,:UserName, :DtPrt,:DtObj,:KtPrt,:KtObj,70,:OperID,:ID,:Dtp1,:Ktp1,:Dtp3,:Ktp3, :dt8, :dt9, :kt8, :kt9); Insert into ZPltCalcCrAc (ID, Typ, TypID, MstID, AccnKey) Values (Gen_ID(ZPltCalcCrAc_ID,1),1,:dID,:ID,:AccnKey); end end end -- аналитика по сотрудникам else begin -- по видам удержаний for select Sum(D.cSumma) from ZPltCalcSlv S, ZPltCalcDecr D where S.MstID=:ID and D.SlvID=S.ID and D.DecrID=:DID into :Summa do begin if (:Storno=1) then Summa = -:Summa; if (:Summa <> 0) then begin AccnKey = Gen_ID(AccnProv_ID,1); insert into AccnProv(ID,OurOrgnID,Dat_,Document,Dt,Kt,Summa,Comment,UserName, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID,Dt1,Kt1, dt8, dt9, kt8, kt9) values (:AccnKey,:OurOrgnID,:Dat,:Nbr,:Dt,:Kt,:Summa,:Comment,:UserName, :DtPrt,:DtObj,:KtPrt,:KtObj,70,:OperID,:ID,:Dtp1,:Ktp1, :dt8, :dt9, :kt8, :kt9); Insert into ZPltCalcCrAc (ID, Typ, TypID, MstID, AccnKey) Values (Gen_ID(ZPltCalcCrAc_ID,1),1,:dID,:ID,:AccnKey); end end end -- по видам удержаний end -- проводки по удержаниям -- Проводки по начислениям на ФОТ for Select Dt,Kt,Comment,DtPrt,DtObj,KtPrt,KtObj,RealTyp,SumTyp,Proc, Storno, FinRes, VL1, VL2 from StorAccn where Oper=70 and OperID=:OperID and Stor=2 into :Dt,:Kt,:Comment,:DtPrt,:DtObj,:KtPrt,:KtObj,:DID,:IncrID,:Proc, :Storno, :FinRes, :VL1, :VL2 do begin Dt1=Null; Kt1=Null; Dt4=Null; Kt4=Null; Select A1, A4, a8, a9 From AccnPlan Where Accn=:DT into :DT1, :DT4, :dt8, :dt9; Select A1, A4, a8, a9 From AccnPlan Where Accn=:KT into :KT1, :KT4, :kt8, :kt9; if(:Dt1=0) then Dt1=null; if(:kt1=0) then kt1=null; if(:Dt4=0) then Dt4=null; if(:kt4=0) then kt4=null; if (:Dt1 is not Null) then Dtp1 = :OurOrgnID; else Dtp1 = Null; if (:Kt1 is not Null) then Ktp1 = :OurOrgnID; else Dtp1 = Null; if (:dt8 is not Null) then dt8 = :VL1; if (:dt9 is not Null) then dt9 = :VL2; if (:kt8 is not Null) then kt8 = :VL1; if (:kt9 is not Null) then kt9 = :VL2; if ((:Dt4 is not null) or (:Kt4 is not null)) then begin for select P.StorID, HF.OrgnID, Sum(F.cSumma) from ZpltCalcSlv S Left Join Personal P on P.ID=S.PrsnID Join ZPltCalcSlvFot F on F.SlvID=S.ID and F.FotID=:DID and F.IncrID=:IncrID Join ZpltDecrFot HF on HF.ID=F.FotID where S.MstID=:ID Group By P.StorID, HF.OrgnID into :StorID, :OrgnID, :Summa do begin if(:Summa is null) then Summa=0; if (:Proc <> 0 and :Proc is not null) then Summa = :Summa / 100 * :Proc; if (:Summa <> 0) then begin if (:Storno=1) then Summa = -:Summa; if (:Dt1 is not Null) then Dtp1=:OrgnID; else Dtp1=Null; if (:Kt1 is not Null) then Ktp1=:OrgnID; else Ktp1=Null; if (:Dt4 is not Null) then Dtp4=:StorID; else Dtp4=Null; if (:Kt4 is not Null) then Ktp4=:StorID; else Ktp4=Null; if (:Dt1 is not Null and :Dtp1 is Null) then Dtp1 = :OurOrgnID; if (:Kt1 is not Null and :Ktp1 is Null) then Ktp1 = :OurOrgnID; AccnKey = Gen_ID(AccnProv_ID,1); insert into AccnProv(ID,OurOrgnID,Dat_,Document,Dt,Kt,Summa,Comment,UserName, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID,Dt1,Kt1,Dt4,Kt4, dt8, dt9, kt8, kt9) values (:AccnKey,:OurOrgnID,:Dat,:Nbr,:Dt,:Kt,:Summa,:Comment,:UserName, :DtPrt,:DtObj,:KtPrt,:KtObj,70,:OperID,:ID,:Dtp1,:Ktp1,:Dtp4,:Ktp4, :dt8, :dt9, :kt8, :kt9); Insert into ZPltCalcCrAc (ID, Typ, TypID, MstID, AccnKey) Values (Gen_ID(ZPltCalcCrAc_ID,1),2,:dID,:ID,:AccnKey); end end end else begin for select Sum(F.cSumma) from ZpltCalcSlv S, ZPltCalcSlvFot F, ZpltDecrFot HF where S.MstID=:ID and F.SlvID=S.ID and F.FotID+0=:DID and F.IncrID=:IncrID and HF.ID=F.FotID into :Summa do begin if(:Summa is null) then Summa = 0.0; if (:Summa <> 0.0) then begin if (:Dt1 is not null) then Dtp1 = :OrgnID; else Dtp1 = Null; if (:Kt1 is not null) then Ktp1 = :OrgnID; else Ktp1 = Null; if (:Dt1 is not Null and :Dtp1 is Null) then Dtp1 = :OurOrgnID; if (:Kt1 is not Null and :Ktp1 is Null) then Ktp1 = :OurOrgnID; if (:Storno=1) then Summa = -:Summa; AccnKey = Gen_ID(AccnProv_ID,1); insert into AccnProv(ID,OurOrgnID,Dat_,Document,Dt,Kt,Summa,Comment,UserName, DtPrt,DtObj,KtPrt,KtObj,Oper,OperID,DocID,DT1,KT1, dt8, dt9, kt8, kt9) values (:AccnKey,:OurOrgnID,:Dat,:Nbr,:Dt,:Kt,:Summa,:Comment,:UserName, :DtPrt,:DtObj,:KtPrt,:KtObj,70,:OperID,:ID,:Dtp1,:Ktp1, :dt8, :dt9, :kt8, :kt9); Insert into ZPltCalcCrAc (ID, Typ, TypID, MstID, AccnKey) Values (Gen_ID(ZPltCalcCrAc_ID,1),2,:dID,:ID,:AccnKey); end end end end end -- проводки по начислениям на ФОТ Suspend; end^ ALTER PROCEDURE ZPLT_CALCPRSNUNDIRECT ( ID INTEGER, CINCRID INTEGER) AS Declare Variable ecSumma Double Precision; Declare Variable eSumma Double Precision; Declare Variable Step Double Precision; Declare Variable iCount integer; Declare Variable IncrID Integer; Declare Variable iSumma Double Precision; Declare Variable OurOrgnID integer; Declare Variable HIncrMul Double Precision; Declare Variable WIncrMul Double Precision; Declare Variable HolidayIncrID integer; Declare Variable WeekendIncrID integer; Declare Variable HcIncrID integer; Declare Variable WcIncrID integer; Declare Variable CalcDate Date; Declare Variable TabelDate Date; Declare Variable TabelID integer; Declare Variable TabelPlanID integer; Declare Variable TPID integer; Declare Variable TID integer; Declare Variable TimeW double precision; declare variable WIncrIncl integer; declare variable HIncrIncl integer; begin Select M.OurOrgnID, M.DAT_ from ZpltCalcSlv S, ZpltCalcMst M where S.ID=:ID and M.ID=S.MstID into :OurOrgnID, :CalcDate; HIncrMul = 1.0; WIncrMul = 1.0; /* коффициент повышения ставок для праздничных дней */ Select cast(Val as Double Precision) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltIncrHoliday' into :HIncrMul; /* коффициент повышения ставок для выходных дней */ Select cast(Val as Double Precision) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltIncrWeekend' into :WIncrMul; /* начисление - Оплата за Выходные Дни */ Select cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltHolidayIncr' into :HolidayIncrID; /* начисление - Оплата за Праздничные Дни */ Select cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltWeekendIncr' into :WeekendIncrID; /* включать в оклад - Оплата за Выходные Дни */ Select cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltInclWeekend' into :WIncrIncl; /* включать в оклад - Оплата за Праздничные Дни */ Select cast(Val as Integer) from SysConst where OurOrgnID=:OurOrgnID and Name='ZpltInclHoliday' into :HIncrIncl; if (:WIncrIncl is Null) then WIncrIncl = 0; if (:HIncrIncl is Null) then HIncrIncl = 0; /* есть ли эти начисления на самом деле */ HcIncrID = null; Select ID from ZpltIncr where ID=:HolidayIncrID into :HcIncrID; if(:HcIncrID is Null) then HolidayIncrID=Null; WcIncrID = null; Select ID from ZpltIncr where ID=:WeekendIncrID into :WcIncrID; if(:WcIncrID is Null) then WeekendIncrID=Null; Select xDate from f_MonthFirstDay(:CalcDate) into :TabelDate; TimeW = 0.0; Select P.TabelID from ZPltCalcSlv S, Personal P where S.ID=:ID and P.ID = S.PrsnID into :TID; if (:TID is Null) then begin TabelPlanID = Null; end else if (:TID is not Null and (:TID <> :TabelID or :TabelID is Null)) then begin TPID = Null; TimeW = 0.0; Select Max(TP.ID) from ZpltTabelPlan TP where TP.TabelID = :TID and OurOrgnID = :OurOrgnID and bDate=:TabelDate into :TPID; if (:TPID is not Null) then Select WTime from ZpltTabelPlan where ID = :TPID into :TimeW; TabelPlanID = :TPID; TabelID = :TID; end eSumma = null; Select eSumma from ZPltCalcSlv where ID=:ID into :eSumma; if (:eSumma is null) then exit; /* Prsn not exist */ IncrID = Null; if ((:cIncrID is Null) or (:cIncrID=0)) then begin /* начисление явно не задано */ /* Пытаемся выбрать Оклад... начисление, сумму которого будем подбирать */ select Min(CI.ID) from ZpltCalcIncr CI, ZpltIncr I where CI.SlvID=:ID and I.ID = CI.IncrID and I.System_Flag in (1, 15) into :IncrID; if (:IncrID is null) then begin /* Если Оклада нет - берем любое начисление... */ select Min(ID) from ZpltCalcIncr where SlvID=:ID into :IncrID; end end else begin Select Min(ID) from ZpltCalcIncr where SlvID=:ID and ID=:cIncrID into :IncrID; end if (:IncrID is null) then exit; /* нет ни одного начисления */ iSumma = :eSumma * 2.0; iCount = 0; Step = :eSumma; if (:Step = 0.0) then Step = 1.0; /* Debug: delete from GoodsChk; */ while (1.0 > 1E-10) do begin iCount=:iCount+1; if(:iCount > 200) then exit; /* защита от зацикливания */ /* Устанавливаем сумму начисления... */ Update ZpltCalcIncr set Summa=:iSumma where ID=:IncrID; /* Расчет начислений */ execute procedure Zplt_CalcIncrPrsn :ID, :WIncrMul, :HIncrMul, :WeekendIncrID, :HolidayIncrID, :WIncrIncl, :HIncrIncl, :TimeW, :TabelPlanID; /* Расчет удержаний */ Execute Procedure ZPlt_CalcDecrPrsn :ID; /* Сколько получилось к выплате... */ Select eSumma from ZPltCalcSlv where ID=:ID into :ecSumma; /* Debug: insert into goodsChk (id, d1, d2, d3) values (:iCount, :iSumma, :ecSumma, :Step); */ /* Calc summa analyse... */ if(:ecSumma = :eSumma) then exit; if (ecSumma = 0.0) then ecSumma = 1.0; Step = (:ecSumma - :eSumma) * (iSumma / :ecSumma); iSumma = :iSumma - :Step; iSumma = Cast(Cast(iSumma * 100.0 as integer) as double precision) / 100.0; end end^ ALTER PROCEDURE ZPLT_CALCRELIDX ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( CURDATE TIMESTAMP, CURIDX DOUBLE PRECISION, RELIDX DOUBLE PRECISION, CALCIDX DOUBLE PRECISION, PREVIDX DOUBLE PRECISION, PREV1IDX DOUBLE PRECISION) AS declare variable IdxID integer; declare variable xIdx double precision; begin Select Min(ID) from CurrTyp where Sys_Flag = 1 into :IdxID; if (:IdxID is not Null) then begin RelIdx = 1.0; PrevIdx = RelIdx; Prev1Idx = RelIdx; CalcIdx = 1.0; xIdx = 1.0; Select xDate from f_MonthLastDay(:bDate) into :bDate; Select xDate from f_MonthLastDay(:eDate) into :eDate; CurDate = :bDate; while (:CurDate <= :eDate) do begin xIdx = :PrevIdx; PrevIdx = :RelIdx; Select Val from Currency_GetValue(:IdxID, :CurDate) into :CurIdx; if (:CurIdx = 1.0) then CurIdx = 100.00; CurIdx = :CurIdx / 100.00; if (:PrevIdx >= 1.011) then RelIdx = :CurIdx; else RelIdx = RelIdx * :CurIdx; RelIdx = Cast(Cast(:RelIdx * 1000.00 as Integer) as double precision) / 1000.00; if (:CurDate = :eDate) then Suspend; if (:PrevIdx >= 1.011) then begin CalcIdx = :CalcIdx * :PrevIdx; CalcIdx = Cast(Cast(:CalcIdx * 1000.00 as Integer) as double precision) / 1000.00; end CurDate = :CurDate + 1.0; Select xDate from f_MonthLastDay(:CurDate) into :CurDate; Prev1Idx = :PrevIdx; end end end^ ALTER PROCEDURE ZPLT_CALCSLVBL ( SIID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION, BDATE TIMESTAMP, EDATE TIMESTAMP, ISUMMA DOUBLE PRECISION, SUMMA1 DOUBLE PRECISION, ALLDAYS INTEGER, WRKDAYS INTEGER, HLDDAYS INTEGER, WKNDAYS INTEGER, FCTDAYS INTEGER, CLCDAYS INTEGER) AS declare variable ID Integer; declare variable BLDays integer; /* период больничного - начало */ declare variable BLDate Date; /* период больничного - конец */ declare variable ELDate Date; /* количество расчетных месяцев */ declare variable MonthCnt Integer; declare variable SlvID integer; declare variable PrsnID integer; declare variable Inp_Date Date; declare variable DayWTime Double Precision; declare variable WTimeAll Double Precision; declare variable BLProc double Precision; declare variable mCnt integer; Declare variable xDate Date; Declare variable DayOfWeek integer; Declare variable xDays integer; declare variable MRound integer; declare variable cDate TimeStamp; declare variable Date1 TimeStamp; declare variable Date2 TimeStamp; -- метод расчета: 0 - по рабочим дням, 1 - по календарным дням declare variable CalcType integer; begin Summa = 0.0; Select CI.ID, CI.blDate, CI.elDate, CI.MonthCnt, CI.SlvID, CI.Proc, CoalEsce(CI.MRound, 0), M.DAT_ from ZpltCalcIncr CI join ZpltCalcSlv S on S.ID=CI.SlvID join ZpltCalcMst M on M.ID=S.MstID where CI.ID=:SIID into :ID, :BLDATE, :ELDATE, :MonthCnt, :SlvID, :BLProc, :MRound, :cDate; CalcType = 0; if (:cDate >= '01.06.2015') then CalcType = 1; if (:ID is Null) then begin Suspend; Exit; end Select PrsnID from ZpltCalcSlv where ID=:SlvID into :PrsnID; Select Inp_Date, DayWTime from Personal where ID = :PrsnID into :Inp_Date, :DayWTime; Select Result from F_ElapsedDays(:blDate,:elDate) into :BLDays; BLDays = :BLDays + 1; Summa = :BLDays; /* выделаем период - предыдущих MonthCnt месяцев: */ /* Дата расчетной ведомости */ /* Select M.DAT_ from ZpltCalcMst M, ZpltCalcSlv S where S.ID=:SlvID and M.ID=S.MstID into :eDate; */ /* Предыдущий месяц... */ eDate = blDate; /* начальная дата больничного */ /* первый день месяца */ Select xDate from f_MonthFirstDay(:eDate) into :eDate; /* последний день предыдущего месяца */ eDate = :eDate - 1.0; /* Select xDate from F_AddMonth(:eDate,-1) into :eDate; Select xDate from F_MonthLastDay(:eDate) into :eDate;*/ /* Начало периода */ mCnt = -:MonthCnt+1; Select xDate from F_AddMonth(:eDate, :mCnt) into :bDate; Select xDate from F_MonthFirstDay(:bDate) into :bDate; Select Sum(S.wTime) from ZpltCalcMst M, ZpltCalcSlv S where M.DAT_ >= :BDATE and M.DAT_ <= :EDATE and M.Avans=0 and S.MstID=M.ID and S.PrsnID = :PrsnID into :WTimeAll; Select Sum(C.cSumma) from ZpltCalcMst M, ZpltCalcSlv S, ZpltCalcIncr C, ZpltIncr I where M.DAT_ >= :BDATE and M.DAT_ <= :EDATE and M.Avans=0 and S.MstID=M.ID and S.PrsnID = :PrsnID and C.SlvID=S.ID and I.ID=C.IncrID -- прочие начисления, оклад, индексация and (I.System_Flag in (0, 1, 7, 15) or I.System_Flag is Null or (I.System_Flag = 5 and :blDate >= '04.07.2015') ) into :iSumma; AllDays = 0; /* выходные и рабочие дни */ WrkDays = 0; HldDays = 0; WknDays = 0; xDate = :bDate; while (:xDate <= :eDate) do begin AllDays = AllDays + 1; Select Result from F_DayOfWeek(:xDate) into :DayOfWeek; if (:DayOfWeek in (5,6)) then WknDays = WknDays + 1; xDate = :xDate + 1; end /* праздничные дни за расчетный период */ select Days from Zplt_HldDays(:bDate, :eDate) into :HldDays; WrkDays = :AllDays - (:WknDays + :HldDays); /* расчетные дни для начисления */ xDate = :blDate; ClcDays = 0; while (:xDate <= :elDate) do begin ClcDays = ClcDays + 1; Select Result from F_DayOfWeek(:xDate) into :DayOfWeek; if (:DayOfWeek in (5,6)) then ClcDays = ClcDays - 1; xDate = :xDate + 1; end select Days from Zplt_HldDays(:blDate, :elDate) into :xDays; ClcDays = :ClcDays - :xDays; if (:DayWTime=0 or :DayWTime is Null) then DayWTime = 8; FctDays = :WTimeAll / :DayWTime; -- Среднедневная зарплата Summa1 = :iSumma / (:WTimeAll / :DayWTime); if (:CalcType=1) then begin select Result + 1 from F_ElapsedDays(:blDate, :elDate) into :BlDays; select Result + 1 from F_ElapsedDays(:bDate, :eDate) into :FctDays; for select CI.blDate, CI.elDate from ZpltCalcSlv S join ZpltCalcIncr CI on CI.SlvID=S.ID and CI.blDate <= :eDate and CI.elDate >= :bDate and CI.blDate is not Null and CI.elDate is not Null join ZpltIncr I on I.ID=CI.IncrID and I.System_Flag in (3, 8, 9) where S.PrsnID=:PrsnID into :Date1, :Date2 do begin if (:Date1 < :bDate) then Date1 = :bDate; if (:Date2 > :eDate) then Date2 = :eDate; select Result + 1 from F_ElapsedDays(:Date1, :Date2) into :xDays; FctDays = :FctDays - :xDays; end for select V.bDate, V.eDate from ZpltSertVacat V where V.PrsnID=:PrsnID and V.Typ=1 and V.bDate <= :eDate and V.eDate >= :bDate and V.bDate is not Null and V.eDate is not Null into :Date1, :Date2 do begin if (:Date1 < :bDate) then Date1 = :bDate; if (:Date2 > :eDate) then Date2 = :eDate; select Result + 1 from F_ElapsedDays(:Date1, :Date2) into :xDays; FctDays = :FctDays - :xDays; end Summa1 = :iSumma / :FctDays; ClcDays = :BlDays; end -- Приводим к целым копейкам if (:MRound = 1) then Summa1 = Cast((Summa1 * 100.00) as integer) / 100.00; -- Сумма больничных Summa = :Summa1 * :ClcDays / 100.00 * :BLProc; -- Приводим к целым копейкам Summa = Cast(Cast((Summa * 100.0) as Integer) as double precision) / 100.0; Suspend; end^ ALTER PROCEDURE ZPLT_CALCSLVIDX ( SIID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION) AS DECLARE VARIABLE MDATE TIMESTAMP; DECLARE VARIABLE MID INTEGER; DECLARE VARIABLE BDATE TIMESTAMP; DECLARE VARIABLE EDATE TIMESTAMP; DECLARE VARIABLE CALCIDX DOUBLE PRECISION; DECLARE VARIABLE SLVID INTEGER; DECLARE VARIABLE BSUMMA DOUBLE PRECISION; DECLARE VARIABLE IINCRID INTEGER; DECLARE VARIABLE MINSUMMA DOUBLE PRECISION; DECLARE VARIABLE MINSUMID INTEGER; DECLARE VARIABLE PRSNID INTEGER; DECLARE VARIABLE PRSNINPDATE TIMESTAMP; DECLARE VARIABLE IDXDATE TIMESTAMP; begin Summa = 0.0; Select M.ID, M.Dat_, CS.ID, CI.IncrID, CS.PrsnID, P.Idx_Date from ZpltCalcIncr CI, ZpltCalcSlv CS, ZpltCalcMst M, Personal P where CI.ID = :SIID and CS.ID=CI.SlvID and M.ID=CS.MstID and P.ID=CS.PrsnID into :mID, :mDate, :SlvID, :IIncrID, :PrsnID, :IdxDate; if (:mID is not Null) then begin if (:IdxDate is not Null) then bDate = IdxDate; else bDate = '31.03.2003'; /* граница для расчета прироста индекса */ /* если сотрудник принят на работу позже - сдвигаем границу */ select P.Inp_Date from Personal P where P.ID = :PrsnID into :PrsnInpDate; if (:PrsnInpDate is not Null and :PrsnInpDate > :bDate) then /* Сдвигаем на месяц от даты приема(месяц приема - базовый) испр.18_07_2005 - старая процедура _old*/ execute procedure f_addmonth(PrsnInpDate,1) returning_values(bDate); /* расчетная дата */ Select xDate from f_MonthLastDay(:mDate) into :eDate; /* величина прироста индекса */ select CalcIdx from Zplt_CalcRelIdx(:bDate, :eDate) into :CalcIdx; /* если прирост более 1%... */ if (:CalcIdx >= 1.01) then begin MinSumma = 0.0; /* прожиточный минимум */ select Min(ID) from CurrTyp where Sys_Flag = 2 into :MinSumID; select Val from Currency_GetValue(:MinSumID, :eDate) into :MinSumma; select Sum(CI.cSumma) from ZpltCalcIncr CI, ZpltIncrIncr II where CI.SlvID = :SlvID and II.DIncrID = CI.IncrID and II.MIncrID = :IIncrID into :bSumma; if (:bSumma is Null) then bSumma = 0.0; if (:bSumma > :MinSumma) then bSumma = :MinSumma; Summa = ((:CalcIdx * 100.0) - 100.0) * :bSumma / 100.0; Summa = Cast(Cast(:Summa * 100.0 as Integer) as double precision) / 100.0; end Suspend; end end^ ALTER PROCEDURE ZPLT_CALCSLVO ( SIID INTEGER) RETURNS ( SUMMA DOUBLE PRECISION, BDATE TIMESTAMP, EDATE TIMESTAMP, BCDATE TIMESTAMP, ECDATE TIMESTAMP, MCNT INTEGER, ISUMMA DOUBLE PRECISION, SUMMA1 DOUBLE PRECISION, DAYS INTEGER, HLDDAYS INTEGER) AS /* расчет отпускных */ declare variable CalcIncrID integer; declare variable PrsnID integer; declare variable DayWTime Double Precision; declare variable wTime Double Precision; declare variable SlvID integer; declare variable BPDATE Date; /* дата приема на работу */ declare variable xDate Date; /* кол-во праздн. дней за период отпуска */ declare variable HDays integer; declare variable MRound integer; begin Summa = 0.0; Select ID, BLDATE, ELDATE, (ELDATE-BLDATE)+1.0, MonthCnt, CoalEsce(MRound, 0), SlvID from ZpltCalcIncr where ID=:SIID into :CalcIncrID, :BDATE, :EDATE, :Days, :MCnt, :MRound, :SlvID; if (:CalcIncrID is Null) then begin Suspend; Exit; end Select xDate-1 from F_MonthFirstDay(:BDATE) into :ECDATE; Select xDate from F_AddMonth(:ECDATE,-:MCnt+1) into :BCDATE; Select xDate from F_MonthFirstDay(:BCDATE) into :BCDATE; Select PrsnID from ZpltCalcSlv where ID=:SlvID into :PrsnID; Select Inp_Date, DayWTime from Personal where ID=:PrsnID into :BPDATE, :DayWTime; if (:DayWTime is Null or :DayWTime = 0) then DayWTime = 8.0; if ((:BPDATE is Not Null) and (:BPDATE > :BCDATE)) then begin -- если сотрудник работает менее 12 мес. - берем от приема на работу Select xDate from F_MonthFirstWorkDay(:SlvID, :BPDATE) into :xDate; if (:BPDATE <> (:xDate)) then begin Select xDate+1.0 from F_MonthLastDay(:BPDATE) into :BCDATE; end end mCnt = 0; /* фактическое количество расчетных месяцев */ xDate = :BCDATE; while (:xDate < :ecDate) do begin mCnt = :MCnt+1; Select xDate+1 from F_MonthLastDay(:xDate) into :xDate; end -- начислено за расчетный период Select Sum(CI.cSumma) from ZpltCalcMst M, ZpltCalcSlv S, ZpltCalcIncr CI, ZpltIncr I where M.DAT_ >= :BCDATE and M.DAT_ <= :ECDATE and S.MstID=M.ID and S.PrsnID = :PrsnID and CI.SlvID=S.ID and I.ID=CI.IncrID -- исключая аванс, материальную помощь, разница между мин. з/п. and I.System_Flag not in (2, 4, 16) into :iSumma; if (:iSumma is Null) then iSumma = 0.0; Select Sum(S.wTime) from ZpltCalcMst M, ZpltCalcSlv S where M.DAT_ >= :BCDATE and M.DAT_ <= :ECDATE and S.MstID=M.ID and S.PrsnID = :PrsnID into :wTime; /* праздничные дни за расчетный период */ select Days from Zplt_HldDays(:bcDate, :ecDate) into :HldDays; /* праздничные дни за период отпуска */ select Days from Zplt_HldDays(:bDate, :eDate) into :HDays; Summa1 = 0.0; /* среднедневная зарплата */ if (:wTime <> 0.0 and :wTime is not Null and :DayWTime <> 0.0) then begin Summa1 = :iSumma / (:ECDATE-:BCDATE+1.0 - :HldDays); end if (:MRound = 1) then Summa1 = Cast((Summa1 * 100.00) as integer) / 100.00; Summa = Cast(Cast((:Summa1 * (:Days-:HDays))*100.0 as Integer) as double precision) / 100.0; Suspend; end^ ALTER PROCEDURE ZPLT_CREATESLVLIST ( ORGNID INTEGER, BID INTEGER, MID INTEGER) AS begin if (:BID is Null or :BID=0) then /* все сотрудники в лицевых счетах */ insert into ZpltCalcSlv (ID, MstID, PrsnID, CardAccnUse) select Gen_ID(ZpltCalcSlv_ID, 1), :MID, P.ID, P.CardAccnUse from Personal P where OurOrgnID=:OrgnID; else /* список сотрудников из базовой ведомости */ insert into ZpltCalcSlv (ID, MstID, PrsnID, CardAccnUse) select Gen_ID(ZpltCalcSlv_ID, 1), :MID, S.PrsnID, P.CardAccnUse from ZPltCalcSlv S, Personal P where s.MstID=:BID and P.ID=S.PrsnID; end^ ALTER PROCEDURE ZPLT_HLDDAYS ( BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( DAYS INTEGER) AS declare variable xDate Date; declare variable m1 integer; declare variable m2 integer; declare variable m3 integer; declare variable m4 integer; declare variable m5 integer; declare variable m6 integer; declare variable m7 integer; declare variable m8 integer; declare variable m9 integer; declare variable m10 integer; declare variable m11 integer; declare variable m12 integer; declare variable y integer; declare variable cy integer; declare variable ID integer; declare variable m integer; declare variable d integer; declare variable i integer; declare variable n integer; declare variable mMask integer; declare variable BegY integer; declare variable BegM integer; declare variable BegD integer; declare variable EndY integer; declare variable EndM integer; declare variable EndD integer; declare variable BegDay integer; Declare variable EndDay integer; Declare Variable HldDay Integer; begin Days = 0; Execute Procedure f_decodedate(:bDate) returning_values :BegY, :BegM, :BegD; Execute Procedure f_decodedate(:eDate) returning_values :EndY, :EndM, :EndD; xDate = :bDate; while (:xDate <= :eDate) do begin Execute Procedure f_decodedate(:xDate) returning_values :y, :m, :d; Select ID, cJear, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12 from ZpltCalendarBase where cJear = :y into :ID, :cy, :m1, :m2, :m3, :m4, :m5, :m6, :m7, :m8, :m9, :m10, :m11, :m12; if (:ID <> 0) then begin if (m=1) then mMask = m1; if (m=2) then mMask = m2; if (m=3) then mMask = m3; if (m=4) then mMask = m4; if (m=5) then mMask = m5; if (m=6) then mMask = m6; if (m=7) then mMask = m7; if (m=8) then mMask = m8; if (m=9) then mMask = m9; if (m=10) then mMask = m10; if (m=11) then mMask = m11; if (m=12) then mMask = m12; if (:mMask is Null) then mMask = 0; n = 1; BegDay = 1; EndDay = 31; i = 1; while (:i <= 31) do begin if (BIN_AND(:mMask, :n) <> 0) then begin HldDay = 1; if (:y = :BegY and :m = :BegM and :i < :BegD) then HldDay = 0; if (:y = :EndY and :m = :EndM and :i > :EndD) then HldDay = 0; Days = :Days + :HldDay; end if(:i < 31) then n = :n * 2; i = :i + 1; end end Select xDate+1 from F_MonthLastDay(:xDate) into :xDate; end Suspend; end^ ALTER PROCEDURE ZPLT_IMPORTAVANS ( ID INTEGER) AS declare variable Avans Integer; declare variable MID integer; declare variable SID integer; declare variable BDATE Date; declare variable EDATE Date; declare variable mDate Date; declare variable PrsnID integer; declare variable aIncrID integer; declare variable aDecrID integer; declare variable aSumma Double Precision; begin select ID, Avans, DAT_ from ZpltCalcMst where ID=:ID into :MID, :Avans, :mDate; if ((:MID is null) or (:Avans <> 0)) then exit; select Max(ID) from ZpltIncr where System_Flag = 2 into :aIncrID; select Max(ID) from ZpltDecr where System_Flag = 2 into :aDecrID; if ((:aIncrID is null) or (:aDecrID is null)) then exit; Select xDate from f_monthfirstday(:mDate) into :bDate; Select xDate from f_monthlastday (:mDate) into :eDate; for select ID from ZpltCalcSlv where MstID=:ID into :SID do begin /* Удалить удержание: Аванс */ delete From ZpltCalcDecr where SlvID = :SID and DecrID=:aDecrID; end for Select ID, PrsnID from ZpltCalcSlv where MstID=:ID into :SID, :PrsnID do begin Select Sum(S.ESumma) from ZpltCalcMst M, ZpltCalcSlv S, ZpltCalcIncr I where M.Avans = 1 and M.DAT_ >= :BDATE and M.DAT_ <= :EDATE and S.MstID=M.ID and S.PrsnID =: PrsnID and I.SlvID = S.ID and I.IncrID = :aIncrID into :aSumma; if (:aSumma <> 0.0 and :aSumma is not null) then begin insert into ZpltCalcDecr (ID, SlvID, DecrID, Summa) values (Gen_ID(ZpltCalcDecr_ID, 1), :SID, :aDecrID, :aSumma); end end end^ ALTER PROCEDURE ZPLT_NFL_RECALC ( ORGNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( PRSNID INTEGER, ISUMMA DOUBLE PRECISION, DSUMMA DOUBLE PRECISION, LSUMMA DOUBLE PRECISION, SSUMMA DOUBLE PRECISION, MCNT INTEGER) AS declare variable Inp_Date TimeStamp; declare variable Out_Date TimeStamp; declare variable cDate TimeStamp; declare variable bcDate TimeStamp; declare variable ecDate TimeStamp; begin for Select distinct S.PrsnID, P.Inp_Date, P.Out_Date from ZpltCalcMst M, ZpltCalcSlv S, Personal P where M.OurOrgnID = :OrgnID and M.DAT_ >= :BDATE and M.DAT_ <= :EDATE and M.Avans = 0 and S.MstID = M.ID and P.ID = S.PrsnID and exists (Select S.ID from ZpltCalcDecr CD left join ZpltDecr D on D.ID = CD.DecrID where CD.SlvID=S.ID and D.System_Flag = 1 and CD.cSumma <> 0.0 and CD.Summa=0.0 and CD.Proc=0.0 and D.Sum1 <> 0.0) into :PrsnID, :Inp_Date, :Out_Date do begin MCnt = 0; cDate = :bDate; while (:cDate < :eDate) do begin select xDate from f_MonthFirstDay(:cDate) into :bcDate; select xDate from f_MonthLastDay (:cDate) into :ecDate; if ((:Inp_Date < :ecDate or :Inp_Date is Null) and (:Out_Date is Null or :Out_Date > :ecDate))then MCnt = MCnt + 1; select F.xDate + 1.0 from f_MonthLastDay (:cDate) F into :cDate; end if (:MCnt > 1) then begin -- сумма начислений Select Sum(CI.cSumma) from ZpltCalcMst M, ZpltCalcSlv S, ZpltCalcIncr CI where M.OurOrgnID = :OrgnID and M.DAT_ >= :BDATE and M.DAT_ <= :EDATE and M.Avans = 0 and S.MstID=M.ID and CI.SlvID = S.ID and S.PrsnID = :PrsnID and exists -- льготироемый налог (Select CD.ID from ZpltCalcDecr CD join ZpltDecrIncr DI on DI.DecrID=CD.DecrID and DI.IncrID=CI.IncrID join ZpltDecr D on D.ID=CD.DecrID where CD.SlvID=S.ID and D.System_Flag = 1 --and D.ID is not Null --and DI.ID is not Null and CD.cSumma <> 0.0 and CD.Summa=0.0 and CD.Proc=0.0 and D.Sum1 <> 0.0) -- исключаем последний месяц увольнения and (:Out_Date is Null or :Out_Date > (Select xDate from f_MonthLastDay(M.DAT_))) into :ISUMMA; -- сумма налога / сумма льгот Select Sum(CD.cSumma), Sum(D.Sum1) from ZpltCalcMst M join ZpltCalcSlv S on S.MstID=M.ID and S.PrsnID = :PrsnID join ZpltCalcDecr CD on CD.SlvID = S.ID left join ZpltDecr D on D.ID=CD.DecrID where M.OurOrgnID = :OrgnID and M.DAT_ >= :BDATE and M.DAT_ <= :EDATE and M.Avans = 0 and D.System_Flag = 1 and CD.cSumma <> 0.0 and CD.Summa=0.0 and CD.Proc=0.0 and D.Sum1 <> 0.0 and (:Out_Date is Null or :Out_Date > (Select xDate from f_MonthLastDay(M.DAT_))) into :DSUMMA, :LSUMMA; -- сумма соц. взносов Select Sum(CD.cSumma) from ZpltCalcMst M join ZpltCalcSlv S on S.MstID=M.ID and S.PrsnID = :PrsnID join ZpltCalcDecr CD on CD.SlvID = S.ID left join ZpltDecr D on D.ID=CD.DecrID where M.OurOrgnID = :OrgnID and M.DAT_ >= :BDATE and M.DAT_ <= :EDATE and M.Avans = 0 and D.System_Flag in (3, 4, 5, 6, 10) and CD.cSumma <> 0.0 and exists (Select CI1.ID from ZpltCalcIncr CI1 join ZpltDecrIncr DI1 on DI1.IncrID = CI1.IncrID join ZpltDecr D1 on D1.ID=DI1.DecrID join ZpltCalcDecr CD1 on CD1.SlvID = S.ID and CD1.DecrID = D1.ID Join ZpltDecrIncr DI2 on DI2.DecrID = CD.DecrID and DI2.IncrID = CI1.IncrID where CI1.SlvID=S.ID and D1.System_Flag = 1 and CD1.cSumma <> 0.0 and CD1.Summa=0.0 and CD1.Proc=0.0 and D1.Sum1 <> 0.0) and (:Out_Date is Null or :Out_Date > (Select xDate from f_MonthLastDay(M.DAT_))) into :SSUMMA; if (:ISumma <> 0.0) then suspend; end end end^ ALTER PROCEDURE ZPLT_PRSNPARAMS ( ORGNID INTEGER, PRSNID INTEGER, ADATE TIMESTAMP) RETURNS ( STATUS INTEGER, WTYP INTEGER, PODRID INTEGER, STORID INTEGER, POSTID INTEGER, PODRPOSTID INTEGER, DAYWTIME DOUBLE PRECISION, FOTGRPID INTEGER, TABELID INTEGER, TABELPLANID INTEGER) AS Declare Variable TabelDate Date; Declare Variable OurOrgnID integer; begin if (:aDate is Null) then begin /* параметры сотрудника по последнему состоянию */ for select M.Typ, M.WTyp, M.PodrID, M.StorID, M.PostID, M.PodrPostID, M.DayWTime, M.FotGrpID, M.TabelID from PrsnMove M, Personal P where M.PrsnID = :PrsnID and P.ID=M.PrsnID Order by M.DAT_ desc, M.ID Desc into :Status, :WTyp, :PodrID, :StorID, :PostID, :PodrPostID, :DayWTime, :FotGrpID, :TabelID do begin Suspend; exit; end end else begin /* на указанную дату */ for select M.Typ, M.WTyp, M.PodrID, M.StorID, M.PostID, M.PodrPostID, M.DayWTime, M.FotGrpID, M.TabelID, P.OurOrgnID from PrsnMove M, Personal P where M.PrsnID = :PrsnID and P.ID=M.PrsnID and M.DAT_ <= :aDate Order by M.DAT_ desc, M.ID Desc into :Status, :WTyp, :PodrID, :StorID, :PostID, :PodrPostID, :DayWTime, :FotGrpID, :TabelID, :OurOrgnID do begin Select xDate from f_MonthFirstDay(:aDate) into :TabelDate; if (:TabelID is not Null) then begin Select Max(ID) from ZpltTabelPlan where TabelID=:TabelID and OurOrgnID = :OurOrgnID and bDate = :TabelDate into :TabelPlanID; end Suspend; exit; end end end^ ALTER PROCEDURE ZPLT_REPORT_ESV ( PRSNID INTEGER, BDATE TIMESTAMP, EDATE TIMESTAMP) RETURNS ( PID INTEGER, CODE INTEGER, ISUMALL DOUBLE PRECISION, ISUMMA DOUBLE PRECISION, DSUMALL DOUBLE PRECISION, DSUMMA DOUBLE PRECISION, FSUMALL DOUBLE PRECISION, FSUMMA DOUBLE PRECISION, SUMM_DIFF DOUBLE PRECISION, M INTEGER, Y INTEGER, PAY_TP INTEGER, NRC INTEGER, KD_PTV INTEGER, KD_NP INTEGER, KD_NZP INTEGER) AS declare variable WTyp integer; declare variable CIID integer; declare variable ISummaAll double precision; declare variable FSummaAll double precision; declare variable DSummaAll double precision; declare variable blDate TimeStamp; declare variable elDate TimeStamp; declare variable bcDate TimeStamp; declare variable ecDate TimeStamp; declare variable blM integer; declare variable blY integer; declare variable elM integer; declare variable elY integer; declare variable b_M integer; declare variable b_Y integer; declare variable e_M integer; declare variable e_Y integer; declare variable DaysAll integer; declare variable DaysCur integer; declare variable Sys_Flag integer; declare variable n integer; declare variable Inp_Date TimeStamp; declare variable Out_Date TimeStamp; begin -- основное место работы -код категории ЗО - 1 -- работающий инвалид - код категории ЗО - 2 -- если есть больничный за счет соц.страха - код категории ЗО - 19 -- если есть больничный по уходу за ребенком - код категории ЗО - 20 -- По ДГПХ - код категории ЗО- 26 -- если есть б/л - код категории ЗО 29 pid = prsnid; ISumma = 0.0; DSumma = 0.0; FSUMMA = 0.0; summ_diff = 0.0; Code = 1; M = 0; Y = 0; PAY_TP = 0; Nrc = 0; Kd_Np = 0; Kd_Nzp = 0; Kd_Ptv = 0; Select aYear, aMonth from F_DecodeDate(:eDate) into :Y, :M; for select V.bdate, V.edate from ZpltSertVacat V where V.PrsnID=:PrsnID and V.Typ=1 and ( (V.bDate >= :bDate and v.bDate <= :eDate) or (v.edate <= :eDate and v.eDate >= :bDate) or (V.bDate < :bDate and V.eDate > :eDate) ) into :blDate, :elDate do begin if (:blDate < :bDate) then blDate = :bDate; if (:elDate > :eDate) then elDate = :eDate; select Result+1 from F_ElapsedDays(:bldate, :eldate) into :n; Kd_Nzp = :Kd_Nzp + :n; end -- Kd_Ptv Select first 1 P.Inp_Date, P.Out_Date from Personal P where P.ID=:PrsnID into :inp_date, :Out_Date; Select Result+1 from F_ElapsedDays(:bDate, :eDate) into :Kd_Ptv; if (:Inp_Date is Null or (:Inp_Date > :eDate) ) then Kd_Ptv = 0; else if (:Out_Date is not Null and :Out_Date < :bDate) then Kd_Ptv = 0; else begin if (:Inp_Date is not null and :Inp_Date > :bDate and :Inp_Date <= :eDate) then Kd_Ptv = :Kd_Ptv - (select Result from F_ElapsedDays(:bDate, :Inp_Date)); if (:Out_Date is not Null and :Out_Date < :eDate and :Out_Date >= :bDate) then Kd_Ptv = :Kd_Ptv - (select Result from F_ElapsedDays(:Out_Date, :eDate)); end -- Kd_Ptv ISumAll = 0; SELECT SUM(CI.CSUMMA) -- сумма начислений без больничных from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCINCR CI ON CI.SLVID=S.ID JOIN ZpltIncr HI on HI.ID=CI.IncrID AND HI.System_Flag NOT IN (3, 8, 10) JOIN PERSONAL P ON P.ID=:PRSNID where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND M.Avans = 0 AND (CI.INCRID IN ( SELECT DI.INCRID FROM ZPLTCALCDECR CD JOIN ZPLTDECR HD ON HD.ID=CD.DECRID AND HD.SYSTEM_FLAG=11 JOIN ZPLTDECRINCR DI ON CD.DECRID=DI.DECRID WHERE CD.SLVID=S.ID ) or exists ( select cf.ID from zpltcalcslvfot cf join zpltdecrfot df on df.ID=cf.FotID and df.System_Flag=6 where cf.SlvID=S.ID and cf.csumma <> 0.0 ) ) INTO :ISumAll; -- сумма начислений (без отпускных и больничных) for select P.ID, P.WTyp, SUM(CI.CSUMMA) from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCINCR CI ON CI.SLVID=S.ID JOIN ZpltIncr HI on HI.ID=CI.IncrID AND HI.System_Flag NOT IN (5, 3, 8, 10) JOIN PERSONAL P ON P.ID=:PRSNID where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND M.Avans = 0 AND (CI.INCRID IN ( SELECT DI.INCRID FROM ZPLTCALCDECR CD JOIN ZPLTDECR HD ON HD.ID=CD.DECRID AND HD.SYSTEM_FLAG=11 JOIN ZPLTDECRINCR DI ON CD.DECRID=DI.DECRID WHERE CD.SLVID=S.ID ) or exists ( select cf.ID from zpltcalcslvfot cf join zpltdecrfot df on df.ID=cf.FotID and df.System_Flag=6 where cf.SlvID=S.ID and cf.csumma <> 0.0 ) ) Group by P.ID, P.WTyp INTO :PID, :WTyp, :ISUMMA do begin if (:WTyp in (0, 1)) then Code = 1; if (:WTyp = 2) then Code = 26; if (:WTyp = 3) then Code = 2; end -- сумма начислений на ФОТ for select P.ID, P.WTyp, SUM(CF.CSUMMA) from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCINCR CI ON CI.SLVID=S.ID JOIN ZpltIncr HI on HI.ID=CI.IncrID AND HI.System_Flag NOT IN (3, 8, 10) -- не больничные JOIN PERSONAL P ON P.ID=:PRSNID JOIN zpltcalcslvfot CF on CF.SLVID=S.ID and CF.IncrID=CI.IncrID Join ZpltDecrFot df ON df.ID=cf.FotID and df.system_flag in (6) where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND M.Avans = 0 /* AND CI.INCRID IN ( SELECT DI.INCRID FROM ZPLTCALCDECR CD JOIN ZPLTDECR HD ON HD.ID=CD.DECRID AND HD.SYSTEM_FLAG=11 JOIN ZPLTDECRINCR DI ON CD.DECRID=DI.DECRID WHERE CD.SLVID=S.ID ) */ Group by P.ID, P.WTyp INTO :PID, :WTyp, :FSumAll do begin if (:WTyp in (0, 1)) then Code = 1; if (:WTyp = 2) then Code = 26; if (:WTyp = 3) then Code = 2; end -- сумма удержаний select P.ID, P.WTyp, SUM(CD.CSUMMA) from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCDECR CD ON CD.SLVID=S.ID JOIN ZPLTDECR HD ON HD.ID=CD.DECRID AND HD.SYSTEM_FLAG=11 JOIN PERSONAL P ON P.ID=:PRSNID where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND M.Avans = 0 AND CD.DECRID IN ( SELECT DI.DECRID FROM ZPLTCALCINCR CI JOIN ZpltIncr I ON I.ID=CI.IncrID AND I.System_Flag NOT IN (3, 8, 10) JOIN ZPLTDECRINCR DI ON DI.INCRID=CI.INCRID WHERE CI.SLVID=S.ID ) Group by P.ID, P.WTyp INTO :PID, :WTyp, :DSumAll; DSumAll = CoalEsce(:DSumAll, 0.0); if (:WTyp in (0, 1)) then Code = 1; if (:WTyp = 2) then Code = 26; if (:WTyp = 3) then Code = 2; if (:ISumAll <> 0.0) then begin DSumma = :DSumAll / :ISumAll * :ISumma; FSumma = :FSumAll / :ISumAll * :ISumma; end if (:ISumma <> 0.0 or :DSumma <> 0.0 or :FSumma <> 0) then begin Kd_Np = 0; Select First 1 CoalEsce(Nrc, 0) from Personal where ID=:PrsnID into :Nrc; Suspend; end Kd_Ptv = 0; Kd_Nzp = 0; -- ЕСВ с Отпускных ISumma = 0.0; DSumma = 0.0; FSumma = 0.0; -- сумма начислений for select P.ID, CI.ID, CI.CSUMMA, CoalEsce(CI.BLDATE, :bDate), CoalEsce(CI.ELDATE, :eDate) from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCINCR CI ON CI.SLVID=S.ID JOIN ZPLTINCR HI ON HI.ID=CI.INCRID AND HI.SYSTEM_FLAG in (5) JOIN PERSONAL P ON P.ID=:PRSNID where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND CI.CSUMMA <> 0.0 AND M.Avans = 0 AND (CI.INCRID IN ( SELECT DI.INCRID FROM ZPLTCALCDECR CD JOIN ZPLTDECR HD ON HD.ID=CD.DECRID AND HD.SYSTEM_FLAG=11 JOIN ZPLTDECRINCR DI ON CD.DECRID=DI.DECRID WHERE CD.SLVID=S.ID) or exists( select cf.ID from zpltcalcslvfot cf join zpltdecrfot df on df.ID=cf.FotID and df.System_Flag=6 where cf.SlvID=S.ID and cf.csumma <> 0.0 ) ) INTO :PID, :CIID, :ISUMMAAll, :blDate, :elDate do begin FSumma = 0.0; DSumma = 0.0; select aMonth, aYear from F_DecodeDate(:blDate) into :blM, :blY; select aMonth, aYear from F_DecodeDate(:elDate) into :elM, :elY; select Result+1 from F_ElapsedDays(:blDate, :elDate) into :DaysAll; for select bDate, eDate from F_Months_DataSet(:blDate, :elDate) into :bcDate, :ecDate do begin select aMonth, aYear from F_DecodeDate(:bcDate) into :b_M, :b_Y; select aMonth, aYear from F_DecodeDate(:ecDate) into :e_M, :e_Y; if (:blM = :b_M and :blY = :b_Y) then bcDate = :blDate; if (:elM = :e_M and :elY = :e_Y) then ecDate = :elDate; select Result+1 from F_ElapsedDays(:bcDate, :ecDate) into :DaysCur; ISumma = 0.0; FSumma = 0.0; DSumma = 0.0; if (:DaysAll <> 0) then begin ISumma = :ISummaAll / :DaysAll * :DaysCur; FSumma = :FSumAll / :ISumAll * :ISumma; DSumma = :DSumAll / :ISumAll * :ISumma; end if (:ISumma <> 0.0 or :DSumma <> 0.0 or (:FSumma <> 0.0) ) then begin Pay_Tp = 10; M = :e_M; Y = :e_Y; Kd_Np = 0; Suspend; end end end -- Отпускные -- ЕСВ с больничных листов ISumma = 0.0; DSumma = 0.0; FSumma = 0.0; -- сумма начислений for select P.ID, CI.ID, CI.CSUMMA, CoalEsce(CI.BLDATE, :bDate), CoalEsce(CI.ELDATE, :eDate), HI.System_Flag from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCINCR CI ON CI.SLVID=S.ID JOIN ZPLTINCR HI ON HI.ID=CI.INCRID AND HI.SYSTEM_FLAG in (3, 8, 10) JOIN PERSONAL P ON P.ID=:PRSNID where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND CI.CSUMMA <> 0.0 AND M.Avans = 0 AND (CI.INCRID IN ( SELECT DI.INCRID FROM ZPLTCALCDECR CD JOIN ZPLTDECR HD ON HD.ID=CD.DECRID AND HD.SYSTEM_FLAG=12 JOIN ZPLTDECRINCR DI ON CD.DECRID=DI.DECRID WHERE CD.SLVID=S.ID ) or exists( select cf.ID from zpltcalcslvfot cf join zpltdecrfot df on df.ID=cf.FotID and df.System_Flag=7 where cf.SlvID=S.ID and cf.csumma <> 0.0 ) ) INTO :PID, :CIID, :ISUMMAAll, :blDate, :elDate, :Sys_Flag do begin FSumma = 0.0; DSumma = 0.0; -- сумма начислений на ФОТ - больничные листы select P.ID, SUM(CF.CSUMMA) from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCINCR CI ON CI.SLVID=S.ID JOIN ZPLTINCR HI ON HI.ID=CI.INCRID AND HI.SYSTEM_FLAG in (3, 8, 10) JOIN PERSONAL P ON P.ID=:PRSNID JOIN zpltcalcslvfot CF on CF.SLVID=S.ID and CF.IncrID=CI.IncrID Join ZpltDecrFot df ON df.ID=cf.FotID and df.system_flag in (7) where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND CI.ID=:CIID AND M.Avans = 0 /* AND CI.INCRID IN ( SELECT DI.INCRID FROM ZPLTCALCDECR CD JOIN ZPLTDECR HD ON HD.ID=CD.DECRID AND HD.SYSTEM_FLAG=12 JOIN ZPLTDECRINCR DI ON CD.DECRID=DI.DECRID WHERE CD.SLVID=S.ID ) */ Group by P.ID INTO :PID, :FSUMMAAll; -- сумма удержаний - больничные листы select P.ID, SUM(CD.CSUMMA) from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCDECR CD ON CD.SLVID=S.ID JOIN ZPLTDECR HD ON HD.ID=CD.DECRID AND HD.SYSTEM_FLAG=12 JOIN PERSONAL P ON P.ID=:PRSNID where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND M.Avans = 0 AND CD.DECRID IN ( SELECT DI.DECRID FROM ZPLTCALCINCR CI JOIN ZPLTINCR HI ON HI.ID=CI.INCRID AND HI.SYSTEM_FLAG in (3, 8, 10) JOIN ZPLTDECRINCR DI ON DI.INCRID=CI.INCRID AND CI.ID=:CIID WHERE CI.SLVID=S.ID ) Group by P.ID INTO :PID, :DSUMMAAll; -- if (:blDate = 0.0) then blDate = :bDate; -- if (:elDate = 0.0) then elDate = :eDate; select aMonth, aYear from F_DecodeDate(:blDate) into :blM, :blY; select aMonth, aYear from F_DecodeDate(:elDate) into :elM, :elY; select Result+1 from F_ElapsedDays(:blDate, :elDate) into :DaysAll; for select bDate, eDate from F_Months_DataSet(:blDate, :elDate) into :bcDate, :ecDate do begin select aMonth, aYear from F_DecodeDate(:bcDate) into :b_M, :b_Y; select aMonth, aYear from F_DecodeDate(:ecDate) into :e_M, :e_Y; if (:blM = :b_M and :blY = :b_Y) then bcDate = :blDate; if (:elM = :e_M and :elY = :e_Y) then ecDate = :elDate; select Result+1 from F_ElapsedDays(:bcDate, :ecDate) into :DaysCur; ISumma = 0.0; FSumma = 0.0; DSumma = 0.0; if (:DaysAll <> 0) then begin ISumma = :ISummaAll / :DaysAll * :DaysCur; FSumma = :FSummaAll / :DaysAll * :DaysCur; DSumma = :DSummaAll / :DaysAll * :DaysCur; end if (:ISumma <> 0.0 or :DSumma <> 0.0 or (:FSumma <> 0.0) ) then begin Code = 29; if (:sys_flag = 10) then Code = 42; Pay_Tp = 0; M = :e_M; Y = :e_Y; Kd_Np = :DaysCur; Suspend; end end end -- Больничные -- разница между мин. з/п. ISumma = 0.0; DSumma = 0.0; FSumma = 0.0; Summ_Diff = 0.0; select P.ID, SUM(CI.CSUMMA) from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCINCR CI ON CI.SLVID=S.ID JOIN ZPLTINCR HI ON HI.ID=CI.INCRID AND HI.SYSTEM_FLAG in (16) JOIN PERSONAL P ON P.ID=:PRSNID where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND M.Avans = 0 Group by P.ID INTO :PID, :Summ_Diff; select P.ID, SUM(CF.CSUMMA) from ZpltCalcMst M JOIN ZPLTCALCSLV S ON S.MSTID=M.ID AND S.PRSNID=:PRSNID JOIN ZPLTCALCINCR CI ON CI.SLVID=S.ID JOIN ZPLTINCR HI ON HI.ID=CI.INCRID AND HI.SYSTEM_FLAG in (16) JOIN PERSONAL P ON P.ID=:PRSNID JOIN zpltcalcslvfot CF on CF.SLVID=S.ID and CF.IncrID=CI.IncrID where M.DAT_ >= :BDATE AND M.DAT_ <= :EDATE AND M.Avans = 0 Group by P.ID INTO :PID, :FSUMMA; if (:Summ_Diff <> 0.0 or :DSumma <> 0.0 or (:FSumma <> 0.0) ) then begin -- разница между мин. з/п. if (:WTyp in (0, 1)) then Code = 1; if (:WTyp = 2) then Code = 26; if (:WTyp = 3) then Code = 2; PAY_TP = 13; Kd_Np = 0; Suspend; end end^ ALTER PROCEDURE ZPLT_SETTYPICALCALENDAR ( ID INTEGER) AS declare variable d1 Double Precision; declare variable d2 Double Precision; declare variable d3 Double Precision; declare variable d4 Double Precision; declare variable d5 Double Precision; declare variable d6 Double Precision; declare variable d7 Double Precision; declare variable d8 Double Precision; declare variable d9 Double Precision; declare variable d10 Double Precision; declare variable d11 Double Precision; declare variable d12 Double Precision; declare variable d13 Double Precision; declare variable d14 Double Precision; declare variable d15 Double Precision; declare variable d16 Double Precision; declare variable d17 Double Precision; declare variable d18 Double Precision; declare variable d19 Double Precision; declare variable d20 Double Precision; declare variable d21 Double Precision; declare variable d22 Double Precision; declare variable d23 Double Precision; declare variable d24 Double Precision; declare variable d25 Double Precision; declare variable d26 Double Precision; declare variable d27 Double Precision; declare variable d28 Double Precision; declare variable d29 Double Precision; declare variable d30 Double Precision; declare variable d31 Double Precision; declare variable dx1 Double Precision; declare variable dx2 Double Precision; declare variable dx3 Double Precision; declare variable dx4 Double Precision; declare variable dx5 Double Precision; declare variable dx6 Double Precision; declare variable dx7 Double Precision; declare variable dx8 Double Precision; declare variable dx9 Double Precision; declare variable dx10 Double Precision; declare variable dx11 Double Precision; declare variable dx12 Double Precision; declare variable dx13 Double Precision; declare variable dx14 Double Precision; declare variable dx15 Double Precision; declare variable dx16 Double Precision; declare variable dx17 Double Precision; declare variable dx18 Double Precision; declare variable dx19 Double Precision; declare variable dx20 Double Precision; declare variable dx21 Double Precision; declare variable dx22 Double Precision; declare variable dx23 Double Precision; declare variable dx24 Double Precision; declare variable dx25 Double Precision; declare variable dx26 Double Precision; declare variable dx27 Double Precision; declare variable dx28 Double Precision; declare variable dx29 Double Precision; declare variable dx30 Double Precision; declare variable dx31 Double Precision; declare variable MstID Integer; declare variable SlvID Integer; declare variable DayWTime double precision; declare variable wTime double precision; declare variable TimeWrk double precision; declare variable iDate Date; declare variable oDate Date; Declare Variable CalcDate Date; Declare Variable TabelDate Date; Declare Variable TabelID integer; Declare Variable TabelPlanID integer; Declare Variable OurOrgnID integer; Declare Variable PrsnID integer; begin Select ID, DAT_, OurOrgnID from ZpltCalcMst where ID=:ID into :MstID, :CalcDate, :OurOrgnID; if (:MstID is Null) then Exit; Select xDate from f_MonthFirstDay(:CalcDate) into :TabelDate; for Select S.ID, P.DayWTime, P.Inp_Date, P.Out_Date, P.ID, P.TabelID from ZpltCalcSlv S, Personal P where S.MstID=:ID and P.ID=S.PrsnID into :SlvID,:DayWTime, :iDate, :oDate, :PrsnID, :TabelID do begin Select Max(ID) from ZpltTabelPlan where TabelID = :TabelID and bDate = :TabelDate into :TabelPlanID; D1 = 0.0; D2 = 0.0; D3 = 0.0; D4 = 0.0; D5 = 0.0; D6 = 0.0; D7 = 0.0; D8 = 0.0; D9 = 0.0; D10 = 0.0; D11 = 0.0; D12 = 0.0; D13 = 0.0; D14 = 0.0; D15 = 0.0; D16 = 0.0; D17 = 0.0; D18 = 0.0; D19 = 0.0; D20 = 0.0; D21 = 0.0; D22 = 0.0; D23 = 0.0; D24 = 0.0; D25 = 0.0; D26 = 0.0; D27 = 0.0; D28 = 0.0; D29 = 0.0; D30 = 0.0; D31 = 0.0; wTime = 0.0; Select D1 , D2 , D3 , D4 , D5 , D6 , D7 , D8 , D9 , D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D30, D31, WTime from ZpltTabelPlan where ID=:TabelPlanID into :D1 ,:D2 ,:D3 ,:D4 ,:D5 ,:D6 ,:D7 ,:D8 ,:D9 ,:D10, :D11,:D12,:D13,:D14,:D15,:D16,:D17,:D18,:D19,:D20, :D21,:D22,:D23,:D24,:D25,:D26,:D27,:D28,:D29,:D30, :D31, :WTime; if (:DayWTime = 0.0 or :DayWTime is null) then DayWTime = 8.0; Dx1 = :D1 / 8 * :DayWTime; Dx2 = :D2 / 8 * :DayWTime; Dx3 = :D3 / 8 * :DayWTime; Dx4 = :D4 / 8 * :DayWTime; Dx5 = :D5 / 8 * :DayWTime; Dx6 = :D6 / 8 * :DayWTime; Dx7 = :D7 / 8 * :DayWTime; Dx8 = :D8 / 8 * :DayWTime; Dx9 = :D9 / 8 * :DayWTime; Dx10= :D10 / 8 * :DayWTime; Dx11= :D11 / 8 * :DayWTime; Dx12= :D12 / 8 * :DayWTime; Dx13= :D13 / 8 * :DayWTime; Dx14= :D14 / 8 * :DayWTime; Dx15= :D15 / 8 * :DayWTime; Dx16= :D16 / 8 * :DayWTime; Dx17= :D17 / 8 * :DayWTime; Dx18= :D18 / 8 * :DayWTime; Dx19= :D19 / 8 * :DayWTime; Dx20= :D20 / 8 * :DayWTime; Dx21= :D21 / 8 * :DayWTime; Dx22= :D22 / 8 * :DayWTime; Dx23= :D23 / 8 * :DayWTime; Dx24= :D24 / 8 * :DayWTime; Dx25= :D25 / 8 * :DayWTime; Dx26= :D26 / 8 * :DayWTime; Dx27= :D27 / 8 * :DayWTime; Dx28= :D28 / 8 * :DayWTime; Dx29= :D29 / 8 * :DayWTime; Dx30= :D30 / 8 * :DayWTime; Dx31= :D31 / 8 * :DayWTime; wTime = :wTime / 8 * :DayWTime; TimeWrk = wTime; Update ZpltCalcSlv Set d1 =:dx1 , d2 =:dx2 , d3 =:dx3 , d4 =:dx4 , d5 =:dx5 , d6 =:dx6 , d7 =:dx7 , d8 =:dx8 , d9 =:dx9 , d10=:dx10, d11=:dx11, d12=:dx12, d13=:dx13, d14=:dx14, d15=:dx15, d16=:dx16, d17=:dx17, d18=:dx18, d19=:dx19, d20=:dx20, d21=:dx21, d22=:dx22, d23=:dx23, d24=:dx24, d25=:dx25, d26=:dx26, d27=:dx27, d28=:dx28, d29=:dx29, d30=:dx30, d31=:dx31, wTime = :wTime, TimeWrk = :TimeWrk where ID=:SlvID; end end^ ALTER PROCEDURE ZPLT_SLVDAYSSELECT ( ID INTEGER) RETURNS ( DAYNO INTEGER, WTIME DOUBLE PRECISION) AS declare variable d1 double precision; declare variable d2 double precision; declare variable d3 double precision; declare variable d4 double precision; declare variable d5 double precision; declare variable d6 double precision; declare variable d7 double precision; declare variable d8 double precision; declare variable d9 double precision; declare variable d10 double precision; declare variable d11 double precision; declare variable d12 double precision; declare variable d13 double precision; declare variable d14 double precision; declare variable d15 double precision; declare variable d16 double precision; declare variable d17 double precision; declare variable d18 double precision; declare variable d19 double precision; declare variable d20 double precision; declare variable d21 double precision; declare variable d22 double precision; declare variable d23 double precision; declare variable d24 double precision; declare variable d25 double precision; declare variable d26 double precision; declare variable d27 double precision; declare variable d28 double precision; declare variable d29 double precision; declare variable d30 double precision; declare variable d31 double precision; begin select d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31 from ZpltCalcSlv where ID = :ID into :d1, :d2, :d3, :d4, :d5, :d6, :d7, :d8, :d9, :d10, :d11, :d12, :d13, :d14, :d15, :d16, :d17, :d18, :d19, :d20, :d21, :d22, :d23, :d24, :d25, :d26, :d27, :d28, :d29, :d30, :d31; DayNo = 1; wTime = d1; suspend; DayNo = 2; wTime = d2; suspend; DayNo = 3; wTime = d3; suspend; DayNo = 4; wTime = d4; suspend; DayNo = 5; wTime = d5; suspend; DayNo = 6; wTime = d6; suspend; DayNo = 7; wTime = d7; suspend; DayNo = 8; wTime = d8; suspend; DayNo = 9; wTime = d9; suspend; DayNo = 10; wTime = d10; suspend; DayNo = 11; wTime = d11; suspend; DayNo = 12; wTime = d12; suspend; DayNo = 13; wTime = d13; suspend; DayNo = 14; wTime = d14; suspend; DayNo = 15; wTime = d15; suspend; DayNo = 16; wTime = d16; suspend; DayNo = 17; wTime = d17; suspend; DayNo = 18; wTime = d18; suspend; DayNo = 19; wTime = d19; suspend; DayNo = 20; wTime = d20; suspend; DayNo = 21; wTime = d21; suspend; DayNo = 22; wTime = d22; suspend; DayNo = 23; wTime = d23; suspend; DayNo = 24; wTime = d24; suspend; DayNo = 25; wTime = d25; suspend; DayNo = 26; wTime = d26; suspend; DayNo = 27; wTime = d27; suspend; DayNo = 28; wTime = d28; suspend; DayNo = 29; wTime = d29; suspend; DayNo = 30; wTime = d30; suspend; DayNo = 31; wTime = d31; suspend; end^ ALTER PROCEDURE ZPLT_SLVWDAYS ( ID INTEGER) RETURNS ( DAYS INTEGER) AS declare variable d1 double precision; declare variable d2 double precision; declare variable d3 double precision; declare variable d4 double precision; declare variable d5 double precision; declare variable d6 double precision; declare variable d7 double precision; declare variable d8 double precision; declare variable d9 double precision; declare variable d10 double precision; declare variable d11 double precision; declare variable d12 double precision; declare variable d13 double precision; declare variable d14 double precision; declare variable d15 double precision; declare variable d16 double precision; declare variable d17 double precision; declare variable d18 double precision; declare variable d19 double precision; declare variable d20 double precision; declare variable d21 double precision; declare variable d22 double precision; declare variable d23 double precision; declare variable d24 double precision; declare variable d25 double precision; declare variable d26 double precision; declare variable d27 double precision; declare variable d28 double precision; declare variable d29 double precision; declare variable d30 double precision; declare variable d31 double precision; begin Days = 0; select d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31 from ZpltCalcSlv where ID = :ID into :d1, :d2, :d3, :d4, :d5, :d6, :d7, :d8, :d9, :d10, :d11, :d12, :d13, :d14, :d15, :d16, :d17, :d18, :d19, :d20, :d21, :d22, :d23, :d24, :d25, :d26, :d27, :d28, :d29, :d30, :d31; if(:d1 <> 0) then Days = Days + 1; if(:d2 <> 0) then Days = Days + 1; if(:d3 <> 0) then Days = Days + 1; if(:d4 <> 0) then Days = Days + 1; if(:d5 <> 0) then Days = Days + 1; if(:d6 <> 0) then Days = Days + 1; if(:d7 <> 0) then Days = Days + 1; if(:d8 <> 0) then Days = Days + 1; if(:d9 <> 0) then Days = Days + 1; if(:d10 <> 0) then Days = Days + 1; if(:d11 <> 0) then Days = Days + 1; if(:d12 <> 0) then Days = Days + 1; if(:d13 <> 0) then Days = Days + 1; if(:d14 <> 0) then Days = Days + 1; if(:d15 <> 0) then Days = Days + 1; if(:d16 <> 0) then Days = Days + 1; if(:d17 <> 0) then Days = Days + 1; if(:d18 <> 0) then Days = Days + 1; if(:d19 <> 0) then Days = Days + 1; if(:d20 <> 0) then Days = Days + 1; if(:d21 <> 0) then Days = Days + 1; if(:d22 <> 0) then Days = Days + 1; if(:d23 <> 0) then Days = Days + 1; if(:d24 <> 0) then Days = Days + 1; if(:d25 <> 0) then Days = Days + 1; if(:d26 <> 0) then Days = Days + 1; if(:d27 <> 0) then Days = Days + 1; if(:d28 <> 0) then Days = Days + 1; if(:d29 <> 0) then Days = Days + 1; if(:d30 <> 0) then Days = Days + 1; if(:d31 <> 0) then Days = Days + 1; suspend; end^ ALTER PROCEDURE ZPLT_TABELDAYSSELECT ( ID INTEGER) RETURNS ( DAYNO INTEGER, WTIME DOUBLE PRECISION) AS declare variable d1 double precision; declare variable d2 double precision; declare variable d3 double precision; declare variable d4 double precision; declare variable d5 double precision; declare variable d6 double precision; declare variable d7 double precision; declare variable d8 double precision; declare variable d9 double precision; declare variable d10 double precision; declare variable d11 double precision; declare variable d12 double precision; declare variable d13 double precision; declare variable d14 double precision; declare variable d15 double precision; declare variable d16 double precision; declare variable d17 double precision; declare variable d18 double precision; declare variable d19 double precision; declare variable d20 double precision; declare variable d21 double precision; declare variable d22 double precision; declare variable d23 double precision; declare variable d24 double precision; declare variable d25 double precision; declare variable d26 double precision; declare variable d27 double precision; declare variable d28 double precision; declare variable d29 double precision; declare variable d30 double precision; declare variable d31 double precision; begin select d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31 from ZpltTabelPlan where ID = :ID into :d1, :d2, :d3, :d4, :d5, :d6, :d7, :d8, :d9, :d10, :d11, :d12, :d13, :d14, :d15, :d16, :d17, :d18, :d19, :d20, :d21, :d22, :d23, :d24, :d25, :d26, :d27, :d28, :d29, :d30, :d31; DayNo = 1; wTime = d1; suspend; DayNo = 2; wTime = d2; suspend; DayNo = 3; wTime = d3; suspend; DayNo = 4; wTime = d4; suspend; DayNo = 5; wTime = d5; suspend; DayNo = 6; wTime = d6; suspend; DayNo = 7; wTime = d7; suspend; DayNo = 8; wTime = d8; suspend; DayNo = 9; wTime = d9; suspend; DayNo = 10; wTime = d10; suspend; DayNo = 11; wTime = d11; suspend; DayNo = 12; wTime = d12; suspend; DayNo = 13; wTime = d13; suspend; DayNo = 14; wTime = d14; suspend; DayNo = 15; wTime = d15; suspend; DayNo = 16; wTime = d16; suspend; DayNo = 17; wTime = d17; suspend; DayNo = 18; wTime = d18; suspend; DayNo = 19; wTime = d19; suspend; DayNo = 20; wTime = d20; suspend; DayNo = 21; wTime = d21; suspend; DayNo = 22; wTime = d22; suspend; DayNo = 23; wTime = d23; suspend; DayNo = 24; wTime = d24; suspend; DayNo = 25; wTime = d25; suspend; DayNo = 26; wTime = d26; suspend; DayNo = 27; wTime = d27; suspend; DayNo = 28; wTime = d28; suspend; DayNo = 29; wTime = d29; suspend; DayNo = 30; wTime = d30; suspend; DayNo = 31; wTime = d31; suspend; end^ ALTER PROCEDURE ZPLTPLATMST_DELACCNREC ( ID INTEGER) AS begin Delete From ZpltPlatAcCr where PlatID=:ID; end^ ALTER PROCEDURE ZPLTPLATMST_GENACCNREC ( ID INTEGER) AS declare Variable MID Integer; declare Variable SID Integer; declare variable DT Varchar(5); declare variable KT Varchar(5); declare variable SumTyp integer; declare variable DateTyp integer; declare variable Storno Integer; declare variable FinRes Integer; declare variable pComment Varchar(255); declare variable mComment Varchar(255); declare variable aComment Varchar(255); declare variable Nbr Varchar(20); declare variable mDate Date; declare variable sDate Date; declare variable DDate Date; declare variable aDate Date; declare variable OperID integer; declare variable D3 integer; /* Prsn */ declare variable K3 integer; declare variable Dt3 integer; /* Prsn */ declare variable Kt3 integer; declare variable D7 integer; /* Kass */ declare variable K7 integer; declare variable Dt7 integer; /* Kass */ declare variable Kt7 integer; declare variable PrsnID integer; declare variable KassID integer; declare variable sSumma Double Precision; declare variable DSumma Double Precision; declare variable aSumma Double Precision; declare variable AccnID integer; declare variable UserName Varchar(20); declare variable OurOrgnID integer; begin MID = Null; select ID, Nbr, Dat_, Comment, OperID, KassID, UserName, OurOrgnID from ZpltPlatMst Where ID=:ID into :MID, :Nbr, :mDate, :mComment, :OperID, :KassID, :UserName, :OurOrgnID; if ((:MID is Null) or (:OperID is Null) or (:OperID=0)) then exit; for Select DT, KT, AccnDate, SumTyp, Comment, Storno, FinRes from StorAccn where OperID=:OperID into :DT, :KT, :DateTyp, :SumTyp, :pComment, :Storno, :FinRes do begin aComment = :mComment; if (:aComment = '') then aComment = :pComment; Select A3, A7 from AccnPlan where Accn=:Dt into :D3, :D7; Select A3, A7 from AccnPlan where Accn=:Kt into :K3, :K7; if ((:D3=1) or (:K3=1)) then begin /* Prsn Analitic */ For Select ID, PrsnID, sSumma, sDate, DSumma, DDate from ZpltPlatSlv where (MstID=:ID) into :SID, :PrsnID, :sSumma, :sDate, :DSumma, :DDate do begin aSumma = 0; if (:SumTyp=0) then begin aSumma = :SSumma; aDate = :SDate; end if (:SumTyp=1) then begin aSumma = :DSumma; aDate = :DDate; end if (:aSumma is not Null and :aSumma <> 0 and :aDate is not Null) then begin Dt3 = Null; kt3 = Null; Dt7 = Null; kt7 = Null; if (:d3=1) then dt3 = :PrsnID; if (:k3=1) then kt3 = :PrsnID; if (:d7=1) then dt7 = :KassID; if (:k7=1) then kt7 = :KassID; AccnID = Gen_ID(AccnProv_ID, 1); Insert into AccnProv(ID, OurOrgnID, DAT_, Document, DT, KT, Summa, Comment, Dt3, Kt3, Dt7, Kt7, UserName, Oper, OperID, DocID) Values(:AccnID, :OurOrgnID, :aDate, :Nbr, :Dt, :Kt, :aSumma, :aComment, :Dt3, :Kt3, :Dt7, :Kt7, :UserName, 71, :OperID, :MID); Insert into ZpltPlatAcCr (AccnID, PlatID) Values(:AccnID, :ID); end end end else begin /* No Prsn Analitic */ PrsnID = Null; For Select Sum(sSumma) SSumma, sDate, Cast(0.0 as Double Precision) DSumma, Cast(Null as TimeStamp) DDate from ZpltPlatSlv where (MstID=:ID) and (sSumma <> 0) and (sDate is not Null) Group by sDate UNION ALL Select Cast(0 as Double Precision) SSumma, Cast(Null as TimeStamp) sDate, Sum(DSumma) DSumma, DDate from ZpltPlatSlv where (MstID=:ID) and (DSumma <> 0) and (DDate is not Null) Group by DDate into :SSumma, :SDate, :DSumma, :DDate do begin aSumma = 0; if (:SumTyp=0) then begin aSumma = :SSumma; aDate = :SDate; end if (:SumTyp=1) then begin aSumma = :DSumma; aDate = :DDate; end if (:aSumma is not Null and :aSumma <> 0 and :aDate is not Null) then begin Dt3 = Null; kt3 = Null; Dt7 = Null; kt7 = Null; if (:d7=1) then dt7 = :KassID; if (:k7=1) then kt7 = :KassID; AccnID = Gen_ID(AccnProv_ID, 1); Insert into AccnProv(ID, OurOrgnID, DAT_, Document, DT, KT, Summa, Comment, Dt3, Kt3, Dt7, Kt7, UserName, Oper, OperID, DocID) Values(:AccnID, :OurOrgnID, :aDate, :Nbr, :Dt, :Kt, :aSumma, :aComment, :Dt3, :Kt3, :Dt7, :Kt7, :UserName, 71, :OperID, :MID); Insert into ZpltPlatAcCr (AccnID, PlatID) Values(:AccnID, :ID); end end end end end^ SET TERM ; ^ /******************************************************************************/ /*** Roles ***/ /******************************************************************************/ CREATE ROLE USERROLE; /******************************************************************************/ /*** Descriptions ***/ /******************************************************************************/ DESCRIBE DOMAIN CRDS_ID_FK 'Вторичный ключ (FOREIGN KEY)'; DESCRIBE DOMAIN CRDS_ID_PK 'Первичный ключ'; /******************************************************************************/ /*** Descriptions ***/ /******************************************************************************/ DESCRIBE TABLE ACCNDOC 'Бухгалтерские справки'; DESCRIBE TABLE ACCNPLAN 'План Счетов бухгалтерского учета. Проводки - в таблице ACCNPROV (Журнал Учета хоз. операций).'; DESCRIBE TABLE ACCNPROV 'Журнал учета хозяйственных операций (проводки).'; DESCRIBE TABLE ACOPRLST 'Типовые Операции (для формирования проводок). Сами наборы проводок - в таблице STORACCN.'; DESCRIBE TABLE BANKMFO 'Справочник Банков.'; DESCRIBE TABLE BDG_ATTR 'Атрибуты управленческих документов'; DESCRIBE TABLE BDG_ATTR_VAL 'Значения атрибутов управленческих документов'; DESCRIBE TABLE BDG_BASIS 'Базы разнесения затрат при калькуляции себестоимости'; DESCRIBE TABLE BDG_BASIS_PORTION 'Значение баз калькуляции для каждой единицы продукции'; DESCRIBE TABLE BDG_CALC 'Калькуляции себестоимости'; DESCRIBE TABLE BDG_CALC_DATA 'Калькуляция: Результаты'; DESCRIBE TABLE BDG_CALC_GOODS 'Калькуляция: данные по продукции'; DESCRIBE TABLE BDG_CALC_ORDER 'Калькуляция: порядок выполнения'; DESCRIBE TABLE BDG_CENTER 'ЦФУ: Центр финансового управления'; DESCRIBE TABLE BDG_DATA_STATE 'Состояние данных управленческого учета'; DESCRIBE TABLE BDG_DIRECTION 'Направления деятельности, проекты'; DESCRIBE TABLE BDG_DISTR 'Схемы разнесения затрат по ЦФУ'; DESCRIBE TABLE BDG_DISTR_BASIS 'Базы разнесения затрат по ЦФУ'; DESCRIBE TABLE BDG_DISTR_ORDER 'Порядок разнесения затрат по ЦФУ'; DESCRIBE TABLE BDG_DISTR_PORTION 'Доли в схемах разнесения затрат по ЦФУ'; DESCRIBE TABLE BDG_DOC 'Разнесенные данные управленческого учета'; DESCRIBE TABLE BDG_GOODS 'Номенклатура в управленческих документах'; DESCRIBE TABLE BDG_INDICATOR 'Экономические показатели (будет развиваться, может быть удалено)'; DESCRIBE TABLE BDG_IND_VAL 'Значения экономических показателей'; DESCRIBE TABLE BDG_ITEM 'Операционные / Финансовые статьи'; DESCRIBE TABLE BDG_LINK_ITEM_CENTER 'Связь между статьями и ЦФУ'; DESCRIBE TABLE BDG_LINK_PAPER_ATTR_VAL 'Привязка к управленческим документам значений атрибутов'; DESCRIBE TABLE BDG_LINK_USER_CENTER 'Связь между пользователями и ЦФУ'; DESCRIBE TABLE BDG_LINK_USER_DIRECTION 'Связь между пользователями и направлениями'; DESCRIBE TABLE BDG_PAPER 'Документы управленческого учета'; DESCRIBE TABLE BDG_PERIOD 'Рабочие периоды'; DESCRIBE TABLE BDG_PLAN 'Планы'; DESCRIBE TABLE BDG_PRICE 'Плановые цены управленческого учета'; DESCRIBE TABLE BDG_PRICE_GOODS 'Информация о материальных ресурсах'; DESCRIBE TABLE BDG_SCHEME 'Схемы калькуляции'; DESCRIBE TABLE BDG_SCHEME_OPER 'Операции расчета "базы калькуляции"/"агрегатных групп"'; DESCRIBE TABLE BDG_SCHEME_ORDER 'Шаги калькуляции (последовательность) по определенной схеме'; DESCRIBE TABLE BDG_SERV 'Услуги в управленческих документах'; DESCRIBE TABLE BDG_SHEDULE 'Графики оплат'; DESCRIBE TABLE BDG_SHEDULE_SHIFT 'Смещение (в днях) в графиках оплат'; DESCRIBE TABLE BOOKSLDT 'Записи в книге учета продаж'; DESCRIBE TABLE BOOKSLDTACCR 'Привязка проводок к записям в книге учета продаж'; DESCRIBE TABLE BOOKSLDTDAYS 'Дни по книге учета продаж'; DESCRIBE TABLE BOOKSLKT 'Книга учета покупок (записи)'; DESCRIBE TABLE BOOKSLKTACCR 'Привязка проводок к записям в книге учета покупок'; DESCRIBE TABLE BOOKSLKTDAYS 'Книга учета покупок (дни)'; DESCRIBE TABLE CONTACTS 'Контакты'; DESCRIBE TABLE CRDS_DGVDT 'Таблица расходных документов карточек'; DESCRIBE TABLE CRDS_DGVKT 'Таблица приходных документов карточек'; DESCRIBE TABLE CRDS_GDDDT 'Товар в таблице CRDS_DGVDT'; DESCRIBE TABLE CRDS_GDDKT 'Товар в таблице CRDS_DGVKT'; DESCRIBE TABLE CSDTKT 'Записи о задолженностях'; DESCRIBE TABLE CSDTKTHB 'Категории задолженностей (справочник)'; DESCRIBE TABLE CTLGDISTR 'Данные о выдаче прокатных единиц (например журналов) '; DESCRIBE TABLE CTLGENTITY 'Содержимое прокатной единицы (например статьи журнала) '; DESCRIBE TABLE CTLGGOODS 'Список ID товаров, выдаваемых в прокат '; DESCRIBE TABLE CTLGITEM 'Единицы проката (например номера журналов) '; DESCRIBE TABLE CTLGKIND 'Типы для содержимого прокатной единицы (например тип статьи какого либо журнала) '; DESCRIBE TABLE CTLGLINK 'Взаимосвязь: Темы - Прокатные единицы '; DESCRIBE TABLE CTLGTHEME 'Темы, освещаемые прокатными единицами (например темы журналов) '; DESCRIBE TABLE CURRDATA 'Курсы валют (по дням). Может заполняться не за все дни, только по дням изменения курса. Для извлечения курсов за любой день служит сохр. процедура CURRENCY_GETVALUE.'; DESCRIBE TABLE CURRSTOR 'Движение валюты - операции по валютным счетам'; DESCRIBE TABLE CURRSTORDAYS 'Движение валюты - остатки по валютным р/с по дням'; DESCRIBE TABLE CURRSTORDAYSACCR 'Движение валюты - привязка проводок'; DESCRIBE TABLE CURRSTORDTKT 'Категории задолженностей (операции)'; DESCRIBE TABLE CURRTYP 'Справочник видов валют'; DESCRIBE TABLE DGDTACCN 'Привязка проводок к счетам дебиторов (DGVDT)'; DESCRIBE TABLE DGDUACCN 'Привязка проводок к Актам на оказание услуг / работ (Дебиторы)'; DESCRIBE TABLE DGKTACCN 'Привязка проводок к Счетам Кредиторов (DGVKT)'; DESCRIBE TABLE DGKUACCN 'Привязка проводок к Актам на прием услуг / работ (Кредиторы)'; DESCRIBE TABLE DGVDT 'Счета Дебиторов (счета / расходные накладные на складе)'; DESCRIBE TABLE DGVDTKT_LOG 'Таблица для сверки с данными терминала (ДК)'; DESCRIBE TABLE DGVDTU 'Акты на выполнение работ / услуг (Дебиторы)'; DESCRIBE TABLE DGVDTUD 'Договора на выполнение работ/услуг (Дебиторы)'; DESCRIBE TABLE DGVDT_TASK 'Задачи на доставку'; DESCRIBE TABLE DGVDUGRP 'Группы договоров на оказание услуг (Дебиторы)'; DESCRIBE TABLE DGVKT 'Счета Кредиторов (приходные накладные на складе)'; DESCRIBE TABLE DGVKTU 'Акты на прием работ / услуг (Кредиторы)'; DESCRIBE TABLE DGVSUM 'Вспомогательная таблица'; DESCRIBE TABLE DGVWK 'Производство: накладные на передачу материалов и комплектующих в производство'; DESCRIBE TABLE DGVWKG 'Производство: накладные на выпуск изделий в производстве - оприходование изделий на складе готовой продукции - списание материалов и комплектующих из производства'; DESCRIBE TABLE DKBILL 'Накладные (Дом кофе)'; DESCRIBE TABLE DKBILLCOUNT 'Счетчики (Дом кофе)'; DESCRIBE TABLE DKBILLGDS 'Список товара в накладных (Дом кофе)'; DESCRIBE TABLE DKBILLPRSN 'Отработанное сотрудниками время (Дом кофе)'; DESCRIBE TABLE DK_BNS 'Справочник бонусов'; DESCRIBE TABLE DK_BNS_ORGN 'Бонусы организаций (клиентов)'; DESCRIBE TABLE DK_BNS_ORGN_LOG 'Лог операций над бонусами клиентов'; DESCRIBE TABLE DK_BNS_PRICEGOODS 'Прием/Выдача бонусов за товары'; DESCRIBE TABLE DK_BONUSACCRUAL 'Список бонусов которые нужно на числить через 14 дней.'; DESCRIBE TABLE DK_DISCOUNTBONUSSETGOODS 'Связи с товарами для наборов скидок и бонусов'; DESCRIBE TABLE DK_DISCOUNTBONUSSETORGN 'Связи с организациями для наборов скидок и бонусов'; DESCRIBE TABLE DK_DISCOUNTBONUSSETS 'Наборы правил применения скидок и начиления бонусов'; DESCRIBE TABLE DK_DISCOUNTBONUSSETSTORGRP 'Связи с группами складов для наборов скидок и бонусов'; DESCRIBE TABLE DK_DSCNT 'Справочник скидок'; DESCRIBE TABLE DK_GIFTCERTIFICATE 'Движения подарочных сертификатов'; DESCRIBE TABLE DK_GOODSPACK 'Упаковки товаров'; DESCRIBE TABLE DK_MAILINGTHEMES 'Темы для рассылок'; DESCRIBE TABLE DK_MAILINGTYPES 'Типы рассылок 0 - Email 1 - SMS'; DESCRIBE TABLE DK_MAILTHEMETYPESORGNREF 'Связь между клиентом и темой, если связи нет считать что клиент подписан.'; DESCRIBE TABLE DK_MAILTYPEORGNREF 'Связь между клиентом и типом рассылки, если связи нет считать что клиент подписан.'; DESCRIBE TABLE DOCCOMMENT 'Типовые комментарии'; DESCRIBE TABLE DOCMCATEGORY 'Категории для задач (справочник)'; DESCRIBE TABLE DOCMDOCDOCUMENT 'Документооборот - документы'; DESCRIBE TABLE DOCMDOCFOLDER 'Документооборот - Папки документов'; DESCRIBE TABLE DOCMGROUPS 'Группы (папки) задач '; DESCRIBE TABLE DOCMMSG 'Сообщения (документооборот) (получатели сообщений - см. DOCMMSGRUSERS)'; DESCRIBE TABLE DOCMMSGFOLDER 'Папки сообщений (документооборот)'; DESCRIBE TABLE DOCMMSGRUSERS 'Получатели сообщения '; DESCRIBE TABLE DOCMTASK 'Задачи (документооборот) '; DESCRIBE TABLE DOCMTASKATTACH 'Задача - аттачи (прикрепленные файлы) '; DESCRIBE TABLE DOCMTASKCATEGORY 'Категории, привязанные к задачам'; DESCRIBE TABLE DOCMTASKCYCLE 'Циклы для задач (документооборот)'; DESCRIBE TABLE DOCMTASKFINANCE 'Расходы по задачам (документооборот)'; DESCRIBE TABLE DOCMTASKHB 'Справочник типовых задач (документооборот)'; DESCRIBE TABLE DOCMTASKHBCATEGORY 'Категории в задачах'; DESCRIBE TABLE DOCMTASKSTAGE 'Этапы выполнения задач'; DESCRIBE TABLE DOCMTASKWORK 'Время работы исполнителей над задачей'; DESCRIBE TABLE ECRGOODS 'Соответствие наименований товаров для ЭККА.'; DESCRIBE TABLE EDUCATION 'Образование сотрудников'; DESCRIBE TABLE FRREPORT 'Отчетные формы в формате FastReport'; DESCRIBE TABLE FRREPORTTREE 'Отчеты в формате FastReport (дерево)'; DESCRIBE TABLE FRREPORTTREEUSER 'Доступ пользователей к отчетным формам FastReport (дерево) - см. табл. FRREPORTTREE'; DESCRIBE TABLE FUNCMANAGE 'Функции управления'; DESCRIBE TABLE FUNCSUPPORT 'Функции поддержки'; DESCRIBE TABLE GDDDT 'Позиции товаров в расходных счетах / накладных'; DESCRIBE TABLE GDDDTDDU 'Услуги в расходных накладных (по складу)'; DESCRIBE TABLE GDDDTPARAM 'Дополнительные параметры (серийные номера) по позициям товара в расх. накладных'; DESCRIBE TABLE GDDDTU 'Услуги в актах на оказание услуг/работ'; DESCRIBE TABLE GDDDTUNL 'Налоги в договорах на оказание услуг/работ'; DESCRIBE TABLE GDDKT 'Позиции товаров в приходных накладных'; DESCRIBE TABLE GDDKTDDU 'Услуги в приходных накладных'; DESCRIBE TABLE GDDKTPARAM 'Параметры - приход товара (серийные номера)'; DESCRIBE TABLE GDDKTQNT 'Позиции товара в остатке на складах (для быстрого просмотра товара в наличии)'; DESCRIBE TABLE GDDKTU 'Позиции услуг в актах на оказание услуг/работ (кредиторы)'; DESCRIBE TABLE GDDKTZKPARAMS 'Параметры (протокол) для материалов в заказе'; DESCRIBE TABLE GDSKTREQ 'Заявки на закупку'; DESCRIBE TABLE GDSKTREQGDS 'Заявки на закупку - Список товара'; DESCRIBE TABLE GDSPARAMGDSREF 'Параметры - значения по товарам'; DESCRIBE TABLE GDSPARAMGRP 'Группы параметров (товар)'; DESCRIBE TABLE GDSPARAMGRPREF 'Принадлежность параметров к группам товаров'; DESCRIBE TABLE GDSPARAMPRM 'Параметры - виды (товар)'; DESCRIBE TABLE GDSPARAMVAL 'Значения параметров - фиксированные (товар)'; DESCRIBE TABLE GOODS 'Справочник товаров (материальных ценностей)'; DESCRIBE TABLE GOODSCHK 'Вспомогательная таблица (не содержит актуальных данных)'; DESCRIBE TABLE GOODSGROUPS 'Группы товаров'; DESCRIBE TABLE GOODSGRP 'Суб-группы товаров'; DESCRIBE TABLE GOODSPRICEPROC '? Скидки по прайс-листам по группам товара (скорее всего таблица не используется)'; DESCRIBE TABLE GOODS_DECRNORM 'Нормы естественной убыли товаров'; DESCRIBE TABLE HBDTNL 'Налоги по услугам (справочник) - Дебиторы'; DESCRIBE TABLE HBGDDDU 'Виды услуг в расходных накладных (реализация товара)'; DESCRIBE TABLE HBKTSU 'Виды услуг в актах на прием услуг/работ (Кредиторы)'; DESCRIBE TABLE HBONE 'Единицы измерения'; DESCRIBE TABLE HBPRSNTEST 'Справочник тестов'; DESCRIBE TABLE HBSERVU 'Виды услуг в актах на оказание услуг/работ (Справочник)'; DESCRIBE TABLE HBSERVUGRP 'Группы услуг'; DESCRIBE TABLE HB_VEHICLE 'Справочник: Транспортные средства'; DESCRIBE TABLE INFOSRC 'Источники информации'; DESCRIBE TABLE INVOPISDATA 'Инвентарные описи (позиции товаров)'; DESCRIBE TABLE INVOPISHEADER 'Инвентарные описи (заголовок)'; DESCRIBE TABLE KASSACCR 'Привязка проводок к кассовым ордерам'; DESCRIBE TABLE KASSAVACCR 'Привязка проводок к авансовым отчетам'; DESCRIBE TABLE KASSAVCR 'Привязка выплаченных сумм (по ордерам) к авансовым отчетам'; DESCRIBE TABLE KASSAVDATA 'Позиции в авансовом отчете'; DESCRIBE TABLE KASSAVLIST 'Авансовые отчеты'; DESCRIBE TABLE KASSDATA 'Приходные и расходные кассовые ордера Приходные - SUMMA > 0 Расходные - SUMMA < 0'; DESCRIBE TABLE KASSDAYS 'Дни в кассах'; DESCRIBE TABLE KASSLIST 'Справочник Касс'; DESCRIBE TABLE LANG 'Знание иностранных языков (Личное дело)'; DESCRIBE TABLE "LEV" 'Группы / уровни аналитического учета'; DESCRIBE TABLE MAINAMCR 'Привязка проводок к ведомости расчета амортизации (по Основным Средствам)'; DESCRIBE TABLE MAINAMMST 'Ведомость расчета амортизации'; DESCRIBE TABLE MAINAMSLV 'Список Основных Средств в ведомости расчета амортизации'; DESCRIBE TABLE MAINCRCH 'Привязка проводок к изменению стоимости Основных Средств'; DESCRIBE TABLE MAINGRP 'Группы Амортизации / Износа Основых Средств (Нематериальных Активов)'; DESCRIBE TABLE MAININPAC 'Привязка проводок к вводу Основных Средств в экчплуатацию'; DESCRIBE TABLE MAINMEAN 'Основные Средства (Карточки ОС)'; DESCRIBE TABLE MAINMEANSLV 'Комплектующие в Основных Средствах'; DESCRIBE TABLE MAINMOVE 'Перемещения Основных Средств'; DESCRIBE TABLE MAINOUTAC 'Привязка проводок по списанию Основных Средств'; DESCRIBE TABLE MAINPRICE 'Изменение Стоимости Основных Средств'; DESCRIBE TABLE MAINRPTINVMST 'Инвентаризационная ведомость ОС (заголовок)'; DESCRIBE TABLE MAINRPTINVSLV 'Инвентаризационная ведомость ОС (список ОС)'; DESCRIBE TABLE MBPDGAC 'Привязка проводок в накладных на МБП'; DESCRIBE TABLE MBPDGV 'Накладные по движению МБП'; DESCRIBE TABLE MBPGDD 'МБП в накладных'; DESCRIBE TABLE MBPMEAN 'Карточки МБП'; DESCRIBE TABLE OBJ_ATTACH 'Прикрепленные файлы'; DESCRIBE TABLE OBJ_CLASS 'Объекты БД - базовые экз. объектов'; DESCRIBE TABLE OBJ_MSG 'Сообщения'; DESCRIBE TABLE OBJ_MSGREAD 'Чтение сообщений пользователями'; DESCRIBE TABLE OBJ_STAGE 'Этапы объектов'; DESCRIBE TABLE OBJ_STAGEROUTESTD 'Маршруты этапов (справочник)'; DESCRIBE TABLE OBJ_STAGESTD 'Этапы (справочник)'; DESCRIBE TABLE OBJ_TYPE 'Объекты БД - типы'; DESCRIBE TABLE OPERADD 'Прием на работу'; DESCRIBE TABLE ORGN 'Справочник Организаций (Контрагентов)'; DESCRIBE TABLE ORGNBANKACCN 'Расчетные Счета Контрагентов'; DESCRIBE TABLE ORGNGRPOPEMAIL 'Оповещения для групп организаций по операциям'; DESCRIBE TABLE ORGNGRPREF 'Привязка Организаций по Группам'; DESCRIBE TABLE ORGNINFO 'Договора по Контрагентам'; DESCRIBE TABLE ORGNPRICELIST 'Привязка прайс-листов по организациям'; DESCRIBE TABLE ORGN_GRP 'Группы Организаций'; DESCRIBE TABLE ORGN_GRPHIDE 'Группы организаций скрытые пользователями'; DESCRIBE TABLE ORGN_MANAGER 'Менеджеры (по оргпнизациям)'; DESCRIBE TABLE PERSONAL 'Лицевые Счета (Сотрудники) см. также PRSNCARD'; DESCRIBE TABLE PODRLIST 'Справочник Подразделений'; DESCRIBE TABLE PODRPOST 'Должности (орг-структура)'; DESCRIBE TABLE PRICEGOODS 'Позиции товаров в прайс-листах'; DESCRIBE TABLE PRICELIST 'Прайс-Листы'; DESCRIBE TABLE PROFEXPERIENCE 'Опыт работы (личное дело)'; DESCRIBE TABLE PRSNATTACH 'Файлы в личных делах'; DESCRIBE TABLE PRSNCARD 'Личные дела (сотрудники)'; DESCRIBE TABLE PRSNMOVE 'Назначения / Перемещения (в Лицевых Счетах)'; DESCRIBE TABLE PRSNOPEMAIL 'Оповещения по E-Mail для сотрудников по операциям'; DESCRIBE TABLE PRSNOPER 'Кадровые операции отдела кадров'; DESCRIBE TABLE PRSNOPERTYPE 'Отдел кадров: Типы кадровых операций'; DESCRIBE TABLE PRSNPOST 'Должности (классификатор профессий)'; DESCRIBE TABLE PRSNPOSTPROF 'Освоенные профессии в личном деле'; DESCRIBE TABLE PRSNTEST 'Результаты психологического тестирования'; DESCRIBE TABLE RBPRODOC 'Отчетные формы в формате Report Builder (не используются)'; DESCRIBE TABLE REGION 'Справочник Регионов (Страны, Области, Города)'; DESCRIBE TABLE REL_KURS 'Служебная таблица (не исп.)'; DESCRIBE TABLE REPLICATIONLOG 'Репликация: Лог'; DESCRIBE TABLE REPLICATIONLOGFLD 'Репликация: Поля'; DESCRIBE TABLE REPLICATIONLOGREC 'Репликаци: записи'; DESCRIBE TABLE REPLICATIONOFFICE 'Репликация: Оффисы'; DESCRIBE TABLE RESERVLOG 'Протокол резервирования товара'; DESCRIBE TABLE RIGHT_LIST 'Список параметров доступа пользователей'; DESCRIBE TABLE SALE 'Платежные Документы - приход (Дебиторы)'; DESCRIBE TABLE SALEACCN 'Привязка проводок к Оплатам (Дебиторы)'; DESCRIBE TABLE SALECROS 'Привязка оплат к Счетам Дебиторов'; DESCRIBE TABLE SALEDTDATA 'Записи в платежных документах (дебиторы) - детализация'; DESCRIBE TABLE SALEDTVKCR 'Привязка дебиторских оплат к векселям'; DESCRIBE TABLE SALEDUCR 'Привязка Дебиторских Оплат к Актам на выполнение Услуг / Работ'; DESCRIBE TABLE SALEKT 'Платежи (кредиторы)'; DESCRIBE TABLE SALEKTAC 'Привязка проводок к Кредиторким Платежным Документам'; DESCRIBE TABLE SALEKTCR 'Привязка Кредиторских Оплат к Счетам Кредиторов (Приходным Накладным)'; DESCRIBE TABLE SALEKTDATA 'Записи в платежных документах (кредиторы) - детализация'; DESCRIBE TABLE SALEKTVKCR 'Привязка Кредиторких Оплат к Векселям'; DESCRIBE TABLE SALEKUCR 'Привязка Кредиторских Платежей к Актам на выполнение Услуг / Работ'; DESCRIBE TABLE SC_CARDS 'Состав изделия ремонта'; DESCRIBE TABLE SC_CARDT 'Карточки изделий (серв. центр)'; DESCRIBE TABLE SC_REMO 'Ремонт'; DESCRIBE TABLE SC_REMONT 'Ремонт - работы'; DESCRIBE TABLE SC_REMONT1 'Выбранные работы для ремонта'; DESCRIBE TABLE SC_REMO_TYPE 'Типы ремонтов (сервисный центр)'; DESCRIBE TABLE SC_REMO_TYPE_PARAMS 'Параметры пользователей для типов ремонтов.'; DESCRIBE TABLE SC_REMZAP 'Ремонт - запчасти по работе'; DESCRIBE TABLE SC_REMZAP1 'Выбранные запчасти для ремонта'; DESCRIBE TABLE SERVICESVD 'Список услуг (Веста-Дантим) - временная таблица для импорта услуг'; DESCRIBE TABLE STORACCN 'Наборы проводок по типовым операциям'; DESCRIBE TABLE STORGRP 'Группы Складов'; DESCRIBE TABLE STORGRPREF 'Входимость Складов в Группы (STORGRP)'; DESCRIBE TABLE STORGRP_NCOST 'Стоимость нормо-часа'; DESCRIBE TABLE STORLIST 'Справочник Складов'; DESCRIBE TABLE STORZAKAZDT 'Заказы на отгрузку товара'; DESCRIBE TABLE STORZDTGDS 'Товар в заказах на отгрузку товара'; DESCRIBE TABLE SUB 'Начальное Сальдо по аналитическим Счетам'; DESCRIBE TABLE SYSCONST 'Системные константы'; DESCRIBE TABLE SYSLOG 'Протокол операций (работы) пользователей'; DESCRIBE TABLE SYSLOGLOGIN 'Проколирование входов в систему'; DESCRIBE TABLE SYSLOGPROV 'Протокол редактирования проводок'; DESCRIBE TABLE SZDTCR 'Распределение оплат по складским заказам (реализация товара)'; DESCRIBE TABLE TRADEPOINT 'Торговые точки (по Организациям)'; DESCRIBE TABLE USERDGRP 'Доступ пользователей к группам (папкам) DOCMGROUPS задач - DOCMTASK'; DESCRIBE TABLE USERGGRP 'Доступ пользователей по группам товара (кросс-таблица)'; DESCRIBE TABLE USERKASS 'Доступ пользователей к Кассам'; DESCRIBE TABLE USERLIST 'Список пользователей Системы'; DESCRIBE TABLE USERORGN 'Доступ пользователей по предприятиям'; DESCRIBE TABLE USERPODR 'Доступ пользователей по подразделениям'; DESCRIBE TABLE USERPRLS 'Доступ по прайс-листам'; DESCRIBE TABLE USERSTOR 'Доступ Пользователей к Складам'; DESCRIBE TABLE USER_GRP 'Группы пользователей'; DESCRIBE TABLE USER_GRPREF 'Вхождение пользователей в группы пользователей'; DESCRIBE TABLE VENDORNAME 'Наименования товаров поставщика'; DESCRIBE TABLE VKSL 'Векселя'; DESCRIBE TABLE VKSLACCR 'Привязка проводок к Векселям'; DESCRIBE TABLE WORKCALCMST 'Расчетная Ведомость распределения накладных расходов'; DESCRIBE TABLE WORKCALCNK 'Виды накладных расходов в Ведомости'; DESCRIBE TABLE WORKCALCNKPRM 'Привязка распределяемых накладных расходов к параметрам по товарам (изделиям)'; DESCRIBE TABLE WORKCALCPODR 'Цеха в ведомости распределения накл. расходов'; DESCRIBE TABLE WORKCALCPROV 'Привязка проводок по распределению накладных расходов'; DESCRIBE TABLE WORKGODSTEMP '"Временная" таблица для анализа выпуска изделий'; DESCRIBE TABLE WORKGOODS 'Условные материалы (иерархическое дерево) процедура WORKGOODS_GETPARENTS возвращает маршрут к корню для любого узла'; DESCRIBE TABLE WORKGOODSGDS 'Привязка материалов к условным материалам'; DESCRIBE TABLE WORKGOODSLINK 'Пр-во: условные материалы - привязка основные/вспомогательные'; DESCRIBE TABLE WORKHBLN 'Справочник замен комплектующих - Эквивалентов'; DESCRIBE TABLE WORKHBNK 'Накладные Расходы (справочник)'; DESCRIBE TABLE WORKLINK 'Материалы и Комплектующие в Изделиях (Справочник Нормы)'; DESCRIBE TABLE WORKMAIN 'Производство: Справочник Изделий (PARENTID is Null) + сопутствующие материалы (PARENTID is not Null)'; DESCRIBE TABLE WORKMAINTOOL 'Связи: технологическая оснастка(WORKTOOL) - изделия (WORKMAIN)'; DESCRIBE TABLE WORKMODEL 'Модели изделий (группы, модели, детали)'; DESCRIBE TABLE WORKMODELDTL 'Входимость деталей в модели'; DESCRIBE TABLE WORKMODELGDS 'Входимость условных материалов в модели (детали)'; DESCRIBE TABLE WORKNKDG 'Привязка накладных расходов к накладным на оприходование изделий из производства'; DESCRIBE TABLE WORKOPER 'Производство - технологические операции по моделям'; DESCRIBE TABLE WORKOPERATION 'Производство - технологические операции (справочник)'; DESCRIBE TABLE WORKPLANMST 'Анализ выпуска изделий (ведомость)'; DESCRIBE TABLE WORKPLANSLV 'Анализ выпуска изделий'; DESCRIBE TABLE WORKPLANSTOR 'Анализ выпуска изделий - привязка складов к ведомости'; DESCRIBE TABLE WORKREQUEST 'Заявки на производство изделий'; DESCRIBE TABLE WORKREQUESTGDS 'Список изделий (заявки на производство)'; DESCRIBE TABLE WORKTOOL 'Технологическая оснастка'; DESCRIBE TABLE WORKTOOLTYP 'Типы технологических оснасток'; DESCRIBE TABLE WORKZAKAZ 'Заказы (Производство)'; DESCRIBE TABLE WORKZCUTTING 'Заказы - результаты раскроя'; DESCRIBE TABLE WORKZMST 'Изделия в заказе'; DESCRIBE TABLE WORKZNK 'Накладные расходы в заказе'; DESCRIBE TABLE WORKZPARAM 'Параметры изделий в заказе'; DESCRIBE TABLE WORKZREF 'Связи: основные изделия - полуфабрикаты'; DESCRIBE TABLE WORKZSLV 'Материалы и комплектующие в заказе'; DESCRIBE TABLE WORKZTOOL 'Технологическая оснастка в изделиях по заказу'; DESCRIBE TABLE ZPLTCALCCRAC 'Привязка проводок к ведомости начисления зарплаты'; DESCRIBE TABLE ZPLTCALCDECR 'Расчетная Ведомость: Удержания в расчетной ведомости по сотрудникам'; DESCRIBE TABLE ZPLTCALCINCR 'Расчетная Ведомость: Начисления по Сотрудникам'; DESCRIBE TABLE ZPLTCALCMST 'Расчетная Ведомость начисления Заработной Плата поля D1..D31 - количество рабочих часов по дням расчетного месяца (нормированный табель учета рабочего времени)'; DESCRIBE TABLE ZPLTCALCSLV 'Сотрудники в расчетной ведомости начисления заработной платы'; DESCRIBE TABLE ZPLTCALCSLVFOT 'Рассчитанные Начисления на Фонд Отлаты Труда (по Сотрудникам и по видам начислений)'; DESCRIBE TABLE ZPLTCALENDARBASE 'Календарь в зарплате (праздники) в каждой записи за указанный год хранятся праздничные дни (поля - по месяцам, дни - побитно в значении поля каждого месяца)'; DESCRIBE TABLE ZPLTDECR 'Удержания (Справочник)'; DESCRIBE TABLE ZPLTDECRFOT 'Начисления на Фонд Оплаты Труда (Справочник)'; DESCRIBE TABLE ZPLTDECRINCR 'Зависимость удержаний от начислений (какие начисления входят в базу для расчета удержания)'; DESCRIBE TABLE ZPLTDECRPRSN 'Удердания по Сотрудникам (в Лицевых Счетах)'; DESCRIBE TABLE ZPLTFOTGRP 'Группы начислений на Фонд Оплаты Труда (ФОТ)'; DESCRIBE TABLE ZPLTFOTGRPREF 'Привязка начислений на ФОТ к группам'; DESCRIBE TABLE ZPLTGRPPRSNMST 'Бригады (Справочник) для расчета бригадных нарядов'; DESCRIBE TABLE ZPLTGRPPRSNSLV 'Сотрудники (Работники) в Бригадах'; DESCRIBE TABLE ZPLTINCR 'Начисления (Справочник)'; DESCRIBE TABLE ZPLTINCRFOT 'Привязка начислений на Фонд Оплаты Труда к видам Начислений'; DESCRIBE TABLE ZPLTINCRINCR 'Зарплата: зависимости между начислениями (что входит в базу для расчета начисления)'; DESCRIBE TABLE ZPLTINCRPRSN 'Начисления по Сотрудникам (в Лицевых Счетах)'; DESCRIBE TABLE ZPLTJOBGRPJOB 'Зарплата: Бригадные наряды - выполненные работы'; DESCRIBE TABLE ZPLTJOBGRPMST 'Зарплата: Бригадные наряды (привязаны к расчетной ведомости)'; DESCRIBE TABLE ZPLTJOBGRPPRSN 'Зарплата: Бригадные наряды - работники'; DESCRIBE TABLE ZPLTJOBPRSNMST 'Зарплата: Индивидуальные наряды'; DESCRIBE TABLE ZPLTJOBPRSNSLV 'Зарплата: Индивидуальные наряды - выполненные работы/работники'; DESCRIBE TABLE ZPLTJOBSLIST 'ЗарПлата - Виды работ по нарядам (справочник)'; DESCRIBE TABLE ZPLTPLATACCR 'Привязка проводок к Платежной Ведомости Заработной Платы'; DESCRIBE TABLE ZPLTPLATMST 'Платежная Ведомость'; DESCRIBE TABLE ZPLTPLATSLV 'Сотрудники в Платежной Ведомости'; DESCRIBE TABLE ZPLTPRSNDPN 'Депонент по сотрудникам'; DESCRIBE TABLE ZPLTSERTMEDIC 'Больничные листы'; DESCRIBE TABLE ZPLTSERTVACAT 'Отпускные'; DESCRIBE TABLE ZPLTSLVDAYCOMMENT 'Комментарии по дням в расчетной ведомости (по сотрудникам)'; DESCRIBE TABLE ZPLTTABEL 'Виды табелей учета рабочего времени'; DESCRIBE TABLE ZPLTTABELPLAN 'Табеля учета рабочего времени - плановые (помесячно)'; /******************************************************************************/ /*** Descriptions ***/ /******************************************************************************/ DESCRIBE PROCEDURE ACCNPLAN_ANNAME 'Наименование аналитики по счету'; DESCRIBE PROCEDURE ACCNPLAN_CALCAN 'Ведомость аналитического учета по счету Входные параметры: ORGNID - ID предприятия ACCN - счет AN - вид аналитики = 1..7 по справочникам = 8 валовые доходы = 9 валовые расходы = -1 по подразделениям = -2 по объектам BDATE - начало отчетного периода EDATE - конец отчетного периода Выходные параметры: ID - ID аналитического уровня BS - начальное сальдо OD - обороты по дебету OK - обороты по кредиту ES - конечное сальдо NAME - наименование субъекта аналитики'; DESCRIBE PROCEDURE ACCNPLAN_CALCSALDO 'Расчет сальдо по указанному счету на определенную дату (нац. валюта)'; DESCRIBE PROCEDURE ACCNPLAN_CALCSALDOCURR 'Расчет сальдо по указанному счету на определенную дату (валюта)'; DESCRIBE PROCEDURE ACCNPLAN_RECALC 'Пересчет начального сальдо по аналитическому счету при изменении сальдо по уровням'; DESCRIBE PROCEDURE BOOKSLDT_GENACCNREC 'Формирование проводок - книга учета продаж'; DESCRIBE PROCEDURE BOOKSLDT_IMPORT 'Выборка записей для импорта в книгу учета продаж (по первому событию)'; DESCRIBE PROCEDURE BOOKSLDT_JOURNAL 'Формирование журнала учета продаж'; DESCRIBE PROCEDURE BOOKSLDT_JOURNAL1 'Формирование журнала учета продаж'; DESCRIBE PROCEDURE BOOKSLKT_GENACCNREC 'Формирование проводок - книга учета покупок'; DESCRIBE PROCEDURE BOOKSLKT_IMPORT 'Выборка записей для импорта в книгу учета покупок (по первому событию)'; DESCRIBE PROCEDURE BOOKSLKT_JOURNAL 'Преобразование записей в книге учета покупок в журнал по колонкам (для распечатки)'; DESCRIBE PROCEDURE BOOKSLKT_JOURNAL1 'Преобразование записей в книге учета покупок в журнал по колонкам (для распечатки)'; DESCRIBE PROCEDURE CSDTKT_NEWQUARTER 'Проверяет и при необходимости формирует задолженности в валюте по контрагентам для заданного квартала'; DESCRIBE PROCEDURE CURRENCY_GETVALUE 'Курс валюты на указанную дату: Входные параметры: CURRTYPID - ID валюты (таблица CURRTYP). DAT_ - Дата. Выходные паметры: VAL - Курс валюты. Если нет данных, возвращается значение = 1.0.'; DESCRIBE PROCEDURE CURRSTORDAYS_GENACCNREC 'Формирование проводок - движение валюты.'; DESCRIBE PROCEDURE DGVDTBLNS_ORGN 'Баланс по контрагентам (по первичным документам)'; DESCRIBE PROCEDURE DGVDTBLNS_ORGNDGV 'Задолженность по дебиторам (по первичным документам) с аналитикой по договорам ORGNID - Предприятие BDATE - Дата ID - ID контрагента (ORGN) SALDO - задолженность ORGNINFOID - ID договора DTKTID - ID категории задолженности MAXTIME - срок отсрочки оплаты по договору OUT_DATE - дата выдачи товара (оказания услуг) DAYS - количество дней просроченной оплаты (с учетом указанной отсрочки платежа) INTERVAL - колонка срока: = 0 - текущая = 1 - до 30 дней = 2 - до 60 дней = 3 - более 60 дней'; DESCRIBE PROCEDURE DGVDTBLNS_ORGNDGV1 'Задолженность по дебиторам (по первичным документам) с аналитикой по договорам ORGNID - Предприятие BDATE - Дата ID - ID контрагента (ORGN) SALDO - задолженность ORGNINFOID - ID договора DTKTID - ID категории задолженности MAXTIME - срок отсрочки оплаты по договору OUT_DATE - дата выдачи товара (оказания услуг) DAYS - количество дней просроченной оплаты (с учетом указанной отсрочки платежа) INTERVAL - колонка срока: = 0 - текущая = 1 - до 30 дней = 2 - до 60 дней = 3 - более 60 дней'; DESCRIBE PROCEDURE DGVDTBLNS_ORGNDGV2 'Задолженность по дебиторам (по первичным документам) с аналитикой по договорам ORGNID - Предприятие BDATE - Дата ID - ID контрагента (ORGN) SALDO - задолженность ORGNINFOID - ID договора DTKTID - ID категории задолженности MAXTIME - срок отсрочки оплаты по договору OUT_DATE - дата выдачи товара (оказания услуг) DAYS - количество дней просроченной оплаты (с учетом указанной отсрочки платежа) INTERVAL - колонка срока: = 0 - текущая = 1 - до 30 дней = 2 - до 60 дней = 3 - более 60 дней'; DESCRIBE PROCEDURE DGVDTU_CRECALC 'Перерасчет валютного акта (дебиторы) по курсу предоплаты'; DESCRIBE PROCEDURE DGVDTU_CSALE 'Оплата Акта на выполнение услуг (в валюте)'; DESCRIBE PROCEDURE DGVDTU_DELACCNREC 'Удаление проводок по актам на оказание услуг / работ (Дебиторы)'; DESCRIBE PROCEDURE DGVDTU_GENACCNREC 'Формирование проводок по актам на оказание услуг / работ (Дебиторы)'; DESCRIBE PROCEDURE DGVDTU_GENACCNRECKRB 'Формирование проводок по актам на услуги (экспорт) - курсовые разницы (бухгалтерские)'; DESCRIBE PROCEDURE DGVDTU_GENACCNRECSALE 'Формирование проводок по актам на оказание услуг / работ (Дебиторы) (по первому / последнему событию)'; DESCRIBE PROCEDURE DGVDTU_KRBSELECT 'Список дат для пересчета акта услуги (экспорт) для расчета курсовых разниц ID - ID накладной (DGVDTU) KDATE - дата для пересчета курсовой разницы SSUMMA - задолженность по оплате / недоплата (для курс. разницы)'; DESCRIBE PROCEDURE DGVDTU_SALE 'Оплата акта на выполнение услуг / работ (Дебиторы). Входные параметры: ID - ID акта (DGVDTU). SALEID - ID платежного документа (SALE). SM - сумма оплаты (распределяемая сумма). USERNAME - имя пользователя.'; DESCRIBE PROCEDURE DGVDT_CONCAT 'Слияние двух счетов / расходных накладных на внутреннюю передачу. Товар из накладной ID2 переносится в накладную ID1.'; DESCRIBE PROCEDURE DGVDT_CONCAT0 'Слияние двух счетов / расходных накладных на реализацию товара. Товар из накладной ID2 переносится в накладную ID1.'; DESCRIBE PROCEDURE DGVDT_DELACCNREC 'Удаление проводок по расходной накладной'; DESCRIBE PROCEDURE DGVDT_ECRSUMMA 'Расчет суммы накладной для ЭККА (с учетом округлений)'; DESCRIBE PROCEDURE DGVDT_GENACCN 'Процедура перегенерует все проводки по Счетам Дебиторов (всем расходным накладным всех типов) !!! опасная штука'; DESCRIBE PROCEDURE DGVDT_GENACCNREC 'Формирование проводок по расходным накладным (главная процедура - диспетчер)'; DESCRIBE PROCEDURE DGVDT_GENACCNRECINP 'Формирование проводок по расх. накладным в разрезе поставщиков'; DESCRIBE PROCEDURE DGVDT_GENACCNRECKRB 'Формирование проводок по реализации товара (экспорт) - курсовые разницы (бухгалтерские)'; DESCRIBE PROCEDURE DGVDT_GENACCNRECKTU 'Формирование проводок по расходным накладным (услуги при возврате товара поставщику)'; DESCRIBE PROCEDURE DGVDT_GENACCNRECSALE 'Формирование проводок по расходным накладным (по оплатам - первому/последнему событию)'; DESCRIBE PROCEDURE DGVDT_GENACCNRECSUMMARY 'Формирование проводок по расходным накладным (в целом по накладной)'; DESCRIBE PROCEDURE DGVDT_GENDGVKT 'Автоматическое формирование приходной накладной по образцу расходной (внутренняя передача / переоценка товара) Параметры: ID - расходная накладная (DGVDT) DGVKEY - приходная накладная (DGVKT)'; DESCRIBE PROCEDURE DGVDT_GENMAINMEAN 'Формирование списка Основных Средств по расходной накладной со склада (ввод в эксплуатацию)'; DESCRIBE PROCEDURE DGVDT_GENMBPMEANLIST 'Формирование приходной накладной на ввод МБП в эксплуатацию при списание МБП со склада'; DESCRIBE PROCEDURE DGVDT_KRBSELECT 'Список дат для пересчета накладной по реализации на экспорт для расчета курсовых разниц ID - ID накладной (DGVDT) KDATE - дата для пересчета курсовой разницы SSUMMA - задолженность по оплате / недоплата (для курс. разницы)'; DESCRIBE PROCEDURE DGVDT_MOVETOSTOR 'Перенос счета / накладной на реализацию товара на другой склад с формированием внутренней передачи. ID - расходная накладная STORID - склад назначения MOVEDATE - дата перемещения (внутр. передачи) USERNAME - имя пользователя'; DESCRIBE PROCEDURE DGVDT_RESERVLOG 'Ведение протокола резервирования товара ID - ID расходной накладной bDT - дата / время начала резервирования eDT - дата / время завершения резервирования'; DESCRIBE PROCEDURE DGVDT_RETURN 'Удалить расходную накладную'; DESCRIBE PROCEDURE DGVDT_SALE 'Оплата расходной накладной ID - ID накладной (DGVDT) SALEID - ID платежа (SALE) SM - сумма оплаты (для вылютных платежей - в валюте)'; DESCRIBE PROCEDURE DGVDT_SALESUMMA 'Служебная процедурв'; DESCRIBE PROCEDURE DGVDT_STORID 'Служебная процедура'; DESCRIBE PROCEDURE DGVDT_TASK_HAS 'Задачи по доставке'; DESCRIBE PROCEDURE DGVDT_ZSALE 'Оплата расходной накладной в заказе'; DESCRIBE PROCEDURE DGVEMPTTOREAL 'Перевод выписанного счета в резерв. Входные параметры: ID - выписанный счет (TYP=11) PART - признак, формировать ли резервирование при недостаче товара (частичный резерв) = 0 - нет (формировать резервирование только при наличии всего товара) = 1 - да (разрешается частичное резервирование при недостаче товара) Возвращаемые параметры: DGVID - признак успешного резервирования <> 0 - резервирование завершилось успешно = 0 - накладная не сформирована'; DESCRIBE PROCEDURE DGVKTUGDDKTU_GENACCNREC 'Формирование проводок по услуге (Акты - кредиторы)'; DESCRIBE PROCEDURE DGVKTUGDDKTU_GENACCNRECSALE 'Формирование проводок по услуге (Акты - кредиторы) по первому/последнему событию и сумме оплаты'; DESCRIBE PROCEDURE DGVKTU_CRECALC 'Перерасчет валютного акта (кредиторы) по курсу предоплаты'; DESCRIBE PROCEDURE DGVKTU_DELACCNREC 'Удаление проводок по актам на прием услуг / работ (Кредиторы)'; DESCRIBE PROCEDURE DGVKTU_GENACCNREC 'Формирование проводок по актам на прием услуг/работ (Кредиторы)'; DESCRIBE PROCEDURE DGVKTU_GENACCNRECKRB 'Формирование проводок по актам на услуги (импорт) - курсовые разницы (бухгалтерские)'; DESCRIBE PROCEDURE DGVKTU_GENACCNRECSALE 'Формирование проводок по актам на прием услуг / работ (Кредиторы) (по первому / последнему событию).'; DESCRIBE PROCEDURE DGVKTU_KRBSELECT 'Список дат для пересчета акта услуг (импорт) для расчета курсовых разниц ID - ID документа (DGVKTU) KDATE - дата для пересчета курсовой разницы SSUMMA - задолженность по оплате / недоплата (для курс. разницы)'; DESCRIBE PROCEDURE DGVKT_CRECALC 'Расчет накладной на Оприходование Импорта (пересчет себестоимости товара)'; DESCRIBE PROCEDURE DGVKT_CRECALC1 'Расчет накладной на Оприходование Импорта (пересчет себестоимости товара) - новая версия Выходные параметры: (в грн.) FktPrice - фактурная стоимость (цена поставщика) TrnPrice - услуги до границы InpPrice - цена поставщика пересчитанная по курсу оплаты (при предоплате) TamPrice - таможенная стоимость (база для расчета таможенных платежей) ProPrice - таможенные процедуры TsbPrice - таможенный сбор PosPrice - таможенная пошлина BakPrice - база акциза AkcPrice - акциз BndPrice - база расчета НДС по товару NdsPrice - НДС по товару UpgPrice - услуги после границы (без НДС) UngPrice - услуги после границы (НДС) VhnPrice - себестоимость товара (без НДС) VhdPrice - себестоимость товара (НДС) VhpPrice - себестоимость товара (с НДС)'; DESCRIBE PROCEDURE DGVKT_CRECALC2 'Расчет накладной на Оприходование Импорта (пересчет себестоимости товара) старый вариант'; DESCRIBE PROCEDURE DGVKT_DELACCNREC 'Удаление проводок по приходной накладной.'; DESCRIBE PROCEDURE DGVKT_GENACCN 'Процедура перегенерует все проводки по Счетам Кредиторов (всем приходным накладным всех типов) !!! опасная штука'; DESCRIBE PROCEDURE DGVKT_GENACCNREC 'Формирование проводок по приходным накладным'; DESCRIBE PROCEDURE DGVKT_GENACCNRECINP 'Формирование проводок по прих. накладным в разрезе поставщиков (возврат товара заказчиком)'; DESCRIBE PROCEDURE DGVKT_GENACCNRECKRB 'Формирование проводок по приходным накладным (импорт) - курсовые разницы (бухгалтерские)'; DESCRIBE PROCEDURE DGVKT_GENACCNRECSALE 'Формирование проводок по приходной накладной (по отлате)'; DESCRIBE PROCEDURE DGVKT_GENACCNRECU 'Формирование проводок по услугам, включаемых в себестоимость оприходованного товара'; DESCRIBE PROCEDURE DGVKT_KRBSELECT 'Список дат для пересчета накладной по оприх. импорту для расчета курсовых разниц ID - ID накладной (DGVKT) KDATE - дата для пересчета курсовой разницы SSUMMA - задолженность по оплате / недоплата (для курс. разницы)'; DESCRIBE PROCEDURE DGVKT_MAKEDGVDTWORK 'Формирование расходной накладной на списание материалов и комплектующих по приходной накладной на выпуск изделия (Заказы). Параметры: ID - приходная накладная на выпуск изделия (DGVKT).'; DESCRIBE PROCEDURE DGVKT_OUTDT 'Выбор расходных позиций товара по приходной накладной'; DESCRIBE PROCEDURE DGVKT_RETURN 'Удалить приходную накладную'; DESCRIBE PROCEDURE DGVKT_SALE 'Оплпта приходной накладной (импорт)'; DESCRIBE PROCEDURE DGVKT_STORID 'Служебная процедура'; DESCRIBE PROCEDURE DGVKT_WZRECALC 'Пересчет прих. накл. на оприходовоние изделий по заказу'; DESCRIBE PROCEDURE DGVWKG_CALCTPRICE1 'Временная пересчетная процедура'; DESCRIBE PROCEDURE DGVWKG_INP_OUT_DATE 'Служебная процедура корректировка в производственных накладных даты списания в дату оприходования готовой продукции'; DESCRIBE PROCEDURE DGVWKG_MAKEDGVKT 'Формирование приходной накладной на оприходование готовой продукции'; DESCRIBE PROCEDURE DGVWK_MAKEDGVKT 'Формирование приходной накладной на укомплектацию изделия'; DESCRIBE PROCEDURE DGV_SUM 'Служебная процедура - проверка соответствия суммы в накладной сумме по позициям товара'; DESCRIBE PROCEDURE DKBILL_MAKEDGV 'Формирование складских накладных (дом кофе)'; DESCRIBE PROCEDURE DOCMDOCDOCUMENT_GETPARENTS 'Возвращает маршрут к заданному узлу дерева документов (начиная от корня к искомому узлу)'; DESCRIBE PROCEDURE DOCMTASKHB_COPY 'Создать копию задачи из Справочника типовых задач (Документооборот) Параметры: SRCID - исходная задача (образец) в Справочнике (табл. DOCMTASKHB) GrpID - группа для новой задачи (табл. DOCMGROUPS) TskID - главная задача для новой задачи (табл. DOCMTASK) IUserID - инициатор (ссылка на USERLIST) ID - ID новой задачи'; DESCRIBE PROCEDURE DOCMTASK_COPY 'Создать копию задачи (Документооборот) Параметры: SRCID - исходная задача (образец) GrpID - группа для новой задачи TskID - главная задача для новой задачи ID - ID новой задачи'; DESCRIBE PROCEDURE DOCMTASK_GENMSG 'Генерация сообщения по событию в задаче. TASKID - ID задачи SUSERID - отправитель сообщения (USERLIST) RUSERID - получатель сообщения (USERLIST) TYP задает событие: 0 - постановка задачи (ее создание) 1 - изменена тема 2 - срок начала выполнения задачи 3 - срок завершения задачи (задача просрочена) 4 - исполнитель завершил задачу 5 - Изменено ответственное лицо задачи 6 - Изменён исполнитель задачи 7 - Изменён приоритет задачи 8 - Изменено планируемое время задачи 9 - Исполнитель принял задачу к рассмотрению'; DESCRIBE PROCEDURE DOCMTASK_GETPARENTS 'Возвращает путь по дереву задач от ветви в корню. Входные параметры: ID - код объекта OTYPE - тип объекта (1 - задача, 2 - группа) Выходные параметры: CID - ID объекта TID - ID родителя OBJTYPE - тип родителя (1 - задача, 2 - группа)'; DESCRIBE PROCEDURE DOCMTASK_ROOT 'Для подзадачи возвращается ID корневой задачи'; DESCRIBE PROCEDURE DOCMTASK_UPDATE_BY_CHILDREN 'Обновляет информацию задачи по ее дочерним задачам'; DESCRIBE PROCEDURE DOCMTASK_WORKCALC 'Расчет отработанного времени по исполнителю в задаче '; DESCRIBE PROCEDURE FRREPORTTREEUSER_GRANT 'FrReportTree - разрешение доступа пользователю (по иерархии)'; DESCRIBE PROCEDURE FRREPORTTREEUSER_REVOKE 'FrReportTree - запрещение доступа пользователю (по иерархии)'; DESCRIBE PROCEDURE F_ADDMONTH 'Увеличивает дату на указанное количество месяцев'; DESCRIBE PROCEDURE F_COUNT_DATASET 'Возвращает указанное количество записей Входные параметры: N - количество записей. Выходные параметры: I - номер записи (начиная с 0).'; DESCRIBE PROCEDURE F_COUNT_MONTHS 'Разница между датами в месяцах'; DESCRIBE PROCEDURE F_DAY 'Возвращает день из указанной даты'; DESCRIBE PROCEDURE F_DAYOFWEEK 'Возвращает день недели по указанной дате: 0 - понедельник 6 - воскресенье'; DESCRIBE PROCEDURE F_DAYOFYEAR 'Возвращает номер дня в году от указанной даты'; DESCRIBE PROCEDURE F_DAYSOFMONTH 'Возвращает количество дней в указанном месяце'; DESCRIBE PROCEDURE F_DAYS_DATASET 'Возвращает дни за указанный период отдельными записями. Select- процедура. Для формирования отчетов с разбивкой по дням.'; DESCRIBE PROCEDURE F_DECODEDATE 'Разложение даты на день, месяц, год'; DESCRIBE PROCEDURE F_ELAPSEDDAYS 'Разница в днях между двумя датами'; DESCRIBE PROCEDURE F_ENCODEDATE 'Формирование даты из дня, месяца, года'; DESCRIBE PROCEDURE F_MODULUS 'Служебная процедура для процедур манипуляции датами'; DESCRIBE PROCEDURE F_MONTH 'Возвращает месяц из исходной даты'; DESCRIBE PROCEDURE F_MONTHFIRSTDAY 'Возвращает дату первого дня месяца от исходной даты'; DESCRIBE PROCEDURE F_MONTHFIRSTWORKDAY 'Возвращает дату первого дня месяца от исходной даты (первый рабочий день месяца - для з/п)'; DESCRIBE PROCEDURE F_MONTHLASTDAY 'Возвращает дату последнего дня месяца от исходной даты'; DESCRIBE PROCEDURE F_MONTHLASTWORKDAY 'Возвращает дату последнего дня месяца от исходной даты (последний рабочий день - для з/п)'; DESCRIBE PROCEDURE F_MONTHS_DATASET 'Возвращает помесячную разбивку от указанного периода.'; DESCRIBE PROCEDURE F_PERIODS_DATASET 'Возвращает набор периодов заданной продолжительности за указанный промежуток времени'; DESCRIBE PROCEDURE F_QUARTER_BEG 'От указанной даты возвращает дату начала квартала'; DESCRIBE PROCEDURE F_QUARTER_DATASET 'Поквартальная разбивка указанного периода'; DESCRIBE PROCEDURE F_QUARTER_END 'От указанной даты возвращает дату окончания квартала'; DESCRIBE PROCEDURE F_TIME 'Из указанной даты извлекается время (часы, минуты)'; DESCRIBE PROCEDURE F_WEEK_DATASET 'Понедельная разбивка указанного периода'; DESCRIBE PROCEDURE F_YEAR 'Возвращает текущий год из даты'; DESCRIBE PROCEDURE F_YEAR_BEG 'От указанной даты возвращает дату начала квартала'; DESCRIBE PROCEDURE F_YEAR_END 'От указанной даты возвращает дату окончания квартала'; DESCRIBE PROCEDURE GDDDTU_PRICE 'Расчет цены услуги в актах (дебиторы) с учетом налогов'; DESCRIBE PROCEDURE GDDDT_MOVEGOODS 'Форма учета движения товара (по указанному складу). Входные параметры: BDATE - дата начала периода EDATE - дата окончания периода STOR - склад (поле ID таблицы STORLIST) Выходные параметры: KID INTEGER позиция товара в приходе (поле ID таблицы GDDKT) GID INTEGER наименование товара (поле ID таблицы GOODS) PRICE DOUBLE PRECISION входная цена с НДС NDS DOUBLE PRECISION НДС QBEG DOUBLE PRECISION - остаток на начало периода QINP DOUBLE PRECISION - приход за период QOUT DOUBLE PRECISION - расход за период QEND DOUBLE PRECISION - остаток на конец периода'; DESCRIBE PROCEDURE GDDDT_MOVEGOODSALL 'Форма учета движения товара (по всем складам)'; DESCRIBE PROCEDURE GDDDT_MOVEGOODSGRP 'Форма учета движения товара (по указанному складу и группе товара). Выдает весь ассортимент товара по указанной группе. Результат требует группировки с суммированием. Входные параметры: BDATE - дата начала периода EDATE - дата окончания периода STOR - склад (поле ID таблицы STORLIST) GRPID - группа товара Выходные параметры: KID INTEGER позиция товара в приходе (поле ID таблицы GDDKT) GID INTEGER наименование товара (поле ID таблицы GOODS) PRICE DOUBLE PRECISION входная цена с НДС NDS DOUBLE PRECISION НДС QBEG DOUBLE PRECISION - остаток на начало периода QINP DOUBLE PRECISION - приход за период QOUT DOUBLE PRECISION - расход за период QEND DOUBLE PRECISION - остаток на конец периода'; DESCRIBE PROCEDURE GDDDT_MOVEGOODSONE 'Форма учета движения товара (по указанному складу и товару). Входные параметры: BDATE - дата начала периода EDATE - дата окончания периода STOR - склад (поле ID таблицы STORLIST) GDSID - товар Выходные параметры: KID INTEGER позиция товара в приходе (поле ID таблицы GDDKT) GID INTEGER наименование товара (поле ID таблицы GOODS) PRICE DOUBLE PRECISION входная цена с НДС NDS DOUBLE PRECISION НДС QBEG DOUBLE PRECISION - остаток на начало периода QINP DOUBLE PRECISION - приход за период QOUT DOUBLE PRECISION - расход за период QEND DOUBLE PRECISION - остаток на конец периода'; DESCRIBE PROCEDURE GDDDT_MOVEGOODS_GRP 'Форма учета движения товара (по указанному складу). Входные параметры: BDATE - дата начала периода EDATE - дата окончания периода STOR - склад (поле ID таблицы STORLIST) Выходные параметры: KID INTEGER позиция товара в приходе (поле ID таблицы GDDKT) GID INTEGER наименование товара (поле ID таблицы GOODS) PRICE DOUBLE PRECISION входная цена с НДС NDS DOUBLE PRECISION НДС QBEG DOUBLE PRECISION - остаток на начало периода QINP DOUBLE PRECISION - приход за период QOUT DOUBLE PRECISION - расход за период QEND DOUBLE PRECISION - остаток на конец периода'; DESCRIBE PROCEDURE GDDDT_MOVEGOODS_SGRP 'Форма учета движения товара (по всем складам указазанной группы складов)'; DESCRIBE PROCEDURE GDDDT_MOVEQENDORGN 'Остаток товара по указанному поставщику ORGNID - Предприятие EDATE - дата расчета остатка (на конец дня) IORGNID - ID поставщика (ORGN) ALLGOODS - =0 - только по активным товарам, =1 - по всему справочнику товаров =2 - по ассортименту поставщика QEND - остаток товара (количество)'; DESCRIBE PROCEDURE GDDDT_SRCKTID 'Для товара в расходе - возврат первоначального прихода (откат по внутренним передачам)'; DESCRIBE PROCEDURE GDDDT_WORKMOVEGOODS 'Форма учета движения Изделий (выпущенных в производстве)'; DESCRIBE PROCEDURE GDDKT_DECRNORM_QNT 'Список товара в наличии с партиями по нормам убыли. Остатки для списания в пределах норм убыли. STOR - ID склада aDate - дата списания (по умолчанию - текущая) ----- ID - ID позиции товара в приходе (gddkt) DNID - ID нормы убыли Norm - норма убыли (%) Quant - остаток по позиции Norm_Qnt - остаток по норме убыли (% от исходного кол-ва)'; DESCRIBE PROCEDURE GDDKT_DELTOSRC 'Удалить позицию товара в приходе до первоначального поступления'; DESCRIBE PROCEDURE GDDKT_DSTDTID 'Для позиции товара в приходе - возврат конечного товара в расходе (проход по внутренним передачам до конца)'; DESCRIBE PROCEDURE GDDKT_DSTSELECT 'Построение дерева расхода товара'; DESCRIBE PROCEDURE GDDKT_SRCKTID 'Поиск исходного вхождения товара на склад. Проходит по внутренним передачам, переоценкам и т.п. до исходного вхождения товара - оприходование товара / импорта, оприходование изделий.'; DESCRIBE PROCEDURE GDSPARAM_UPDATE 'Обновление доп. параметра по товару.'; DESCRIBE PROCEDURE GODSLOST 'Служебная процедура - поиск несоответствий в остатках на складе'; DESCRIBE PROCEDURE GOODSGRP_FREE 'Список групп (товар в наличии) STOR - склад PARENTID - родительская группа'; DESCRIBE PROCEDURE GOODSGRP_GETCHILDREN 'Группы товара, входящие в указанную группу'; DESCRIBE PROCEDURE GOODSGRP_GETPARENTS 'Выдает список родительских групп до корня (группы товаров)'; DESCRIBE PROCEDURE GOODSGRP_SELECTWORKGRP 'Выборка всех групп для изделий (группы товара в которых встречаются изделия)'; DESCRIBE PROCEDURE GOODSGRP_SELECTWORKGRPPARENT 'Выборка групп одного уровня для изделий ParentID is Null - корневые группы ParentID <> Null - подгруппы'; DESCRIBE PROCEDURE GOODS_LASTINPDATE 'Последняя дата поставки'; DESCRIBE PROCEDURE GOODS_LASTINPNAMEID 'Последний поставщик товара OrgnID - предприятие (по всем складам) StorID - склад (если не указан = Null - по всем) GodsID - ID товара OrgnID - ID поставщика (ORGN)'; DESCRIBE PROCEDURE GOODS_LASTINPPRICE 'Последняя цена на товар (поставка) OrgnID - предприятие (если по всем складам) StorID - склад (если Null - по всем складам) GodsID - ID товара (GOODS) KID - ID позиции (GDDKT) PRICE - входная цена (с НДС) NDS - НДС'; DESCRIBE PROCEDURE GOODS_REPLACEANDREMOVE 'Удалить позицию товара с дублирующим наименованием KEEPID - ID товара, который остается DELID - ID удаляемой позиции Все ссылки на DELID переадресовываются на KEEPID'; DESCRIBE PROCEDURE INVOPISDATA_GDDDT 'Формирование позиций товара для расходной накладной по инвентарной описи (INVOPISHEDER, INVOPISDATA). OPISID - ID описи DGVDTID - ID расходной накладной HASMAIN - формировать по присутствию изделий в заказе (под материал из описи)'; DESCRIBE PROCEDURE INVOPISDATA_RECALC 'Пересчет Инвентарной Описи (INVOPISHEDER, INVOPISDATA)'; DESCRIBE PROCEDURE KASSAVDATA_GENACCNREC 'Формирование проводок по авансовым отчетам (по позициям)'; DESCRIBE PROCEDURE KASSAVLIST_DELACCNREC 'Удаление проводок по авансовому отчету'; DESCRIBE PROCEDURE KASSAVLIST_GENACCNREC 'Формирование проводок по авансовым отчетам'; DESCRIBE PROCEDURE KASSAVLIST_GENACCNRECSALE 'Формирование проводок по авансовым отчетам (по выданным/возвращенным суммам - курсовые разницы)'; DESCRIBE PROCEDURE KASSDATA_DELACCNREC 'Удаление проводок по кассовому ордеру'; DESCRIBE PROCEDURE KASSDATA_GENACCNREC 'Формирование проводок по кассовому ордеру'; DESCRIBE PROCEDURE KASSDATA_GENSALEDT 'Формирование оплаты (дебиторы) по кассовому ордеру (включать в расчеты с контрагентами)'; DESCRIBE PROCEDURE KASSDATA_GENSALEKT 'Формирование оплаты (кредиторы) по кассовому ордеру (включать в расчеты с контрагентами)'; DESCRIBE PROCEDURE KASSDATA_MAKEAO 'Создание авансового отчета по кассовому ордеру'; DESCRIBE PROCEDURE KASSDATA_RENBR 'Перенумерация кассовых ордеров по кассе ID - касса (KASSLIST)'; DESCRIBE PROCEDURE KASSDAYS_NEWDAY 'Проверяет и при необходимости добавляет указанный день в кассу. Отрабатывает перед вставкой нового кассового ордера. Параметры: DAT - дата (день) KASSID - касса (поле ID таблицы KASSLIST)'; DESCRIBE PROCEDURE MAINAMMST_DELACCNREC 'Удаление проводок по начислению амортизации ОС (с) Barry'; DESCRIBE PROCEDURE MAINAMMST_GENACCNREC 'Формирование проводок по начислению амортизации ОС'; DESCRIBE PROCEDURE MAINAM_NLPRICE_UPDATE 'Обновление балансовой стоимости по результам налогового учета (новый налоговый кодекс)'; DESCRIBE PROCEDURE MAINAM_NL_UPDATE 'Обновление расчета амортизации (новый налоговый кодекс)'; DESCRIBE PROCEDURE MAINCHNG_DELACCNREC 'Удаление проводок по изменению стоимости ОС'; DESCRIBE PROCEDURE MAINCHNG_GENACCNREC 'Формирование проводок по изменению стоимости ОС'; DESCRIBE PROCEDURE MAINMEAN_AMMOVE 'Движение основных средств за период'; DESCRIBE PROCEDURE MAINMEAN_BYPERIOD 'Список основных средств на указанный период'; DESCRIBE PROCEDURE MAINMEAN_CALCAM 'Расчет Амортизации'; DESCRIBE PROCEDURE MAINMEAN_CALCAM00 'Обновление для полностью изношенных ОС'; DESCRIBE PROCEDURE MAINMEAN_CALCAM1 'Расчет износа'; DESCRIBE PROCEDURE MAINMEAN_CLCAM0 'Расчет Амортизации/Износа линейным методом'; DESCRIBE PROCEDURE MAINMEAN_CLCAM1 'Расчет Амортизации/Износа методом уменьшающихся остатков'; DESCRIBE PROCEDURE MAINMEAN_CLCAM2 'Расчет Амортизации/Износа линейным методом'; DESCRIBE PROCEDURE MAINMEAN_DELACCNREC 'Удаление проводок по основному средству'; DESCRIBE PROCEDURE MAINMEAN_GENACCNREC 'Формирование проводок по основному средству (ввод в эксплуатацию / списание)'; DESCRIBE PROCEDURE MAINMEAN_GRPONDATE 'Для указанного в ID Основного Средства возвращает Группу Амортизации (GrpTyp=0) или Группу Износа (GrpTyp=1) на указанную дату.'; DESCRIBE PROCEDURE MAINMEAN_MOVE 'Форма учета движения ОС зв период Входные параметры: ORGNID - ID предприятия BDATE - начало отчетного периода EDATE - конец отчетного периода Выходные параметры: ID - Уникальный код записи ОС QNTB - остаток на начало периода QNTI - приход за период QNTO - расход за период QNTE - остаток на конец периода (все количества вазвращают значения 0 или 1, так как применяется индивидуальный учет ОС)'; DESCRIBE PROCEDURE MAINMEAN_MOVE_DETAIL 'Форма учета движения ОС зв период Входные параметры: ORGNID - ID предприятия BDATE - начало отчетного периода EDATE - конец отчетного периода Выходные параметры: ID - Уникальный код записи ОС QNTB - остаток на начало периода QNTI - приход за период QNTO - расход за период QNTE - остаток на конец периода (все количества вазвращают значения 0 или 1, так как применяется индивидуальный учет ОС)'; DESCRIBE PROCEDURE MAINMEAN_PODRONDATE 'Для указанного в ID Основного Средства возвращает Подразделение на указанную дату (на начало дня)'; DESCRIBE PROCEDURE MAINPRICE_CALCDELPART 'Расчет суммы амортизации / износа ликвидируемой части ID - ID записи (изменение стоимости - MAINPRICE) Summ0 - сумма амортизации ликвидируемой части Summ1 - сумма износа ликвидируемой части'; DESCRIBE PROCEDURE MBPDGV_DELACCNREC 'Удаление проводок по накладной на МБП'; DESCRIBE PROCEDURE MBPDGV_GENACCNREC 'Формирование проводок по накладной на МБП (списание / внутр. передача)'; DESCRIBE PROCEDURE MBPMEAN_MOVEGOODS 'Форма учета движения МБП'; DESCRIBE PROCEDURE NBR_GEN_NBR 'Генератор номеров документов'; DESCRIBE PROCEDURE ORGNINFO_NEWID '!!! Удалить'; DESCRIBE PROCEDURE ORGN_REPLACEANDREMOVE 'Удалить организации с дублирующим кодом ОКПО KEEPID - ID организации, которая остается DELID - ID удаляемой позиции Все ссылки на DELID переадресовываются на KEEPID'; DESCRIBE PROCEDURE PRICELIST_ORGN_PRICE 'Выбор цены по привязанному к заказчику прайс-листу'; DESCRIBE PROCEDURE PRSNMOVE_UPDATEPRSN 'Изменения в лицевом счете при назначениях / перемещениях'; DESCRIBE PROCEDURE SALEDTDATA_GENACCNREC 'Формирование проводок по оплате (дебиторы)'; DESCRIBE PROCEDURE SALEKTDATA_GENACCNREC 'Формирование проводок по оплате (кредиторы)'; DESCRIBE PROCEDURE SALEKT_DELACCNREC 'Удаление проводок по платежному документу (кредиторы)'; DESCRIBE PROCEDURE SALEKT_GENACCNREC 'Формирование проводок по оплате (кредиторы) (см. также SALEKT_GENACCNRECSALE)'; DESCRIBE PROCEDURE SALEKT_GENACCNRECSALE 'Формирование проводок по оплатам (кредиторы) - только по первому/последнему событию ID - платежный документ OPID - проводка в настройке операций (STORACCN)'; DESCRIBE PROCEDURE SALE_DELACCNREC 'Удаление проводок по платежному документу (дебиторы)'; DESCRIBE PROCEDURE SALE_GENACCNREC 'Формирование проводок по оплате (дебиторы)'; DESCRIBE PROCEDURE SALE_GENACCNRECSALE 'Формирование проводок по платежам (Дебиторы) - по первому/последнему событию'; DESCRIBE PROCEDURE SP_BDG_APPLY_CALC_PRICE 'Присвоить скалькулированные цены произведенной и реализованной продукции.'; DESCRIBE PROCEDURE SP_BDG_CHECK_PAPER_DATA_STATE 'Проверка на возможность редактирования данных (если нельзя то Exception: BDG_CLOSED_DATA)'; DESCRIBE PROCEDURE SP_BDG_CLEAR_DISTR 'Удаление информации о распределении затрат по ЦФУ'; DESCRIBE PROCEDURE SP_BDG_DO_CALC 'Калькуляция управленческой себестоимости'; DESCRIBE PROCEDURE SP_BDG_DO_CALC_ORDER_OPER 'Расчет и сохранение значения по операциям шага калькуляции'; DESCRIBE PROCEDURE SP_BDG_DO_CALC_ORDER_STEP 'Расчет шага калькуляции управленческой себестоимости'; DESCRIBE PROCEDURE SP_BDG_DO_DISTR 'Разнесение итогов операционных статей по ЦФУ'; DESCRIBE PROCEDURE SP_BDG_DO_DISTR_ITEM 'Выполнение разнесения одной операционной статьи по ЦФУ'; DESCRIBE PROCEDURE SP_BDG_FACT_REG_SALE 'Регистрация накладных на реализацию в упр. учете'; DESCRIBE PROCEDURE SP_BDG_FACT_REG_SALE_PRM 'Регистрация накладных на реализацию в упр. учете (по параметрам)'; DESCRIBE PROCEDURE SP_BDG_FACT_REG_SALE_RET 'Регистрация накладных возврат в упр. учете'; DESCRIBE PROCEDURE SP_BDG_FACT_REG_WORK 'Регистрация накладных на приходование продукции из производства в упр. учете'; DESCRIBE PROCEDURE SP_BDG_ITEM_CHILDREN 'Список дочерних записей статьи'; DESCRIBE PROCEDURE SP_BDG_ITEM_PARENTS 'Выбор родительских записей статьи'; DESCRIBE PROCEDURE SP_BDG_PERIOD_GETCHILDREN 'Выбор дочерних записей периода'; DESCRIBE PROCEDURE SP_BDG_PERIOD_PAPER_COPY 'Копирование управленческих документов'; DESCRIBE PROCEDURE SP_BDG_SET_DATA_STATE 'Установка статуса периода (открыт/закрыт/принят)'; DESCRIBE PROCEDURE SP_CRDS_CARD 'Складская карточка'; DESCRIBE PROCEDURE SP_CRDS_DGVDT_COPY 'Копирование расходной накладной'; DESCRIBE PROCEDURE SP_CRDS_DGVDT_TO_DGVKT 'Перенос расходной накладной в приходную'; DESCRIBE PROCEDURE SP_CRDS_DGVKT_COPY 'Копирование приходной накладной'; DESCRIBE PROCEDURE SP_CRDS_DGVKT_TO_DGVDT 'Перенос приходной накладной в расходную'; DESCRIBE PROCEDURE SP_CRDS_MATCHING_DGVDT 'Сверка по двум расходным накладным'; DESCRIBE PROCEDURE SP_CRDS_MATCHING_DGVKT 'Сверка по двум приходным накладным'; DESCRIBE PROCEDURE SP_CRDS_MATCHING_DT 'O_TYPE_PRG: 0 - карточки 1 - склад O_TYPE_DIFF: 1 - различие в датах 2 - различие в товаре 3 - нет соотв-го номера'; DESCRIBE PROCEDURE SP_CRDS_MATCHING_GOODS_DT 'O_TYPE_PRG: 0 - карточки 1 - склад O_TYPE_DIFF: 0 - разница в количестве 1 - нет соответствующего товара'; DESCRIBE PROCEDURE SP_CRDS_MATCHING_GOODS_KT 'O_TYPE_PRG: 0 - карточки 1 - склад O_TYPE_DIFF: 0 - разница в количестве 1 - нет соответствующего товара'; DESCRIBE PROCEDURE SP_CRDS_MATCHING_KT 'O_TYPE_PRG: 0 - карточки 1 - склад O_TYPE_DIFF: 1 - различие в датах 2 - различие в товаре 3 - нет соотв-го номера'; DESCRIBE PROCEDURE SP_CRDS_MOVEGOODS 'Карточки: Складская ведомость'; DESCRIBE PROCEDURE SP_CRDS_MOVEGOODS_GOODS 'Карточки: складская ведомость по одной позиции'; DESCRIBE PROCEDURE SP_GET_USER_RIGHT 'Возвращает значение конкретного права пользователя'; DESCRIBE PROCEDURE SP_ZPLT_DAYTYPE 'Типы рабочих дней в ведомости сотрудников'; DESCRIBE PROCEDURE STORZAKAZDT_BLNS 'Баланс взаиморасчетов по складским заказам Входные параметры: ORGNID - предприятие BDATE - начало отчетного периода EDATE - конец отчетного периода Выходные параметры: BS - начальное сальдо ES - конечное сальдо DT - отгрузка товара (за период) KT - оплата за товар по заказу (за период)'; DESCRIBE PROCEDURE STORZAKAZDT_CHECKSTATE 'Контроль статуса складского заказа'; DESCRIBE PROCEDURE STORZAKAZDT_FORCECLOSE 'Принудительное закрытие скл. заказа'; DESCRIBE PROCEDURE STORZAKAZDT_GDDDT 'Формирование списка товара для расх. накладной по остатку из заказа (резервирование товара) Расх. накладная должна быть пустой (только заголовок DGVDT)'; DESCRIBE PROCEDURE STORZAKAZDT_GDDDT_RETNKT 'Формирование расходных накладных - Возврат поставщику по остатку из заказа (резервирование товара)'; DESCRIBE PROCEDURE STORZAKAZDT_SLSUMMA 'Заказы (склад): расчет суммы - к оплате.'; DESCRIBE PROCEDURE STORZAKAZDT_WORKMAINGDS_SEL 'Анализ - Иизделия (по материалам). Выборка материалов для производственного заказа по материалам из складского заказа. Анализ работает с учетом эквивалентов. Входные параметры: SZID - ID складского заказа. STOR - Склад-источник (наличие материалов для списания). ADATE - Дата списания материала. Материал в наличии рассчитывается по приходу до указанной даты (включительно). Выходные параметры: QntNeed - необходимое количество материала, кол-во (остаток) в складском заказе QntHas - наличие на складе GodsID - ID наименования материала (GOODS) SZGdsID - ID позиции товара в складском заказе (STORZDTGDS) LinkID - ID материала (справочник Изделия), WORKLINK EqID - ID эквивалента (справочник Изделия), WORKHBLN MainID - ID изделия (WORKMAIN) QntNorm - Норма материала (эквивалента) на единицу изделия'; DESCRIBE PROCEDURE STORZDTGDS_SELECT 'Выборка товара в наличии по складским заказам'; DESCRIBE PROCEDURE STOR_SQNT 'Анализ страховых запасов'; DESCRIBE PROCEDURE SYSCONST_GETUSERBLOB 'Вернуть "системную" константу (типа Blob)'; DESCRIBE PROCEDURE SYSCONST_GETUSERVALUE 'Вернуть значение "системной" константы'; DESCRIBE PROCEDURE VKSL_DELACCNREC 'Удаление проводок по векселю'; DESCRIBE PROCEDURE VKSL_GENACCNREC 'Формирование проводок по векселю'; DESCRIBE PROCEDURE VKSL_GENACCNRECSALEDT 'Формирование проводок по векселю - оплата (продажа)'; DESCRIBE PROCEDURE VKSL_GENACCNRECSALEKT 'Формирование проводок по векселю - оплата (покупка)'; DESCRIBE PROCEDURE WORKCALCMST_COPY 'Копирование накладных расходов'; DESCRIBE PROCEDURE WORKGOODS_GETPARENTS 'Условные материалы: Маршрут прохода к корню от любого узла дерева.'; DESCRIBE PROCEDURE WORKLINK_PRICE 'Процедура извлекает количество комплектующих в изделии, с учетом всех комплектующих в ПФ(комплектующие в ПФ расчитываются как Кол-во ПФ* Кол-во комплектующего)в ПФ'; DESCRIBE PROCEDURE WORKMAINGDS_CHECK 'Проверка на уникальность материала (в изделиях) с признаком "Формировать произв. заказ изделия (по материалам)". Входные параметры: GodsID: ID наименования проверяемого материала в справочнике Товаров (GOODS) CurLinkID: ID материала в изделии (WORKLINK), при проверке эквивалента =0 CurEqID: ID эквивалента для материала в изделии (WORKHBLN), при проверке материала =0 Except: Признак исключения (выдачи ошибки) при неудачном результате =0 - ошибка не выдается =1 - формируется исключение Выходные параметры: AlreadyUse: = 0 - такого материала нет (все нормально) = 1 - материал уже используется (ошибка) MainID: ID изделия LinkID: ID материала в изделии, при наличии этого материала в других изделиях EqID: ID эквивалента, при наличии этого материала в других изделиях LinkID1: ID материала в изделии, если в текущем изделии уже присутствует какой-либо материал с проверяемым признаком EqID1: ID эквивалента, если в текущем изделии уже присутствует какой-либо материал с проверяемым признаком'; DESCRIBE PROCEDURE WORKMAIN_COPY 'Копирование состава изделия (материалы и комплектующие) M1ID - исходное изделие (образец) M2ID - целевое изделие'; DESCRIBE PROCEDURE WORKMAIN_GETPARENTS 'Возвращает путь к корню дерева от указанной ветки для Справочника Изделий. Входные параметры: ID - код объекта OTYPE - вид объекта (1 - материалы/компл., 2 - изделие, 3 - группа товара). Выходные параметры: OID - ID объекта PID - parernt ID OBJTYPE - parent-объект (см. OTYPE).'; DESCRIBE PROCEDURE WORKMODELGDS_CALCQUANT 'Расчет количества материала в модели по размерам'; DESCRIBE PROCEDURE WORKMODEL_DELETE 'Удалить модель ID - ID модели PARENT - признак удаления входящих деталей = 0 - удалить только модель = 1 - удалить все входящие детали (которые не входят в другие модели)'; DESCRIBE PROCEDURE WORKMODEL_GETPARENTS 'Модели изделий: маршрут от тек. модели до корня (вверх по дереву)'; DESCRIBE PROCEDURE WORKMODEL_RECALCNW 'Пересчет веса по изделию'; DESCRIBE PROCEDURE WORKMODEL_SELECTMATERIAL 'Выбор списка условных материалов по модели (проход по дереву модели до исходных материалов) ID - модель MODELGDSID - материал в модели (WORKMODELGDS) DETAILQUANT - количество деталей'; DESCRIBE PROCEDURE WORKMODEL_USEDPARENTS 'По детали выдает список всех моделей, в которых она используется. (вверх по иерархии)'; DESCRIBE PROCEDURE WORKNK_CALC 'Распределение накладных расходов - производство (пропорционально себестоимости материалов и комплектующих).'; DESCRIBE PROCEDURE WORKNK_CALC1 'Распределение накладных расходов - производство (пропорционально себестоимости материалов и комплектующих) (с учетом исключения заказов из накл. расходов). KPrice - исходная цена материалов / комплектующих (цена поставщика, без накладных расходов) Price - цена готовой продукции (с учетом накладных расходов)'; DESCRIBE PROCEDURE WORKNK_CALC1_KNK 'Распределение накладных расходов - производство по коэффициентам накладных расходов с учетом исключения заказов из распределения накладных расходов'; DESCRIBE PROCEDURE WORKNK_CALC1_KNK_PHASE2 'Распределение накладных расходов - производство по коэффициентам накладных расходов Фаза2 - Распределение сумм накладных расходов по изделиям 25.11.2015'; DESCRIBE PROCEDURE WORKNK_CALC2 'Распределение накладных расходов пропорционально себестоимости материалов и комплектующих (упрощенный метод - в разработке)'; DESCRIBE PROCEDURE WORKNK_CALC_KNK 'Распределение накладных расходов - производство (по коэффициентам накладных расходов).'; DESCRIBE PROCEDURE WORKNK_CALC_NEW 'Распределение накладных расходов - производство (пропорционально себестоимости материалов и комплектующих).'; DESCRIBE PROCEDURE WORKREQUESTADDKT 'Автоматическое формирование накладных на оприходование продукции по производственным заявкам и инвентарной описи заказов'; DESCRIBE PROCEDURE WORKREQUESTADDWR 'Автоматическое формирование заявок на производство по Дате плановой готовности и номеру техпроцесса'; DESCRIBE PROCEDURE WORKZAKAZADDWR 'Автоматическое формирование производственных заказов по дате план. готовности и № тех процесса'; DESCRIBE PROCEDURE WORKZMAIN_DIFF 'Сравнение норм по изделию в заказе (! не реализовано) с изделием в справочнике ID - ID изделия в заказе (WORKZMST) RESULT - результат сравнения = 0 - одинаковы = 1 - разные'; DESCRIBE PROCEDURE WORKZMST_CALCSLV 'Пересчет норм материалов в изделиях произв. заказа с учетом масштабирования изделия по модели'; DESCRIBE PROCEDURE WORKZ_CHECK_CLOSE 'Проверка заказа перед закрытием'; DESCRIBE PROCEDURE WORKZ_DGVDT 'Формирование расходной накладной на списание материалов при выпуске изделий. Реализует списание без параметрических эквивалентов (последовательное). Вызывается после формирования приходной накладной с оприходованными изделиями. DGVKTID - накладная на оприходование изделий DGVDTID - накладная на списание материалов'; DESCRIBE PROCEDURE WORKZ_DGVDT_REFRESH_ALL 'Переоприходование материалов по всему заказу'; DESCRIBE PROCEDURE WORKZ_DGVDT_RESERV 'Резервирование материалов в производственный заказ. Входные параметры: ZID - ID заказа STOR - склад aDate - Дата резервирования / списания Pf_AllQnt - Признак: Передавать полное количество полуфабрикатов из текущего заказа Выходные параметры: ID - расходная накладная на укомплектацию заказа'; DESCRIBE PROCEDURE WORKZ_DGVDT_SELECT 'Формирование расходной накладной на списание материалов при выпуске изделий. Реализует списание с параметрическими эквивалентами (последовательное). Вызывается после формирования приходной накладной с оприходованными изделиями. Для существующей накладной на списание материалов - обновляется список материалов (заново формируется списание материалов). DGVKTID - накладная на оприходование изделий DGVDTID - накладная на списание материалов'; DESCRIBE PROCEDURE WORKZ_DGVDT_SELECT_P 'Формирование расходной накладной на списание материалов при выпуске изделий. Реализует списание с параметрическими эквивалентами (пропорциональное/параллельное). Вызывается после формирования приходной накладной с оприходованными изделиями. Для существующей накладной на списание материалов - обновляется список материалов (заново формируется списание материалов). DGVKTID - накладная на оприходование изделий DGVDTID - накладная на списание материалов'; DESCRIBE PROCEDURE WORKZ_DGVKTRECALC 'Расчет себестоимости готовой продукции в приходной накладной по заказу (стоимость материалов)'; DESCRIBE PROCEDURE WORKZ_DIFF 'Расхождение количества оприходованных изделий с количеством в списанных материалах -- ID заказа declare variable ZID integer; MSTID - ID изделия в заказе -- количество в приходе declare variable KQuant double precision; -- количество по списанным материалам declare variable MQuant double precision; -- ID оприходованного изделия (в приходной накладной) declare variable GddKtID integer;'; DESCRIBE PROCEDURE WORKZ_EQ_AVG 'Пропорциональное списание эквивалентов (Производство - выпуск изделий в заказах) ZID - ID заказа (WORKZAKAZ) ADATE - Дата оприходования изделия DGVDTID - ID расходной накладной на списание материалов (DGVDT) MQUANT - количество изделий SSOURCE - количество материала к списанию (по норме основного материала) MID - ID изделия (в справочнике изделий - WORKMAIN) ZSID - ID материала в заказе (WORKZSLV) ZKID - ID оприходованного изделия (GDDKT)'; DESCRIBE PROCEDURE WORKZ_EQ_DGVDT 'Формирование расходной накладной на списание материалов при выпуске изделий (эквиваленты). Вызывается после формирования приходной накладной с оприходованными изделиями.'; DESCRIBE PROCEDURE WORKZ_MAKEDETAILS 'Формирование заказов на полуфабрикаты по списку исходных заказов'; DESCRIBE PROCEDURE WORKZ_MAKEDOCRTN 'Заказы: формирование возвратного акта по результатам раскроя. ZID - ID заказа (пр-во) ADATE - дата списания USERNAME - имя пользователя'; DESCRIBE PROCEDURE WORKZ_NORMSELECT1 'Выборка норм и реального расхода материалов по изделиям в заказах (за период по указанному произв. цеху) Входные параметры: BDate - начало отчетного периода EDate - конец отчетного периода WStorID - произв. цех (STORLIST) Выходные параметры: ZmGdsID - ID товара (для изделия) - GOODS ZsGdsID - ID товара (для материала) - GOODS ZmQuant - Кол-во выпущенных изделий ZsQuant - Реальное кол-во материала на изделие - на все кол-во изделий ZsTrQuant - Реальное кол-во отходов материала на изделие - на все кол-во изделий ZsHbNorm - Справочная норма материала (по справочнику изделий) - на ед. изделия ZsZkNorm - Справочная норма материала (по заказу) - на ед. изделия'; DESCRIBE PROCEDURE WORKZ_TRASHADD 'Распределение отходов в заказе'; DESCRIBE PROCEDURE WORKZ_TRASHDEL 'Отменить распределение расходов по заказу'; DESCRIBE PROCEDURE ZPLTPLATMST_DELACCNREC 'Удаление проводок по ведомости выплаты зарплаты'; DESCRIBE PROCEDURE ZPLTPLATMST_GENACCNREC 'Формирование проводок по ведомости выплаты зарплаты'; DESCRIBE PROCEDURE ZPLT_CALCAVGEPZ 'Расчет среднесписочной численности работников в эквиваленте полной занятости'; DESCRIBE PROCEDURE ZPLT_CALCDECRMST 'ЗарПлата: Расчет Удержаний по Ведомости'; DESCRIBE PROCEDURE ZPLT_CALCDECRPRSN 'ЗарПлата: Расчет удержаний по Сотруднику в Ведомости'; DESCRIBE PROCEDURE ZPLT_CALCFOTMST 'ЗарПлата: Расчет начислений на Фонд Оплаты Труда ID - ведомость (ZPLTCALCMST)'; DESCRIBE PROCEDURE ZPLT_CALCGRIDNALOG 'Расчет удержаний по сетке (подоходный налог) ID - ID удержания (по справочнику) CDECRID - ID удержания в расчетной ведомости'; DESCRIBE PROCEDURE ZPLT_CALCGRIDNALOGSUM 'Расчет суммы удержания по сетке (подоходный налог) ID - ID вида удержания S - сумма начислений (база для расчета) DS - сумма приоритетных удержаний CSUMMA - рассчитанная сумма удержания'; DESCRIBE PROCEDURE ZPLT_CALCINCRMST 'Расчет начислений по Ведомости Начисления Зар.Платы'; DESCRIBE PROCEDURE ZPLT_CALCINCRPRSN 'Расчет начислений по Сотрудникам ID - Сотрудник в ведомости расчета з/п'; DESCRIBE PROCEDURE ZPLT_CALCINCRPRSN14 'Расчет начисления "Процент от продаж"'; DESCRIBE PROCEDURE ZPLT_CALCINCRPRSN16 'Расчет начисления - Разница между мин. з/п.'; DESCRIBE PROCEDURE ZPLT_CALCINCRPRSNAVGDAYS 'Расчет нанисления - оклад (среднедневной)'; DESCRIBE PROCEDURE ZPLT_CALCINCRPRSNPROC 'Расчет начисления заданного процентом ID - ID начисления по сотруднику в ведомости WINCTID - ID начисления: оплата за выходные в справочнике начислений HINCRID - ID начисления: оплата за праздники в справочнике начислений WINCRINCL - включать в оклад оплату за выходные HINCRINCL - включать в оклад оплату за праздники SUMMA - расчитанная сумма'; DESCRIBE PROCEDURE ZPLT_CALCJOB1BRIGADE 'Расчет бригадного наряда (сдельно-премиальная форма оплаты)'; DESCRIBE PROCEDURE ZPLT_CALCJOB2BRIGADE 'Расчет бригадного наряда (повременно-премиальная форма оплаты) ID - наряд'; DESCRIBE PROCEDURE ZPLT_CALCJOBGRP 'Расчет бригадных нарядов (в расчетной ведомости) (c) Barry'; DESCRIBE PROCEDURE ZPLT_CALCJOBPRSN 'Расчет индивидуальных нарядов'; DESCRIBE PROCEDURE ZPLT_CALCMST 'Расчет ведомости начисления заработной платы'; DESCRIBE PROCEDURE ZPLT_CALCMSTDELACCNREC 'Удаление проводок по Ведомости начисления ЗарПлаты'; DESCRIBE PROCEDURE ZPLT_CALCMSTGENACCNREC 'Формирование проводок по Ведомости начисления ЗарПлаты'; DESCRIBE PROCEDURE ZPLT_CALCPRSNUNDIRECT 'ЗарПлата: Обратный расчет от суммы к выдаче'; DESCRIBE PROCEDURE ZPLT_CALCRELIDX 'Получить индекс для расчета индексации'; DESCRIBE PROCEDURE ZPLT_CALCSLVBL 'ЗарПлата: Расчет по больничному листу Входные параметры: SIID - ID начисления (больничные) в ведомости начисления зарплаты по конкретному сотруднику Выходные параметры: SUMMA DOUBLE PRECISION, расчитанная сумма больничных BDATE DATE, расчетный период (начало) EDATE DATE, расчетный период (конец) iSumma Double Precision, сумма налогооблагаемых начислений (база) Summa1 double Precision, среднедневная зарплата AllDays integer, календарных дней WrkDays integer, рабочих дней HldDays integer, праздничных дней WknDays integer, выходных дней FctDays integer фактически отработано (дней) ClcDays - расчетное число дней для начисления больничных'; DESCRIBE PROCEDURE ZPLT_CALCSLVIDX 'Расчет индексации по начисению сотрудника в ведомости SIIID - начисление по сотруднику в ведомости (ZPLTCALCINCR) SUMMA - рассчитанная сумма индексации'; DESCRIBE PROCEDURE ZPLT_CALCSLVO 'Зарплата: Расчет Отпускных'; DESCRIBE PROCEDURE ZPLT_CREATESLVLIST 'Формирование новой расчетной ведомости начисления зарплаты (список сотрудников) BID - базовая расчетная ведомость (из нее берется список) если BID is Null - список берется из лицевых счетов MID - заполняемая ведомость'; DESCRIBE PROCEDURE ZPLT_HLDDAYS 'Зарплата: Кол-во праздничных дней за период'; DESCRIBE PROCEDURE ZPLT_IMPORTAVANS 'Импорт Аванса за текущий месяц в расчетную ведомость'; DESCRIBE PROCEDURE ZPLT_NFL_RECALC 'Перерасчет налога с доходов физ. лиц Входные параметры: ORGNID - предприятие BDATE - начало отчетного периода EDATE - конец отчетного периода'; DESCRIBE PROCEDURE ZPLT_PRSNPARAMS 'Параметры сотрудника на указанную дату (из истории) ORGNID - предприятие PRSNID - сотрудник ADATE - дата, если Null - последнее состояние (на сейчас) STATUS - статус сотрудника: - Null - сотрудник не работает и не работал на данном предприятии - 0 - запись о приеме на работу - 1 - перемещение на другую должность - 2 - сотрудник уволен (работал на предприятии)'; DESCRIBE PROCEDURE ZPLT_REPORT_ESV 'Расчет единого социального взноса'; DESCRIBE PROCEDURE ZPLT_SETTYPICALCALENDAR 'Заполнение типового табеля учета рабочего времени'; DESCRIBE PROCEDURE ZPLT_SLVDAYSSELECT 'Выборка фактически отработанного времени за расчетный месяц по сотруднику в ведомости ID - ID сотрудника в ведомости DAYNO - номер для в месяце (1..31) WTIME - фактически отработанное время'; DESCRIBE PROCEDURE ZPLT_TABELDAYSSELECT 'Выборка по указанному плановому табелю рабочего времени по дням ID - ID табеля (ZPLTTABELPLAN) DAYNO - номер для в месяце (1..31) WTIME - плановое рабочее время'; /******************************************************************************/ /*** Descriptions ***/ /******************************************************************************/ DESCRIBE TRIGGER ACCNPLAN_BU0 'Перед обновлением проверяется отключение аналитики. При наличии начального сальдо по аналитике производится чистка сумм.'; /******************************************************************************/ /*** Descriptions ***/ /******************************************************************************/ DESCRIBE EXCEPTION BDG_BAD_PAPER_ITEM_TYPE 'Логическое несоответствие'; DESCRIBE EXCEPTION BDG_BAD_SP_PARAM 'Ошибки в параметрах переданных в хранимую процедуру'; DESCRIBE EXCEPTION BDG_BAD_TYPE_CHANGE 'Логическое несоответствие'; DESCRIBE EXCEPTION BDG_DOC_LINK_INCORRECT 'Логическое несоответствие распределенных документов друг другу'; DESCRIBE EXCEPTION BDG_DOC_PAPER_INCORRECT 'Логическое несоответситвие ограничению'; DESCRIBE EXCEPTION BDG_PAPER_OBJ_CHANGE 'Необрабатываемая ситуация'; DESCRIBE EXCEPTION BDG_PERIOD_DATE_REVERSE 'Логическое несоответствие'; DESCRIBE EXCEPTION GDDDT_RETNKT 'Проверка на наличие возврата товара'; /******************************************************************************/ /*** Descriptions ***/ /******************************************************************************/ /******************************************************************************/ /*** Fields descriptions ***/ /******************************************************************************/ DESCRIBE FIELD DAT_ TABLE ACCNDOC 'Дата'; DESCRIBE FIELD NBR TABLE ACCNDOC 'Номер документа'; DESCRIBE FIELD ACCN TABLE ACCNPLAN 'Номер счета'; DESCRIBE FIELD NAME TABLE ACCNPLAN 'Наименование счета'; DESCRIBE FIELD DT TABLE ACCNPLAN 'Начальное сальдо (Д-т)'; DESCRIBE FIELD KT TABLE ACCNPLAN 'Начальное Сальдо (К-т)'; DESCRIBE FIELD GROUP0 TABLE ACCNPLAN 'Ссылка на Группу аналитического учета по Подразделениям (доп. аналитика)'; DESCRIBE FIELD GROUP1 TABLE ACCNPLAN 'Ссылка на Группу аналитического учета по Объектам (доп. аналитика)'; DESCRIBE FIELD A1 TABLE ACCNPLAN 'Признак аналитики по Контрагентам - Организациям (ORGN) 0 (Null) - нет 1 - да'; DESCRIBE FIELD A2 TABLE ACCNPLAN 'Признак аналитики по Видам Товаров (GOODS) 0 (Null) - нет 1 - да'; DESCRIBE FIELD A3 TABLE ACCNPLAN 'Признак аналитики по Сотрудникам (PERSONAL) 0 (Null) - нет 1 - да'; DESCRIBE FIELD A4 TABLE ACCNPLAN 'Признак аналитики по Складам (STORLIST) 0 (Null) - нет 1 - да'; DESCRIBE FIELD A5 TABLE ACCNPLAN 'Признак аналитики по Подразделениям (PODRLIST) 0 (Null) - нет 1 - да'; DESCRIBE FIELD A6 TABLE ACCNPLAN 'Признак аналитики по Расчетным Счетам Предприятия (ORGNBANKACCN) 0 (Null) - нет 1 - да'; DESCRIBE FIELD A7 TABLE ACCNPLAN 'Признак аналитики по Кассам 0 (Null) - нет 1 - да'; DESCRIBE FIELD A8 TABLE ACCNPLAN 'Аналитика по валовым доходам (ссылка на группу из таблицы LEV)'; DESCRIBE FIELD A9 TABLE ACCNPLAN 'Аналитика по валовым расходам (ссылка на группу из таблицы LEV)'; DESCRIBE FIELD NBLNS TABLE ACCNPLAN 'Признак забалансового счета 0 - обычный счет 1 - забалансовый счет'; DESCRIBE FIELD CURRTYP TABLE ACCNPLAN 'Тип Валюты - для валютных счетов (ссылка на поле ID таблицы CURRTYP) Null - обычный счет (в национальной валюте)'; DESCRIBE FIELD CDT TABLE ACCNPLAN 'Сальдо в валюте (Д-т)'; DESCRIBE FIELD CKT TABLE ACCNPLAN 'Сальдо в валюте (К-т)'; DESCRIBE FIELD USERNAME TABLE ACCNPLAN 'Имя пользователя'; DESCRIBE FIELD ID TABLE ACCNPROV 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE ACCNPROV 'Дата проводки'; DESCRIBE FIELD DT TABLE ACCNPROV 'Счет-Дебет'; DESCRIBE FIELD KT TABLE ACCNPROV 'Счет-Кредит'; DESCRIBE FIELD SUMMA TABLE ACCNPROV 'Сумма'; DESCRIBE FIELD DOCUMENT TABLE ACCNPROV 'Номер документа'; DESCRIBE FIELD COMMENT TABLE ACCNPROV 'Примечание'; DESCRIBE FIELD DTPRT TABLE ACCNPROV 'Аналика по дебету (доп. по Подразделениям)'; DESCRIBE FIELD DTOBJ TABLE ACCNPROV 'Аналика по дебету (доп. по Объектам)'; DESCRIBE FIELD KTPRT TABLE ACCNPROV 'Аналика по кредиту (доп. по Подразделениям)'; DESCRIBE FIELD KTOBJ TABLE ACCNPROV 'Аналика по кредиту (доп. по Объектам)'; DESCRIBE FIELD ACCNDOCID TABLE ACCNPROV 'Ссылка на бухгалтерскую справку (ACCNDOC)'; DESCRIBE FIELD USERNAME TABLE ACCNPROV 'Имя пользователя'; DESCRIBE FIELD ID TABLE ACOPRLST 'Уникальный код записи. В первичных документах ссылка на операцию, как правило, поле - OPERID.'; DESCRIBE FIELD NAME TABLE ACOPRLST 'Наименование операции'; DESCRIBE FIELD OPER TABLE ACOPRLST 'Тип операции (привязка к первичному документу): OperCode_InpGoods = 0; // Оприходование Товара OperCode_RtnGoods = 1; // Возврат товара Покупателем OperCode_RealGoods = 2; // Реализация товара OperCode_MainGoods = 3; // Списание Осн. Средств OperCode_MBPGoods = 4; // Списание МБП OperCode_BrakGoods = 5; // Списание Брака OperCode_StorOut = 9; // Конфигурируемые Операции списания по складу OperCode_PriceGoods = 14; // Переоценка товара OperCode_ImptGoods = 16; // Оприходование Импорта OperCode_ExptGoods = 17; // Реализация на Экспорт OperCode_SaleKt = 10; // Кредиторы: Платежные Документы OperCode_AktKtU = 40; // Кредиторы: Акты на Прием Услуг/Работ OperCode_SaleDt = 6; // Дебиторы: Платежные Документы OperCode_KassaInp = 60; // Касса: Приходные кассовые Ордера OperCode_KassaOut = 61; // Касса: Расходные кассовые Ордера OperCode_KassAv = 62; // Касса: Авансовые Отчеты OperCode_IntrGoods = 11; // Внутренняя передача OperCode_InpWorkGds = 12; // Оприходование изделий из Производства OperCode_OutWorkGds = 15; // Списание Материалов и Комплектующих OperCode_RetnKtGds = 13; // Возврат товара Поставщику OperCode_AktDtU = 41; // Дебиторы: Акты на оказание Услуг/Работ OperCode_MainIn = 30; // Осн.Фонды: Введение в эксплуатацию OperCode_MainOut = 31; // Осн.Фонды: Списание/Выбытие OperCode_MainAm = 32; // Осн.Фонды: Начисление Амортизации OperCode_MainChg = 33; // Осн.Фонды: изменение стоимости OperCode_MbpOut = 50; // ввод в эксплуатацию МБП OperCode_MbpIntr = 51; // внутр. передача МБП OperCode_MbpInp = 52; // списание/выбытие МБП OperCode_MbpPrice = 53; // Переоценка МБП OperCode_Zplt = 70; // начисление заработной платы OperCode_ZpltPlat = 71; // выплата заработной платы OperCode_WorkNkCalc = 80; // Распределение накладных расходов (пр-во) OperCode_VKSL = 90; // Векселя OperCode_CurrSumm = 100;// Движение валюты - курсовые разницы'; DESCRIBE FIELD BLNS TABLE ACOPRLST 'Признак "Включать в расчеты с контрагентами". 0 - нет 1 - да'; DESCRIBE FIELD NOTIFY_OPTIONS TABLE ACOPRLST 'Опции оповещения (побитно): 0x01 - Отправлять e-mail сотруднику 0x02 - отправлять e-mail организации 0x04 - отправлять контрольный e-mail если адрес у сотрудника или организации пустой 0x08 - отправлять контрольный e-mail всегда 0x10 - отправлять контрольный e-mail при изменении суммы документа 0x20 - Отправлять e-mail контактному лицу (ответственному)'; DESCRIBE FIELD BDGT_ITEM1_ID TABLE ACOPRLST 'Статья дохода'; DESCRIBE FIELD BDGT_ITEM2_ID TABLE ACOPRLST 'Статья расхода'; DESCRIBE FIELD NAME TABLE BANKMFO 'Наменование Банка'; DESCRIBE FIELD MFO TABLE BANKMFO 'Код МФО'; DESCRIBE FIELD SWIFT TABLE BANKMFO 'SWIFT'; DESCRIBE FIELD ADDRESS TABLE BANKMFO 'Адрес'; DESCRIBE FIELD ATYPE TABLE BDG_ATTR 'Тип документов (BDG_PAPER.ATYPE), к которым относится атрибут ("-1" - все документы)'; DESCRIBE FIELD IS_REQUIRED TABLE BDG_ATTR 'Обязательно для заполнения (0 - нет, 1 - да)'; DESCRIBE FIELD IS_UNIQUE TABLE BDG_ATTR 'Одно значение на документ: 1 - да, 0 - нет (не реализовано)'; DESCRIBE FIELD SCHEME_NAME TABLE BDG_CALC '(Копируется из BDG_SCHEME)'; DESCRIBE FIELD SCHEME_ATYPE TABLE BDG_CALC '(Копируется из BDG_SCHEME)'; DESCRIBE FIELD NBR TABLE BDG_CALC '(Копируется из BDG_SCHEME)'; DESCRIBE FIELD COMMENT TABLE BDG_CALC '(Копируется из BDG_SCHEME)'; DESCRIBE FIELD ADEFAULT TABLE BDG_CALC 'Калькуляция "утверждена" как основная.'; DESCRIBE FIELD CALC_ID TABLE BDG_CALC_GOODS 'Ссылка на какуляцию'; DESCRIBE FIELD GOODS_ID TABLE BDG_CALC_GOODS 'Ссылка на справочник товаров'; DESCRIBE FIELD CENTER_ID TABLE BDG_CALC_GOODS 'ЦФУ проивевшее/реализовавшее позицию'; DESCRIBE FIELD QUANT TABLE BDG_CALC_GOODS 'Кол-во произведенных/реализованных единиц'; DESCRIBE FIELD PRICE TABLE BDG_CALC_GOODS 'Сумма затрат на всю позицию (затраты на единицу = PRICE / QUANT)'; DESCRIBE FIELD ATYPE TABLE BDG_CALC_GOODS 'Тип: 0 - продукция; 1 - товары'; DESCRIBE FIELD ID TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD GROU_ TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD NAME TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD NBR TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD OWNER TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD GOODS_CENTER_ID TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD GOODS_ATYPE TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD ATYPE TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD COMMENT TABLE BDG_CALC_ORDER '(Копируется из BDG_SCHEME_ORDER)'; DESCRIBE FIELD CODE TABLE BDG_CENTER 'Код'; DESCRIBE FIELD TYP TABLE BDG_CENTER 'Тип: ...'; DESCRIBE FIELD REC_DISABLED TABLE BDG_CENTER '1 = Неактивная запись'; DESCRIBE FIELD ATYPE TABLE BDG_DATA_STATE 'Тип данных (V_BDG_LIST_DATA_TYPE): 1 - Поступление денег 2 - Выбытие денег 10 - Доходы 20 - Затраты 30 - Производство'; DESCRIBE FIELD ASTATE TABLE BDG_DATA_STATE 'Состояние: 0 - Открыто 1 - Принято 2 - Закрыто'; DESCRIBE FIELD REC_DISABLED TABLE BDG_DIRECTION 'Неактивная запись'; DESCRIBE FIELD NAME TABLE BDG_DISTR 'Наименование'; DESCRIBE FIELD CODE TABLE BDG_DISTR 'Код'; DESCRIBE FIELD NAME TABLE BDG_DISTR_BASIS 'Наименование'; DESCRIBE FIELD CODE TABLE BDG_DISTR_BASIS 'Код'; DESCRIBE FIELD MEASURE TABLE BDG_DISTR_BASIS 'Единица измерения долей'; DESCRIBE FIELD REC_DISABLED TABLE BDG_DISTR_BASIS '1 = Не отображать запись'; DESCRIBE FIELD DISTR_BASIS_ID TABLE BDG_DISTR_PORTION 'Схема распределения'; DESCRIBE FIELD CENTER_ID TABLE BDG_DISTR_PORTION 'ЦФУ'; DESCRIBE FIELD PORTION TABLE BDG_DISTR_PORTION 'Доля'; DESCRIBE FIELD PERIOD_ID TABLE BDG_DISTR_PORTION 'Значение Null - не используется'; DESCRIBE FIELD DOC_TYPE TABLE BDG_DOC 'Тип данных: 0 - распределяемые 1 - нераспределяемые'; DESCRIBE FIELD AMOUNT TABLE BDG_DOC 'Сумма без НДС'; DESCRIBE FIELD PAPER_ID TABLE BDG_GOODS 'Ссылка на документ которому принадлежит позиция. (NULL для себестоимости реализованной продукции).'; DESCRIBE FIELD QUANT TABLE BDG_GOODS 'Количество'; DESCRIBE FIELD PRICE TABLE BDG_GOODS 'Цена Для производства (BDG_PAPER.ATYPE = 2) - производственная себестоимость'; DESCRIBE FIELD SRC_PRICE TABLE BDG_GOODS 'Входная цена/Себестоимость'; DESCRIBE FIELD LINK_TO TABLE BDG_GOODS 'Ссылка на реализованный товар для "Затраты: стоимость закупленного товара" Ссылка на реализованную продукцию для "Производственная себестоимость" Ссылка на произведенную продукцию для "Затраты: сырье на производство" Ссылка на себестоимость для "Доходы: Реализации продукции" (PAPER_ID = NULL)'; DESCRIBE FIELD OBJ_GDD_ID TABLE BDG_GOODS 'Ссылка на товар в фактическом документе. Таблица на которую ссылается, определяется через привязку основного документа (BDG_PAPER) к объекту: OBJ_TYPE = 198: GDDKT.ID OBJ_TYPE = 199: GDDDT.ID'; DESCRIBE FIELD NAME TABLE BDG_ITEM 'Наименование'; DESCRIBE FIELD CODE TABLE BDG_ITEM 'Код'; DESCRIBE FIELD GROU_ TABLE BDG_ITEM 'Признак группы: 0 - группа 1 - статья'; DESCRIBE FIELD OWNER TABLE BDG_ITEM 'Группа в которой состоит'; DESCRIBE FIELD CHILD_COUNT TABLE BDG_ITEM 'Auto: Кол-во дочерних элементов'; DESCRIBE FIELD KIND TABLE BDG_ITEM 'Вид деятельности: 0 - основная 1 - финансовая 2 - инвестиционная'; DESCRIBE FIELD RESULT_TYPE TABLE BDG_ITEM 'Тип результатов по статье (ResultType): +1 - Доходы/Поступления денег -1 - Затраты/Выбытие денег'; DESCRIBE FIELD COSTS_TYPE TABLE BDG_ITEM 'Постоянство расходов: 0 - постоянные 1 - переменные'; DESCRIBE FIELD WORK_TYPE TABLE BDG_ITEM 'Отношение расходов к производству (WorkType): 0 - Производственные прямые 1 - Производственные косвенные 2 - Непроизводственные'; DESCRIBE FIELD COMMENT TABLE BDG_ITEM 'Комментарий'; DESCRIBE FIELD REC_DISABLED TABLE BDG_ITEM '1 = Неактивная запись'; DESCRIBE FIELD ATYPE TABLE BDG_ITEM 'Тип статьи: 0 - Операционная (доходы/затраты) 1 - Финансовая (денежные средства)'; DESCRIBE FIELD ID TABLE BDG_PAPER 'Уникальный ключ записи'; DESCRIBE FIELD OURORGNID TABLE BDG_PAPER 'ID предприятия'; DESCRIBE FIELD ATYPE TABLE BDG_PAPER 'Тип документа: 0 - доходы/затраты 1 - денежные средства 2 - производство'; DESCRIBE FIELD DAT_ TABLE BDG_PAPER 'Дата'; DESCRIBE FIELD AMOUNT TABLE BDG_PAPER 'Сумма'; DESCRIBE FIELD NDS TABLE BDG_PAPER 'НДС (при кассовом методе регистрации факта, НДС в "доходах и затратах" заполняется, но в расчетах его учитывать нельзя)'; DESCRIBE FIELD REASON TABLE BDG_PAPER 'Основание'; DESCRIBE FIELD COMMENT TABLE BDG_PAPER 'Комментарий'; DESCRIBE FIELD OBJ_ID TABLE BDG_PAPER 'Привязка к фактическому документу'; DESCRIBE FIELD SOURCE_TYPE TABLE BDG_PAPER 'Смысловой тип данных: 0 - сумма 1 - реализация продукции 2 - реализация товаров 3 - реализация услуг 4 - производство (ATYPE = 2) 5 - затраты на сырье при производстве 6 - списание ТМЦ и МБП 7 - затраты на закупку реализованных товаров'; DESCRIBE FIELD LINK_TO TABLE BDG_PAPER '(ISINNER = 1): Ссылка на документ для внутреннего перемещения сумм (ISINNER = 0): Для ATYPE = 1 (Денежные средства): Ссылка на документ к которому привязана оплата Для "Затраты: стоимость закупленного товара": Ссылка на реализованный товар Для "Затраты: сырье на производство": Ссылка на произведенную продукцию'; DESCRIBE FIELD LINK_KOEF TABLE BDG_PAPER 'Коэффициент расчета суммы при привязке оплат'; DESCRIBE FIELD INP_TYPE TABLE BDG_PAPER 'Тип ввода данных: 0 - ручной ввод 1 - автоматически (обычно связанные документы: SOURCE_TYPE = [5,7]) 2 - регистрация факта 3 - копирование 4 - импорт данных'; DESCRIBE FIELD ORGN_ID TABLE BDG_PAPER 'Организация'; DESCRIBE FIELD IS_INNER TABLE BDG_PAPER 'Внутренний документ (для перемещения сумм): 0 - нет; 1 - да'; DESCRIBE FIELD IMPORT_KEY TABLE BDG_PAPER 'Уникальный ключ для импортируемых записей'; DESCRIBE FIELD GROU_ TABLE BDG_PERIOD 'Признак группы: 0 - группа периодов 1 - период'; DESCRIBE FIELD OWNER TABLE BDG_PERIOD 'Группа которой приндлежит этот период'; DESCRIBE FIELD BDATE TABLE BDG_PERIOD 'Начальная дата'; DESCRIBE FIELD EDATE TABLE BDG_PERIOD 'Конечная дата'; DESCRIBE FIELD NAME TABLE BDG_PERIOD 'Наименование'; DESCRIBE FIELD COMMENT TABLE BDG_PERIOD 'Примечание'; DESCRIBE FIELD ASTATE TABLE BDG_PERIOD 'Статус периода: 0 - открытый период 1 - (пока не используется) 2 - закрытый период'; DESCRIBE FIELD PLAN_ID TABLE BDG_PERIOD 'Основной план периода'; DESCRIBE FIELD P_DISTR_ID TABLE BDG_PERIOD 'Схема разнесения затрат по ЦФУ'; DESCRIBE FIELD PLAN_STATE TABLE BDG_PLAN 'Состояние: 1 - основной план'; DESCRIBE FIELD DISABLED TABLE BDG_PLAN '1 - неактивный план ...'; DESCRIBE FIELD ATYPE TABLE BDG_PRICE 'Тип данных: 0 - Плановые цены'; DESCRIBE FIELD ATYPE TABLE BDG_SCHEME 'Тип схемы: 0 - себестоимость по выпуску 1 - себестоимость по реализации'; DESCRIBE FIELD ORDER_ID TABLE BDG_SCHEME_OPER 'Шаг на котором производится вычисление'; DESCRIBE FIELD NBR TABLE BDG_SCHEME_OPER 'Порядок вычисления'; DESCRIBE FIELD OPER_TYPE TABLE BDG_SCHEME_OPER 'Операция: 0 - сложение 1 - вычитание 2 - умножение 3 - деление'; DESCRIBE FIELD VAL_TYPE TABLE BDG_SCHEME_OPER 'Значение участвующее в операции: 0 - заданное значение (VAL_FLOAT) 1 - база (VAL_BASIS_ID) 2 - шаг разнесения (VAL_ORDER_ID)'; DESCRIBE FIELD GROU_ TABLE BDG_SCHEME_ORDER '0 - группа (не использовать подгруппы, т.к. нет их обработки при калькуляции) 1 - шаг 2 - агрегатная группа (не входит в себестоимость, служит лишь для промежуточного анализа пользователем)'; DESCRIBE FIELD GOODS_ATYPE TABLE BDG_SCHEME_ORDER '0 - только для продукции 1 - только для товаров null - для всех'; DESCRIBE FIELD ATYPE TABLE BDG_SCHEME_ORDER 'Тип данных которые необходимо разнести: 0 - материальные затраты/входная цена (Linked BDG_GOODS) 1 - разнесенные затраты (BDG_DOC) (При 0 - поля ITEM_ID, CENTER_ID - игнорируются)'; DESCRIBE FIELD OBJ_SRV_ID TABLE BDG_SERV 'Ссылка на услугу в фактическом документе (GDDDTU.SERVUID)'; DESCRIBE FIELD ATYPE TABLE BDG_SHEDULE 'Тип привязываемых документов: 0 - начисления 1 - оплаты'; DESCRIBE FIELD ID TABLE BOOKSLDT 'Уникальный код записи'; DESCRIBE FIELD BOOKDAYSID TABLE BOOKSLDT 'Ссылка на день'; DESCRIBE FIELD DAT_ TABLE BOOKSLDT 'Дата выписки налоговой накладной'; DESCRIBE FIELD NBR TABLE BOOKSLDT '№ налоговой накладной'; DESCRIBE FIELD NAMEID TABLE BOOKSLDT 'Контрагент'; DESCRIBE FIELD SUMMA TABLE BOOKSLDT 'Сумма (с НДС)'; DESCRIBE FIELD KSUMMA TABLE BOOKSLDT 'Сумма корректировки'; DESCRIBE FIELD NDSPROC TABLE BOOKSLDT 'Ставка НДС (%) - основная сумма'; DESCRIBE FIELD NDS TABLE BOOKSLDT 'НДС с суммы'; DESCRIBE FIELD DOCTIP TABLE BOOKSLDT 'Тип первичного документа (зарезервировано - не исп.)'; DESCRIBE FIELD DOCID TABLE BOOKSLDT 'ID первичного документа (зарезервировано - не исп.)'; DESCRIBE FIELD NSUMMA TABLE BOOKSLDT 'Сумма без НДС (возможно, заполняется не всегда)'; DESCRIBE FIELD FORMSTR TABLE BOOKSLDT 'Вид документа'; DESCRIBE FIELD TYP TABLE BOOKSLDT '0 - безналичнные платежи 1 - наличные платежи (заполняется при импорте записей)'; DESCRIBE FIELD RNBR TABLE BOOKSLDT '№ записи (№ п/п)'; DESCRIBE FIELD SALENDS TABLE BOOKSLDT 'Признак - плательщик НДС (контрагент) 0 - не плательщик НДС 1 - плательщик НДС'; DESCRIBE FIELD KNDS TABLE BOOKSLDT 'Признак - корректировка, облагаемая НДС 0 - необлагаемая НДС 1 - облагаемая НДС'; DESCRIBE FIELD KNBR TABLE BOOKSLDT '№ корректировки'; DESCRIBE FIELD KNNBR TABLE BOOKSLDT 'Номер НН к корректировке'; DESCRIBE FIELD KCOMMENT TABLE BOOKSLDT 'Основание для корректировки'; DESCRIBE FIELD DATECALC TABLE BOOKSLDT 'Дата проведения расчетов'; DESCRIBE FIELD KBN TABLE BOOKSLDT 'Корректировка без НДС (уточнение) 0 - со ставкой 0% 1 - освобожд. от налогообложения'; DESCRIBE FIELD SBN TABLE BOOKSLDT 'Необлагаемая сумма (уточнение) 0 - со ставкой 0% 1 - освобожд. от налогообложения 2 - не явл. объектом налогообл. 3 - на экспорт'; DESCRIBE FIELD SNN TABLE BOOKSLDT 'Признак - сумма облагаемая НДС 0 - не облагаемая НДС 1 - облагаемая НДС'; DESCRIBE FIELD D5 TABLE BOOKSLDT 'Дополнение 5 к Декларации по НДС: 1 - "Послуги отримані від нерезідента на митній території України" 2 - "Поставка основних фондів" 4 - "Передача товарів(послуг) комісіонерам/повереним на умовах, передбачених п.4.7 ст.4 Закону" 8 - "Инші"'; DESCRIBE FIELD OPERID TABLE BOOKSLDT 'Операция (для проводок)'; DESCRIBE FIELD EDITED TABLE BOOKSLDT 'Признак отредактированной / занесенной вручную записи = 0 - занесено автоматически (импорт) = 1 - занесено вручную / отредактировано'; DESCRIBE FIELD RECALC TABLE BOOKSLDT 'Признак - "Включено в уточняющий расчет"'; DESCRIBE FIELD ID TABLE BOOKSLKT 'Уникальный код записи'; DESCRIBE FIELD BOOKDAYSID TABLE BOOKSLKT 'Ссылка на день (на поле ID таблицы BOOKSLKTDAYS)'; DESCRIBE FIELD DAT_ TABLE BOOKSLKT 'Дата получения налоговой накладной'; DESCRIBE FIELD NBR TABLE BOOKSLKT '№ налоговой накладной'; DESCRIBE FIELD NAMEID TABLE BOOKSLKT 'Контрагент (ссылка на поле ID таблицы ORGN)'; DESCRIBE FIELD SUMMA TABLE BOOKSLKT 'Сумма (с НДС - если есть)'; DESCRIBE FIELD KSUMMA TABLE BOOKSLKT 'Сумма корректировки'; DESCRIBE FIELD NDSPROC TABLE BOOKSLKT 'Ставка НДС (%) - основная сумма'; DESCRIBE FIELD NDS TABLE BOOKSLKT 'Сумма НДС'; DESCRIBE FIELD CBNDS TABLE BOOKSLKT 'Признак - указана ставка НДС (%)'; DESCRIBE FIELD DOCTIP TABLE BOOKSLKT 'Тип исходного документа'; DESCRIBE FIELD DOCID TABLE BOOKSLKT 'ID исходного документа'; DESCRIBE FIELD NSUMMA TABLE BOOKSLKT 'Сумма НДС не вкл. в налоговый кредит'; DESCRIBE FIELD SALEDATE TABLE BOOKSLKT 'Дата оплаты (дата корректировки)'; DESCRIBE FIELD FORMSTR TABLE BOOKSLKT 'Вид документа'; DESCRIBE FIELD RNBR TABLE BOOKSLKT '№ записи (№ п/п)'; DESCRIBE FIELD KNBR TABLE BOOKSLKT 'Номер корректировки'; DESCRIBE FIELD KNDATE TABLE BOOKSLKT 'Дата НН к корректировке'; DESCRIBE FIELD KNNBR TABLE BOOKSLKT '№ НН к корректировке'; DESCRIBE FIELD KNDS TABLE BOOKSLKT 'НДС корректировки'; DESCRIBE FIELD NNDS TABLE BOOKSLKT 'Признак "Не облагаемая НДС сумма" 0 - сумма облагается НДС 1 - сумма не облагается НДС'; DESCRIBE FIELD FNDS TABLE BOOKSLKT 'Признак "Без права включения в налоговый кредит" 0 - C правом включения в налоговый кредит 1 - без права включения в налоговый кредит'; DESCRIBE FIELD FFNDS TABLE BOOKSLKT 'Признак распределения суммы 0 - колонка 18 1 - колонка 19 2 - колонка 20 3 - колонка 21 4 - колонка 22 5 - колонка 23 6 - колонка 24 7 - колонка 25 8 - колонка 13 9 - колонка 14 10 - колонка 15 11 - колонка 6 - сумма погашенного налогового векселя 12 - колонка 7 - импорт товаров, на кот. оформ. нал. вексель 13 - колонка 9 - работы, полученные от нерезидента'; DESCRIBE FIELD D5 TABLE BOOKSLKT '=1 - Придбання (будiвництво, спорудження) основних фондів =2 - Проведення розрахунків комісіонером/повереним за товари(послуги) на умовах, передбачених п.4.7 ст. 4 Закону =4 - Предбання (виготовлення, будівництво, спорудження) без ПДВ (ряд.11 Декларации)'; DESCRIBE FIELD EDITED TABLE BOOKSLKT 'Признак отредактированной / занесенной вручную записи = 0 - занесено автоматически (импорт) = 1 - занесено вручную / отредактировано'; DESCRIBE FIELD NEW_CHECK TABLE BOOKSLKT '0 - у господарськой діяльності 20%, 0% 1 - -\\- звільнені, не є об''єктами 2 - не призначаються у госп. діяльності 3 - для поставки послуг по пункту 6.5 статті 6'; DESCRIBE FIELD AONBR TABLE BOOKSLKT 'Номер авансового отчета (заполняется при импорте авансовых отчетов)'; DESCRIBE FIELD RECALC TABLE BOOKSLKT 'Признак - включено в уточняющий расчет'; DESCRIBE FIELD NK1 TABLE BOOKSLKT 'Признак - Разделение суммы налогового кредита'; DESCRIBE FIELD DRDOCNBR TABLE CONTACTS '№ водительского удостоверения'; DESCRIBE FIELD ID TABLE CRDS_DGVDT 'первичный ключ'; DESCRIBE FIELD STOR_ID TABLE CRDS_DGVDT 'ссылка на ID STORLIST'; DESCRIBE FIELD DGVDT_DATE TABLE CRDS_DGVDT 'дата'; DESCRIBE FIELD DGVDT_NBR TABLE CRDS_DGVDT 'номер документа'; DESCRIBE FIELD USERNAME TABLE CRDS_DGVDT 'Имя пользователя изменявшего запись последним'; DESCRIBE FIELD LASTEDIT TABLE CRDS_DGVDT 'Дата последнего изменения записи'; DESCRIBE FIELD ID TABLE CRDS_DGVKT 'первичный ключ'; DESCRIBE FIELD STOR_ID TABLE CRDS_DGVKT 'ссылка на ID STORLIST'; DESCRIBE FIELD DGVKT_DATE TABLE CRDS_DGVKT 'дата'; DESCRIBE FIELD DGVKT_NBR TABLE CRDS_DGVKT 'номер документа'; DESCRIBE FIELD USERNAME TABLE CRDS_DGVKT 'Имя пользователя изменявшего запись последним'; DESCRIBE FIELD LASTEDIT TABLE CRDS_DGVKT 'Дата последнего изменения записи'; DESCRIBE FIELD ID TABLE CRDS_GDDDT 'первичный ключ'; DESCRIBE FIELD DGVDT_ID TABLE CRDS_GDDDT 'ссылка на ID в CRDS_DGVDT'; DESCRIBE FIELD GOODS_ID TABLE CRDS_GDDDT 'ссылка на ID в GOODS'; DESCRIBE FIELD GOODS_QUANT TABLE CRDS_GDDDT 'количество товара'; DESCRIBE FIELD USERNAME TABLE CRDS_GDDDT 'Имя пользователя изменявшего запись последним'; DESCRIBE FIELD LASTEDIT TABLE CRDS_GDDDT 'Дата последнего изменения записи'; DESCRIBE FIELD USERNAME TABLE CRDS_GDDKT 'Имя пользователя изменявшего запись последним'; DESCRIBE FIELD LASTEDIT TABLE CRDS_GDDKT 'Дата последнего изменения записи'; DESCRIBE FIELD DISTR_CLIENT TABLE CTLGDISTR 'Имя клиента, взявшего на прокат'; DESCRIBE FIELD DISTR_DATE TABLE CTLGDISTR 'Дата выдачи'; DESCRIBE FIELD DISTR_PERIOD TABLE CTLGDISTR 'Период на который выдано (дни)'; DESCRIBE FIELD DISTR_RETURN TABLE CTLGDISTR 'Дата возврата'; DESCRIBE FIELD DISTR_INFO TABLE CTLGDISTR 'Примечания'; DESCRIBE FIELD ENTITY_NAME TABLE CTLGENTITY 'Наименование'; DESCRIBE FIELD ENTITY_POSITION TABLE CTLGENTITY 'Расположение (например страница статьи)'; DESCRIBE FIELD ENTITY_AUTHOR TABLE CTLGENTITY 'Автор'; DESCRIBE FIELD ITEM_NUMBER TABLE CTLGITEM 'Номер'; DESCRIBE FIELD ITEM_DATE TABLE CTLGITEM 'Дата'; DESCRIBE FIELD ITEM_TYPE TABLE CTLGITEM 'Тип (например номера журнала: NULL, 0 - обычный; 1 - спецвыпуск;)'; DESCRIBE FIELD GOODS_ID TABLE CTLGITEM 'Ключ на GOODS'; DESCRIBE FIELD ITEM_CODE TABLE CTLGITEM 'Уникальный код'; DESCRIBE FIELD THEME_NAME TABLE CTLGTHEME 'Название'; DESCRIBE FIELD THEME_OWNER TABLE CTLGTHEME 'Родительская тема'; DESCRIBE FIELD TYP TABLE CURRDATA 'Тип валюты (ссылка на поле ID таблицы CURRTYP)'; DESCRIBE FIELD DAT_ TABLE CURRDATA 'Дата'; DESCRIBE FIELD NBANK TABLE CURRDATA 'Курс валюты'; DESCRIBE FIELD DAYID TABLE CURRSTOR 'Ссылка на день (CURRSTORDAYS)'; DESCRIBE FIELD ACCNID TABLE CURRSTOR 'Расчетный счет (валютный)'; DESCRIBE FIELD DAT_ TABLE CURRSTOR 'Дата'; DESCRIBE FIELD TYP TABLE CURRSTOR 'Приход / Расход по валютному счету 1 - приход 2 - расход'; DESCRIBE FIELD CURRTYP TABLE CURRSTOR 'Тип валюты (CURRTYP)'; DESCRIBE FIELD ORGNID TABLE CURRSTOR 'Контрагент (ORGN)'; DESCRIBE FIELD CSUMMA TABLE CURRSTOR 'Сумма в валюте'; DESCRIBE FIELD CURS TABLE CURRSTOR 'Курс валюты'; DESCRIBE FIELD SUMMA TABLE CURRSTOR 'Сумма в нац. валюте (эквивалент - пересчет по курсу)'; DESCRIBE FIELD ACCNID TABLE CURRSTORDAYS 'Расчетный счет (валютный)'; DESCRIBE FIELD DAT_ TABLE CURRSTORDAYS 'Дата'; DESCRIBE FIELD CSUMMA TABLE CURRSTORDAYS 'Остаток в валюте (на конец дня)'; DESCRIBE FIELD CURS TABLE CURRSTORDAYS 'Курс валюты'; DESCRIBE FIELD SUMM TABLE CURRSTORDAYS 'Курсовая разница - от остатка на валютном счете'; DESCRIBE FIELD SUMMA TABLE CURRSTORDAYS 'Остаток в нац. валюте на валютном р/с - на конец дня'; DESCRIBE FIELD OPERID TABLE CURRSTORDAYS 'Операция (для формирования проводок)'; DESCRIBE FIELD DAYID TABLE CURRSTORDAYSACCR 'ССылка на день (CURRSTORDAYS)'; DESCRIBE FIELD ACCNID TABLE CURRSTORDAYSACCR 'ССылка на проводку (ACCNPROV)'; DESCRIBE FIELD ID TABLE CURRTYP 'Уникальный код записи'; DESCRIBE FIELD NAME TABLE CURRTYP 'Наименование валюты'; DESCRIBE FIELD COD TABLE CURRTYP 'Код валюты (букв.)'; DESCRIBE FIELD CODE TABLE CURRTYP 'Код валюты (цифр.)'; DESCRIBE FIELD FMT TABLE CURRTYP 'Формат представления'; DESCRIBE FIELD C1 TABLE CURRTYP 'Наименование валюты прописью - 1 (доллар, лира...)'; DESCRIBE FIELD C2 TABLE CURRTYP 'Наименование валюты прописью - 2 (доллара, лиры...)'; DESCRIBE FIELD C5 TABLE CURRTYP 'Наименование валюты прописью - 5 (долларов, лир...)'; DESCRIBE FIELD CK1 TABLE CURRTYP 'Наименование копеек прописью - 1 (копейка, цент...)'; DESCRIBE FIELD CK2 TABLE CURRTYP 'Наименование копеек прописью - 2 (копейки, цента...)'; DESCRIBE FIELD CK5 TABLE CURRTYP 'Наименование копеек прописью - 5 (копеек, центов...)'; DESCRIBE FIELD SYS_FLAG TABLE CURRTYP '0 - валюта 1 - индекс потребительских цен 2 - прожиточный минимум 3 - минимальная зарплата'; DESCRIBE FIELD ID TABLE DGVDT 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE DGVDT 'Дата выписки счета'; DESCRIBE FIELD NBR TABLE DGVDT 'Номер документа'; DESCRIBE FIELD SALEDATE TABLE DGVDT 'Дата оплаты (последняя, при полной оплате)'; DESCRIBE FIELD OUT_DATE TABLE DGVDT 'Дата выдачи товара'; DESCRIBE FIELD REALDATE TABLE DGVDT 'Дата реализации (практически бесполезна в наст. время)'; DESCRIBE FIELD SALESUMMA TABLE DGVDT 'Сумма оплаты'; DESCRIBE FIELD SUMMA TABLE DGVDT 'Сумма по накладной'; DESCRIBE FIELD STOR TABLE DGVDT 'Склад (источник) (текущий для расх. накладной, с которого списывается товар)'; DESCRIBE FIELD TYP TABLE DGVDT 'Тип накладной: 0 - Реализация товара 1 - Внутренняя передача 2 - Списание Основных Средств 3 - Списание МБП 4 - Списание ТМЦ 5 - (Зарезервировано для возврата) 6 - Списание... 7 - Переоценка Товара 8 - Списание Комплектующих (при выпуске продукции) 9 - Возврат Товара Поставщику 10 - Реализация Товара на Эспорт 11 - Счет на реализацию (без резервирования товара)'; DESCRIBE FIELD SUBTYP TABLE DGVDT 'Используется во внутренних передачах (TYP=1) для заказов (производство / склад): 1 - Накладная на укомплектацию произв. заказа (передача материалов в производство - в заказе) 2 - Возвратные акты по произв. заказу (возврат материалов из производства) 3 - Внутренняя передача - отпуск из заказа (cкладские заказы)'; DESCRIBE FIELD REALTYP TABLE DGVDT 'Тип реализации (в наст. время не актуально): 0 - По выдаче товара 1 - По выдаче и оплате'; DESCRIBE FIELD PROCNDS TABLE DGVDT 'Ставка НДС (в %)'; DESCRIBE FIELD MANAGER TABLE DGVDT 'Менеджер (ссылка на поле ID таблицы PERSONAL)'; DESCRIBE FIELD NDSTYP TABLE DGVDT 'Методика расчета НДС: 0 - с торговой надбавки (было в застойные времена) 1 - со всей суммы'; DESCRIBE FIELD DGVKEY TABLE DGVDT 'Ссылка на связанную приходную накладную для некоторых форм перемещения товара (внутр. передача, переоценка)'; DESCRIBE FIELD NAMEID TABLE DGVDT 'Заказчик (организация-контрагент) ссылка на поле ID таблицы ORGN'; DESCRIBE FIELD CLOSED TABLE DGVDT 'Признак закрытия накладной: 0 - не закрыто (не оплачено или не выдан товар) 1 - закрыто (товар выдан и полностью оплачен)'; DESCRIBE FIELD STORID TABLE DGVDT 'Ссылка на Склад-Получатель (внутренние передачи, переоценка...)'; DESCRIBE FIELD PRSNID TABLE DGVDT 'Сотрудник (подотчетное лицо). Ссылка на поле ID таблицы PERSONAL.'; DESCRIBE FIELD COMMENT TABLE DGVDT 'Примечание'; DESCRIBE FIELD PODRID TABLE DGVDT 'Подразделение (ссылка на поле ID таблицы PODRLIST) для накладных на списание Основных Средств, МБП'; DESCRIBE FIELD OPERID TABLE DGVDT 'Ссылка на операцию по формированию проводок (на поле ID таблицы ACOPRLST)'; DESCRIBE FIELD SALEFORM TABLE DGVDT 'Форма оплаты (для налоговых накладных)'; DESCRIBE FIELD SALECOND TABLE DGVDT 'Условие продажи (для налоговых накладных)'; DESCRIBE FIELD RNBR TABLE DGVDT '№ расходной накладной'; DESCRIBE FIELD NNBR TABLE DGVDT 'Номер налоговой накладной'; DESCRIBE FIELD NDATE TABLE DGVDT 'Дата выписки налоговой накладной'; DESCRIBE FIELD DNBR TABLE DGVDT '№ доверенности на получение товара'; DESCRIBE FIELD DDATE TABLE DGVDT 'Дата выписки доверенности на получение товара (Действительна от...)'; DESCRIBE FIELD DLASTDATE TABLE DGVDT 'Срок действия доверенности (Действительна до...)'; DESCRIBE FIELD DPRSN TABLE DGVDT 'Лицо, на которое выписана доверенность (Ф.И.О. представителя Заказчика)'; DESCRIBE FIELD DDOC TABLE DGVDT 'Документ, удостоверяющий представителя Заказчика'; DESCRIBE FIELD SUBSCRIBE TABLE DGVDT 'Признак "Подписано"'; DESCRIBE FIELD CURRTYP TABLE DGVDT 'Тип валюты (импорт) ссылка на поле ID таблицы CURRTYP'; DESCRIBE FIELD CSUMMA TABLE DGVDT 'Сумма в валюте (импорт)'; DESCRIBE FIELD SCSUMMA TABLE DGVDT 'Сумма оплаты в валюте (импорт)'; DESCRIBE FIELD SNAMEID TABLE DGVDT 'Плательщик (ссылка на поле ID таблицы ORGN)'; DESCRIBE FIELD CURS TABLE DGVDT 'Курс валюты (продажа на экспорт)'; DESCRIBE FIELD OURACCNID TABLE DGVDT 'Расчетный счет (наш) - ссылка на ORGNBANKACCN'; DESCRIBE FIELD ACCNORGID TABLE DGVDT 'Расчетный счет Заказчика (Получателя) Ссылка на поле ID таблицы ORGNBANKACCN'; DESCRIBE FIELD ZID TABLE DGVDT 'Ссылка на заказ (Производство)'; DESCRIBE FIELD DCRDNBR TABLE DGVDT '№ дисконтной карты'; DESCRIBE FIELD SALEKTID TABLE DGVDT 'При возврате товара Поставщику - ссылка на "оплату" с суммой возвращенного товара (на поле ID таблицы SALEKT)'; DESCRIBE FIELD STOROUT TABLE DGVDT 'Отметка кладовщика - "Выдано" (см. поля: KUSERID, KLASTEDIT)'; DESCRIBE FIELD STORMOD TABLE DGVDT 'Отметка кладовщика - "Изменено": Накладная изменена, после того как кладовщик поставил "Выдано"'; DESCRIBE FIELD STORSUB TABLE DGVDT '"Утверждено" - для отметки кладовщика'; DESCRIBE FIELD ORGNINFOID TABLE DGVDT 'Ссылка на договор'; DESCRIBE FIELD TRDPID TABLE DGVDT 'Торговая точка'; DESCRIBE FIELD CSDTKTHBID TABLE DGVDT 'Ссылка на категорию задолженности'; DESCRIBE FIELD SZID TABLE DGVDT 'Ссылка на складской заказ'; DESCRIBE FIELD SC_REMO TABLE DGVDT 'Признак - в сервисном центре проведен ремонт'; DESCRIBE FIELD MARK TABLE DGVDT 'Поле для временных пометок'; DESCRIBE FIELD KUSERID TABLE DGVDT 'Пользователь-кладовщик (см. поля: KLASTEDIT, STOROUT)'; DESCRIBE FIELD KLASTEDIT TABLE DGVDT 'Дата/время изменения отметки кладовщика (см поля: KUSERID, STOROUT, STORMOD)'; DESCRIBE FIELD STATE TABLE DGVDT 'Статус (побитно): 0 - распечатан чек на ЭККА 1 - оригинал доверенности 2 - оригинал расх. накладной'; DESCRIBE FIELD TRANSFER TABLE DGVDT 'Доставка (описание)'; DESCRIBE FIELD CODE TABLE DGVDT 'Код документа'; DESCRIBE FIELD TRANSORGNID TABLE DGVDT 'Перевозчик (Автопредприятие)'; DESCRIBE FIELD TRANSDOCNBR TABLE DGVDT 'Номер путевого листа'; DESCRIBE FIELD DRDOCNBR TABLE DGVDT '№ водительского удостоверения'; DESCRIBE FIELD TRANSSUMMA TABLE DGVDT 'Стоимость транспортировки (доставки)'; DESCRIBE FIELD DRIVER_NAME TABLE DGVDT 'Водитель'; DESCRIBE FIELD VEHICLE_NAME TABLE DGVDT 'Автомобиль (марка)'; DESCRIBE FIELD VEHICLE1_NAME TABLE DGVDT 'Прицеп 1 (марка)'; DESCRIBE FIELD VEHICLE2_NAME TABLE DGVDT 'Прицеп 2 (марка)'; DESCRIBE FIELD VEHICLE_NBR TABLE DGVDT 'Автомобиль (гос. номер)'; DESCRIBE FIELD VEHICLE1_NBR TABLE DGVDT 'Прицеп 1 (гос. номер)'; DESCRIBE FIELD VEHICLE2_NBR TABLE DGVDT 'Прицеп 2 (гос. номер)'; DESCRIBE FIELD EGRNN TABLE DGVDT 'Признак - налоговая накладная включена в ЕГРНН (Единый государственный реестр налоговых накладных)'; DESCRIBE FIELD ROUNDNDS TABLE DGVDT 'Признак - Округление НДС'; DESCRIBE FIELD KNNNBR TABLE DGVDT '№ корректировки к налоговой накладной'; DESCRIBE FIELD KNNDATE TABLE DGVDT 'Дата корректировки к налоговой накладной'; DESCRIBE FIELD KEGRNN TABLE DGVDT 'Признак - корректировка к налоговой накладной включена в ЕГРНН'; DESCRIBE FIELD BONUSPROC TABLE DGVDT '% Бонуса (Дисконт)'; DESCRIBE FIELD NO_LASTEDIT TABLE DGVDT 'Признак - не обновлять пользователя и дату модификации (при установке =1). Триггер после отработки автоматически сбрасывает это поле в 0.'; DESCRIBE FIELD NO_VALID TABLE DGVDT 'Признак расхождения с учетом кладовщика'; DESCRIBE FIELD EMAIL_STATE TABLE DGVDT 'Статус оповещения по e-mail: 0 - не отправлено 1 - оповещение отправлено успешно 2 - N/A отключена система оповещений 3 - не указан e-mail получателя 4 - ошибка при отправке'; DESCRIBE FIELD USERNAME TABLE DGVDT 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE DGVDT 'Дата / время последней модификации записи'; DESCRIBE FIELD DGVTYP TABLE DGVDTKT_LOG '1 - приход товара 2 - расход товара'; DESCRIBE FIELD ID TABLE DGVDTU 'Уникальный код записи'; DESCRIBE FIELD DGVID TABLE DGVDTU 'Ссылка на договор (на поле ID таблицы DGVDTUD)'; DESCRIBE FIELD DAT_ TABLE DGVDTU 'Дата выписки'; DESCRIBE FIELD NBR TABLE DGVDTU '№ документа'; DESCRIBE FIELD BSUMMA TABLE DGVDTU 'Базовая сумма (без разчета налогов)'; DESCRIBE FIELD SUMMA TABLE DGVDTU 'Сумма'; DESCRIBE FIELD SALESUMMA TABLE DGVDTU 'Сумма оплаты'; DESCRIBE FIELD CSUMMA TABLE DGVDTU 'Сумма в валюте'; DESCRIBE FIELD SCSUMMA TABLE DGVDTU 'Сумма оплаты в валюте'; DESCRIBE FIELD CURRTYP TABLE DGVDTU 'Валюта (ссылка на поле ID таблицы CURRTYP)'; DESCRIBE FIELD NAMEID TABLE DGVDTU 'Заказчик (ссылка на поле ID таблицы ORGN)'; DESCRIBE FIELD SALEDATE TABLE DGVDTU 'Дата оплаты'; DESCRIBE FIELD COMMENT TABLE DGVDTU 'Примечание'; DESCRIBE FIELD PRSNID TABLE DGVDTU 'Сотрудник (ссылка на поле ID таблицы PERSONAL)'; DESCRIBE FIELD OPERID TABLE DGVDTU 'Код операции (ссылка на поле ID таблицы ACOPRLST)'; DESCRIBE FIELD OUT_DATE TABLE DGVDTU 'Дата исполнения'; DESCRIBE FIELD BDATE TABLE DGVDTU 'Дата начала выполнения работ'; DESCRIBE FIELD EDATE TABLE DGVDTU 'Дата окончания выполнения работ'; DESCRIBE FIELD NNBR TABLE DGVDTU '№ налоговой накладной'; DESCRIBE FIELD NDATE TABLE DGVDTU 'Дата налоговой накладной'; DESCRIBE FIELD ANBR TABLE DGVDTU '№ Акта'; DESCRIBE FIELD SALEFORM TABLE DGVDTU 'Форма оплаты'; DESCRIBE FIELD SALECOND TABLE DGVDTU 'Условие продажи'; DESCRIBE FIELD DESCRIPTION TABLE DGVDTU 'Описание'; DESCRIBE FIELD USERNAME TABLE DGVDTU 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE DGVDTU 'Дата/время последней модификации записи'; DESCRIBE FIELD ID TABLE DGVKT 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE DGVKT 'Дата оприходования'; DESCRIBE FIELD NBR TABLE DGVKT 'Номер документа'; DESCRIBE FIELD SUMMA TABLE DGVKT 'Сумма по накладной'; DESCRIBE FIELD STOR TABLE DGVKT 'Склад-получатель (ссылка на поле ID таблицы STORLIST)'; DESCRIBE FIELD TYP TABLE DGVKT 'Тип приходной накладной 0 - Оприходование от Поставщиков 1 - Внутренняя передача 2 - Возврат товара Заказчиком 3 - Переоценка Товара 4 - Оприходование Изделий из Производства (на склад готовой продукции) 5 - Оприходование Импорта'; DESCRIBE FIELD NBRC TABLE DGVKT 'Номер контракта (при импорте)'; DESCRIBE FIELD DAT_C TABLE DGVKT 'Дата контракта (импорт)'; DESCRIBE FIELD CURRTYP TABLE DGVKT 'Тип валюты (импорт)'; DESCRIBE FIELD TRNS TABLE DGVKT 'Импорт: Услуги (транспортные расходы) до границы (сумма в валюте)'; DESCRIBE FIELD DGVKEY TABLE DGVKT 'Привязка к расходной накладной: - для внутренних передач - расходная накладная со склада-источника - для переоценки - расходная накладная с исходным товаром - для возврата заказчиком - расходная накладная на реализацию - для оприходования изделий - расходная накладная на списание материалов'; DESCRIBE FIELD NAMEID TABLE DGVKT 'Контрагент-Поставщик (ссылка на поле ID таблицы ORGN)'; DESCRIBE FIELD STORID TABLE DGVKT 'Склад-Источник (при внутренней передаче, оприходовании изделий, переоценке)'; DESCRIBE FIELD TAMP TABLE DGVKT 'Импорт: Таможенные процедуры (сумма в валюте)'; DESCRIBE FIELD COMMENT TABLE DGVKT 'Примечание'; DESCRIBE FIELD SALESUMMA TABLE DGVKT 'Сумма Оплаты'; DESCRIBE FIELD SALEDATE TABLE DGVKT 'Дата Оплаты (последней)'; DESCRIBE FIELD PRSNID TABLE DGVKT 'Подотчетное Лицо (Сотрудник) - ссылка на поле ID таблицы PERSONAL'; DESCRIBE FIELD OPERID TABLE DGVKT 'Ссылка на Операцию (на поле ID таблицы ACOPRLST)'; DESCRIBE FIELD PODRID TABLE DGVKT 'Ссылка на подразделение (на всякий случай, вроде как не используется)'; DESCRIBE FIELD TAMS TABLE DGVKT 'Импорт: Таможенный сбор (в %)'; DESCRIBE FIELD TAMSG TABLE DGVKT 'Таможенный сбор сумма (грн.)'; DESCRIBE FIELD CSUMMA TABLE DGVKT 'Сумма в валюте (импорт)'; DESCRIBE FIELD SCSUMMA TABLE DGVKT 'Сумма оплаты в валюте (импорт)'; DESCRIBE FIELD TNDS TABLE DGVKT 'НДС по сумме услуг внутри страны (для импорта)'; DESCRIBE FIELD TRNG TABLE DGVKT 'Сумма услуг внутри страны (для импорта)'; DESCRIBE FIELD CURS TABLE DGVKT 'Курс валюты (импорт)'; DESCRIBE FIELD TRNGTYP TABLE DGVKT 'Импорт: Алгоритм распределения услуг при расчете себестоимости: 0 - По весу Брутто 1 - По Контрактной Стоимости (по Ценам Поставщика) 2 - По Количеству'; DESCRIBE FIELD TPRICETYP TABLE DGVKT 'Таможенная стоимость (импорт): 0 - расчет (фактурная + услуги до границы) 1 - вводится вручную (включает услуги)'; DESCRIBE FIELD ZID TABLE DGVKT 'Ссылка на Заказ (в Производство) - на поле ID таблицы WORKZAKAZ'; DESCRIBE FIELD TORGNID TABLE DGVKT 'Импорт: Ссылка на Контрагента, принимающего таможенные платежи (таможня) - на поле ID таблицы ORGN'; DESCRIBE FIELD NDATE TABLE DGVKT 'Дата налоговой накладной'; DESCRIBE FIELD NNBR TABLE DGVKT '№ налоговой накладной'; DESCRIBE FIELD STOROUT TABLE DGVKT 'Отметка кладовщика - "приход товара"'; DESCRIBE FIELD STORMOD TABLE DGVKT 'Отметка кладовщика - "изменено"'; DESCRIBE FIELD STORSUB TABLE DGVKT '"Утверждено" - для отметки кладовщика'; DESCRIBE FIELD MARK TABLE DGVKT 'Временный маркер'; DESCRIBE FIELD CALCNDS TABLE DGVKT 'Признак - рассчитывать НДС'; DESCRIBE FIELD PROCNDS TABLE DGVKT 'Ставка НДС (%)'; DESCRIBE FIELD SKIDKATYP TABLE DGVKT 'Тип скидки: 0 - по ценам с НДС 1 - по ценам без НДС'; DESCRIBE FIELD SKIDKASUMMA TABLE DGVKT 'Скидка (по сумме)'; DESCRIBE FIELD SKIDKAPROC TABLE DGVKT 'Скидка (%)'; DESCRIBE FIELD CODE TABLE DGVKT 'Код документа'; DESCRIBE FIELD NO_LASTEDIT TABLE DGVKT 'Признак - не обновлять пользователя и дату модификации (при установке =1). Триггер после отработки автоматически сбрасывает это поле в 0.'; DESCRIBE FIELD NO_VALID TABLE DGVKT 'Признак расхождения с учетом кладовщика'; DESCRIBE FIELD V_DGVDTID TABLE DGVKT 'Корректирующая накладная на списание излишков'; DESCRIBE FIELD V_DGVKTID TABLE DGVKT 'Корректирующая накладная на дооприходование недостачи'; DESCRIBE FIELD ZPOSNO TABLE DGVKT '№ п/п (в произв. заказе)'; DESCRIBE FIELD TRANSFER TABLE DGVKT 'Доставка'; DESCRIBE FIELD EMAIL_STATE TABLE DGVKT 'Статус оповещения по e-mail: 0 - не отправлено 1 - оповещение отправлено успешно 2 - N/A отключена система оповещений 3 - не указан e-mail получателя 4 - ошибка при отправке'; DESCRIBE FIELD USERNAME TABLE DGVKT 'Имя Пользователя'; DESCRIBE FIELD LASTEDIT TABLE DGVKT 'Дата / время последней модификации записи'; DESCRIBE FIELD ID TABLE DGVKTU 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE DGVKTU 'Дата выписки'; DESCRIBE FIELD NAMEID TABLE DGVKTU 'Контрагент (ссылка на поле ID таблицы ORGN)'; DESCRIBE FIELD SUMMA TABLE DGVKTU 'Сумма'; DESCRIBE FIELD COMMENT TABLE DGVKTU 'Примечание'; DESCRIBE FIELD SALEDATE TABLE DGVKTU 'Дата оплаты (последней)'; DESCRIBE FIELD SALESUMMA TABLE DGVKTU 'Сумма оплаты (текущая)'; DESCRIBE FIELD IN_DATE TABLE DGVKTU 'Дата выполнения услуг / работ'; DESCRIBE FIELD NBR TABLE DGVKTU '№ документа'; DESCRIBE FIELD OPERID TABLE DGVKTU 'Ссылка на операцию (на поле ID таблицы ACOPRLST)'; DESCRIBE FIELD PRSNID TABLE DGVKTU 'Сотрудник (ссылка на поле ID таблицы PERSONAL)'; DESCRIBE FIELD CTYP TABLE DGVKTU 'Признак Акта в валюте (импорт) 0 - в национальной валюте 1 - в иностранной валюте'; DESCRIBE FIELD SERVID TABLE DGVKTU 'Ссылка на вид работ / услуг (на поле ID таблицы HBKTSU)'; DESCRIBE FIELD CURS TABLE DGVKTU 'Курс валюты (импорт)'; DESCRIBE FIELD CSUMMA TABLE DGVKTU 'Сумма в валюте (импорт)'; DESCRIBE FIELD CURRTYP TABLE DGVKTU 'Тип валюты (при импорте) - ссылка на поле ID таблицы CURRTYP'; DESCRIBE FIELD SCSUMMA TABLE DGVKTU 'Сумма оплаты в валюте (импорт)'; DESCRIBE FIELD CALCNDS TABLE DGVKTU 'Признак - Авто-расчет НДС'; DESCRIBE FIELD USERNAME TABLE DGVKTU 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE DGVKTU 'Дата / время последней модификации записи'; DESCRIBE FIELD ID TABLE DGVSUM 'Вспомогательная таблица'; DESCRIBE FIELD CNTSUM TABLE DKBILL 'Общее количество чашек'; DESCRIBE FIELD CRDCNTBEG TABLE DKBILL 'Карточки (кол-во на начало)'; DESCRIBE FIELD CRDCNTINP TABLE DKBILL 'Карточки (приход)'; DESCRIBE FIELD CRDCNTRET TABLE DKBILL 'Карточки (возврат)'; DESCRIBE FIELD CRDCNTOUT TABLE DKBILL 'Карточки (расход)'; DESCRIBE FIELD CRDCNTEND TABLE DKBILL 'Карточки (кол-во на конец)'; DESCRIBE FIELD DGVDTINTRID TABLE DKBILL 'Накладная на передачу сырья в производство (внутренняя передача)'; DESCRIBE FIELD DGVDTREALID TABLE DKBILL 'Накладная на реализацию'; DESCRIBE FIELD DGVDT_TMCID TABLE DKBILL 'Накладная на списание ТМЦ'; DESCRIBE FIELD ORGNID TABLE DKBILL 'Контрагент (для накладной на реализацию товара)'; DESCRIBE FIELD OPERINTRID TABLE DKBILL 'Операция на передачу сырья в производство'; DESCRIBE FIELD OPERREALID TABLE DKBILL 'Операция - реализация товара'; DESCRIBE FIELD OPER_TMCID TABLE DKBILL 'Операция - списание ТМЦ'; DESCRIBE FIELD QUANTINP TABLE DKBILLGDS 'Приход'; DESCRIBE FIELD PRICE TABLE DKBILLGDS 'Цена реализации'; DESCRIBE FIELD QUANT1 TABLE DKBILLGDS 'Продажа'; DESCRIBE FIELD QUANT2 TABLE DKBILLGDS 'Реклама'; DESCRIBE FIELD QUANT3 TABLE DKBILLGDS 'Возврат'; DESCRIBE FIELD QUANT4 TABLE DKBILLGDS 'мы (собств. потребление)'; DESCRIBE FIELD QUANT5 TABLE DKBILLGDS 'испортили'; DESCRIBE FIELD QUANT6 TABLE DKBILLGDS 'угостили'; DESCRIBE FIELD QUANT7 TABLE DKBILLGDS 'соседи'; DESCRIBE FIELD QNTBEG TABLE DKBILLGDS 'Остаток на начало'; DESCRIBE FIELD QNTEND TABLE DKBILLGDS 'Остаток на конец'; DESCRIBE FIELD NORMINP TABLE DKBILLGDS 'Введенная норма (справочная)'; DESCRIBE FIELD NORMCALC TABLE DKBILLGDS 'Норма (реальная расчетная)'; DESCRIBE FIELD QUANTDECOR TABLE DKBILLGDS 'Декорация'; DESCRIBE FIELD ID TABLE DK_ACCESSCOMMAND 'Уникальны идентификатор.'; DESCRIBE FIELD NAME TABLE DK_ACCESSCOMMAND 'Уникальное имя.'; DESCRIBE FIELD USERNAME TABLE DK_ACCESSCOMMAND 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_ACCESSCOMMAND 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_ACCESSCOMMAND 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD ID TABLE DK_ACCESSCOMMANDUSERREF 'Уникальны идентификатор.'; DESCRIBE FIELD USERNAME TABLE DK_ACCESSCOMMANDUSERREF 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_ACCESSCOMMANDUSERREF 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_ACCESSCOMMANDUSERREF 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD ID TABLE DK_ACCESSDATA 'Уникальны идентификатор.'; DESCRIBE FIELD NAME TABLE DK_ACCESSDATA 'Уникальное имя.'; DESCRIBE FIELD USERNAME TABLE DK_ACCESSDATA 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_ACCESSDATA 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_ACCESSDATA 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD ID TABLE DK_ACCESSDATAUSERREF 'Уникальны идентификатор.'; DESCRIBE FIELD USERNAME TABLE DK_ACCESSDATAUSERREF 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_ACCESSDATAUSERREF 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_ACCESSDATAUSERREF 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD NAME TABLE DK_BNS 'Наименование бонуса'; DESCRIBE FIELD VAL TABLE DK_BNS 'Значение бонуса (для операций размена)'; DESCRIBE FIELD CURRTYPID TABLE DK_BNS 'Ссылка на связанную валюту для определения курса обмена на денежные бонусы (кофе-гривны)'; DESCRIBE FIELD EXTERNALID TABLE DK_BNS 'Значение соответствует полю Id в таблице Bonuses процессингового центра'; DESCRIBE FIELD DK_BNS_ID TABLE DK_BNS_ORGN 'Ссылка на бонус (на поле ID таблицы DK_BNS)'; DESCRIBE FIELD ORGN_ID TABLE DK_BNS_ORGN 'Ссылка на организацию (клиента) (на поле ID таблицы ORGN)'; DESCRIBE FIELD CNT TABLE DK_BNS_ORGN 'Количество бонусов'; DESCRIBE FIELD DK_BNS_ORGN_ID TABLE DK_BNS_ORGN_LOG 'Ссылка на бонус организации (клиента) (на поле ID таблицы DK_BNS_ORGN)'; DESCRIBE FIELD SZID TABLE DK_BNS_ORGN_LOG 'Ссылка на заказ, связанный с бонусной операцией (на поле ID таблицы STORZAKAZDT)'; DESCRIBE FIELD VAL TABLE DK_BNS_ORGN_LOG 'Пользователь, совершивший операцию'; DESCRIBE FIELD USERNAME TABLE DK_BNS_ORGN_LOG 'Пользователь, совершивший операцию'; DESCRIBE FIELD LASTEDIT TABLE DK_BNS_ORGN_LOG 'Дата последнего редактирования'; DESCRIBE FIELD DK_BNS_ID TABLE DK_BNS_PRICEGOODS 'Ссылка на бонус (на поле ID таблицы DK_BNS)'; DESCRIBE FIELD PRICEGOODS_ID TABLE DK_BNS_PRICEGOODS 'Ссылка на позицию товара в прайслистах (на поле ID таблицы PRICEGOODS)'; DESCRIBE FIELD TYP TABLE DK_BNS_PRICEGOODS 'Тип зависимости бонуса и товара: 0 - выдача товара в обмен на бонусы, 1 - выдача бонусов при покупке товара'; DESCRIBE FIELD BNS_CNT TABLE DK_BNS_PRICEGOODS 'Количество бонусов'; DESCRIBE FIELD PRICEGOODS_CNT TABLE DK_BNS_PRICEGOODS 'Количество товара'; DESCRIBE FIELD ID TABLE DK_BONUSACCRUAL 'Уникальны идентификатор.'; DESCRIBE FIELD BONUSID TABLE DK_BONUSACCRUAL 'Ссылка на таблицу DK_BNS.'; DESCRIBE FIELD VAL TABLE DK_BONUSACCRUAL 'Значение на численных бонусов.'; DESCRIBE FIELD USERNAME TABLE DK_BONUSACCRUAL 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD LASTEDIT TABLE DK_BONUSACCRUAL 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD CREATED TABLE DK_BONUSACCRUAL 'Время создания записи.'; DESCRIBE FIELD ID TABLE DK_COMMAND 'Уникальны идентификатор.'; DESCRIBE FIELD NAME TABLE DK_COMMAND 'Уникальное имя.'; DESCRIBE FIELD USERNAME TABLE DK_COMMAND 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_COMMAND 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_COMMAND 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD ID TABLE DK_DATA 'Уникальны идентификатор.'; DESCRIBE FIELD NAME TABLE DK_DATA 'Уникальное имя.'; DESCRIBE FIELD USERNAME TABLE DK_DATA 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_DATA 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_DATA 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD ID TABLE DK_DISCOUNTBONUSSETGOODS 'Идентификатор'; DESCRIBE FIELD DISCOUNTBONUSSETID TABLE DK_DISCOUNTBONUSSETGOODS 'Идентификатор набора скидок и бонусов'; DESCRIBE FIELD GOODSGROUPID TABLE DK_DISCOUNTBONUSSETGOODS 'Идентификатор группы товаров (таблица GOODSGROUPS)'; DESCRIBE FIELD GOODSCATEGORYID TABLE DK_DISCOUNTBONUSSETGOODS 'Идентификатор категории товаров (таблица GDSPARAMVAL)'; DESCRIBE FIELD GOODSSETID TABLE DK_DISCOUNTBONUSSETGOODS 'Идентификатор комплекта товаров (таблица GOODS)'; DESCRIBE FIELD GOODSID TABLE DK_DISCOUNTBONUSSETGOODS 'Идентификатор товара (таблица GOODS)'; DESCRIBE FIELD PRICELISTID TABLE DK_DISCOUNTBONUSSETGOODS 'Идентификатор прайс-листа'; DESCRIBE FIELD ID TABLE DK_DISCOUNTBONUSSETORGN 'Идентификатор'; DESCRIBE FIELD DISCOUNTBONUSSETID TABLE DK_DISCOUNTBONUSSETORGN 'Идентификатор набора скидок и бонусов'; DESCRIBE FIELD ORGANIZATIONGROUPID TABLE DK_DISCOUNTBONUSSETORGN 'Идентификатор группы организаций (таблица ORGN_GRP)'; DESCRIBE FIELD ORGANIZATIONID TABLE DK_DISCOUNTBONUSSETORGN 'Идентификатор организации (таблица ORGN)'; DESCRIBE FIELD ID TABLE DK_DISCOUNTBONUSSETS 'Идентификатор набора'; DESCRIBE FIELD NAME TABLE DK_DISCOUNTBONUSSETS 'Наименование набора'; DESCRIBE FIELD DAYSOFWEEK TABLE DK_DISCOUNTBONUSSETS 'Дни недели (порядковые номера дней в неделе)'; DESCRIBE FIELD PERIODBEGIN TABLE DK_DISCOUNTBONUSSETS 'Дата начала периода'; DESCRIBE FIELD PERIODEND TABLE DK_DISCOUNTBONUSSETS 'Дата окончания периода'; DESCRIBE FIELD FROMTIME TABLE DK_DISCOUNTBONUSSETS 'Время, с которого применяется текущий набор скидок и бонусов.'; DESCRIBE FIELD TOTIME TABLE DK_DISCOUNTBONUSSETS 'Время, до которого применяется текущий набор скидок и бонусов.'; DESCRIBE FIELD GOAL TABLE DK_DISCOUNTBONUSSETS 'Цель набора скидок и бонусов'; DESCRIBE FIELD "TYPE" TABLE DK_DISCOUNTBONUSSETS 'Тип набора: 0 - Скидка, %; 1 - Скидка, сумма; 2 - Начисляемые бонус деньги, %; 3 - Начисляемые бонус деньги, сумма.'; DESCRIBE FIELD VAL TABLE DK_DISCOUNTBONUSSETS 'Значение (%, сумма)'; DESCRIBE FIELD STATE TABLE DK_DISCOUNTBONUSSETS 'Состояние набора: -1 - Удален; 0 - Не активен; 1 - Активен.'; DESCRIBE FIELD USERNAME TABLE DK_DISCOUNTBONUSSETS 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE DK_DISCOUNTBONUSSETS 'Дата / время последней модификации записи'; DESCRIBE FIELD QUANTITY TABLE DK_DISCOUNTBONUSSETS 'Количество'; DESCRIBE FIELD PARENTID TABLE DK_DISCOUNTBONUSSETS 'Идентификатор родительского набора скидок (для зависимых наборов)'; DESCRIBE FIELD ISMARKUP TABLE DK_DISCOUNTBONUSSETS 'Является ли наценкой: 0 - Нет 1 - Наценка'; DESCRIBE FIELD ID TABLE DK_DISCOUNTBONUSSETSTORGRP 'Идентификатор'; DESCRIBE FIELD DISCOUNTBONUSSETID TABLE DK_DISCOUNTBONUSSETSTORGRP 'Идентификатор набора скидок и бонусов'; DESCRIBE FIELD STOREGROUPID TABLE DK_DISCOUNTBONUSSETSTORGRP 'Идентификатор группы складов'; DESCRIBE FIELD NAME TABLE DK_DSCNT 'Наименование скидки'; DESCRIBE FIELD VAL TABLE DK_DSCNT 'Процентное значение скидки'; DESCRIBE FIELD TYP TABLE DK_DSCNT 'Типы скиодк: 0 - обычная скижка 1 - скидка за покупку определенного количество товара конкретной категории товаров'; DESCRIBE FIELD GDS_CTGR_FROM_ID TABLE DK_DSCNT 'Категория товаров, за покупку которых назначается скидка'; DESCRIBE FIELD GDS_CNT TABLE DK_DSCNT 'Количество товаров, которое необходимо купить, что бы получить скидку (за предыдущий месяц или за текущий заказ)'; DESCRIBE FIELD GDS_CTGR_TO_ID TABLE DK_DSCNT 'Категория товаров на которые распространяется скидка'; DESCRIBE FIELD TYP TABLE DK_GIFTCERTIFICATE '0 - OUT - Сертификат продали; 1 - IN - Сертификатом оплатили заказ;'; DESCRIBE FIELD BARCODE TABLE DK_GIFTCERTIFICATE 'Штрих-код сертификата'; DESCRIBE FIELD PRICE TABLE DK_GIFTCERTIFICATE 'Номинальная стоимость сертификата'; DESCRIBE FIELD ID TABLE DK_GOODSLANGUAGEREF 'Уникальны идентификатор.'; DESCRIBE FIELD USERNAME TABLE DK_GOODSLANGUAGEREF 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD LASTEDIT TABLE DK_GOODSLANGUAGEREF 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD CREATED TABLE DK_GOODSLANGUAGEREF 'Время создания записи.'; DESCRIBE FIELD GDSID TABLE DK_GOODSPACK 'ID товара'; DESCRIBE FIELD COD TABLE DK_GOODSPACK 'Код упаковки'; DESCRIBE FIELD NAME TABLE DK_GOODSPACK 'Наименование'; DESCRIBE FIELD QNT TABLE DK_GOODSPACK 'Количество в упаковке'; DESCRIBE FIELD BARCODE TABLE DK_GOODSPACK 'Штрих-код'; DESCRIBE FIELD DESCRIPTION TABLE DK_GOODSPACK 'Описание'; DESCRIBE FIELD USERNAME TABLE DK_GOODSPACK 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE DK_GOODSPACK 'Дата / время последней модификации записи'; DESCRIBE FIELD ID TABLE DK_LANGUAGE 'Уникальны идентификатор.'; DESCRIBE FIELD NAME TABLE DK_LANGUAGE 'Уникальное имя.'; DESCRIBE FIELD CULTURE TABLE DK_LANGUAGE 'Код языка.'; DESCRIBE FIELD USERNAME TABLE DK_LANGUAGE 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD LASTEDIT TABLE DK_LANGUAGE 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD CREATED TABLE DK_LANGUAGE 'Время создания записи.'; DESCRIBE FIELD ID TABLE DK_MAILINGTHEMES 'Уникальны идентификатор.'; DESCRIBE FIELD NAME TABLE DK_MAILINGTHEMES 'Уникальное имя.'; DESCRIBE FIELD USERNAME TABLE DK_MAILINGTHEMES 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_MAILINGTHEMES 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_MAILINGTHEMES 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD ID TABLE DK_MAILINGTYPES 'Уникальны идентификатор.'; DESCRIBE FIELD NAME TABLE DK_MAILINGTYPES 'Уникальное имя.'; DESCRIBE FIELD USERNAME TABLE DK_MAILINGTYPES 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_MAILINGTYPES 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_MAILINGTYPES 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD ORGNID TABLE DK_MAILTHEMETYPESORGNREF 'Подписчик.'; DESCRIBE FIELD THEMEID TABLE DK_MAILTHEMETYPESORGNREF 'Тема.'; DESCRIBE FIELD SUBSCRIPTION TABLE DK_MAILTHEMETYPESORGNREF 'Признак подписан клиент 0 - нет 1 - да'; DESCRIBE FIELD USERNAME TABLE DK_MAILTHEMETYPESORGNREF 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_MAILTHEMETYPESORGNREF 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_MAILTHEMETYPESORGNREF 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD TYPEID TABLE DK_MAILTHEMETYPESORGNREF 'Тип 0 - Email 1 - SMS.'; DESCRIBE FIELD ORGNID TABLE DK_MAILTYPEORGNREF 'Подписчик.'; DESCRIBE FIELD TYPEID TABLE DK_MAILTYPEORGNREF 'Тип 0 - Email 1 - SMS.'; DESCRIBE FIELD SUBSCRIPTION TABLE DK_MAILTYPEORGNREF 'Признак подписан клиент 0 - нет 1 - да'; DESCRIBE FIELD USERNAME TABLE DK_MAILTYPEORGNREF 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_MAILTYPEORGNREF 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_MAILTYPEORGNREF 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD ID TABLE DK_PENALPROITY 'Уникальны идентификатор.'; DESCRIBE FIELD USERNAME TABLE DK_PENALPROITY 'Имя пользователя который последний раз изменял или создал запись.'; DESCRIBE FIELD CREATED TABLE DK_PENALPROITY 'Время создания записи.'; DESCRIBE FIELD LASTEDIT TABLE DK_PENALPROITY 'Время последнего изменения записи, если запись не изменялась значение совпадает с датой создания.'; DESCRIBE FIELD TYP TABLE DOCCOMMENT ' rbProDoc_DgvKt = 1; // Счета кредиторов (прих. накладные) rbProDoc_DgvDt = 2; // Счета дебиторов (расх. накладные) rbProDoc_DgvDtU = 3; // Акты на оказание работ/услуг rbProDoc_DgvDtUD = 4; // Договора на оказание работ/услуг rbProDoc_SaleKt = 5; // Кредиторы: Платежные документы RbProDoc_KassInp = 7; // Приходные кассовые ордера RbProDoc_KassOut = 8; // Расходные кассовые ордера rbProDoc_ZpltRpt = 9; // ЗарПлата: Ведомости rbProDoc_MbpCard = 10; // МБП: Карточка учета RbProDoc_KassDay = 11; // Касса: Отчеты за день rbProDoc_DgvKtU = 12; // Кредиторы: Акты на прием услуг/работ rbProDoc_MbpDgv = 13; // МБП: Накладные rbProDoc_Price = 14; // Склад: Прайс-лист rbProDoc_InvOpis = 15; // Склад: Инвентарная опись rbProDoc_KassAV = 16; // Касса: Авансовые Отчеты rbProDoc_Bdgt = 17; // бюджет rbProDoc_StorZakaz = 18; //Складские заказы для ShopSeller типы неплательщиков'; DESCRIBE FIELD OURORGNID TABLE DOCMCATEGORY 'Предприятие'; DESCRIBE FIELD NAME TABLE DOCMCATEGORY 'Наименование категории'; DESCRIBE FIELD CHECK_ACT TABLE DOCMCATEGORY 'Признак - "активная категория"'; DESCRIBE FIELD OURORGNID TABLE DOCMDOCDOCUMENT 'Предприятие'; DESCRIBE FIELD FOLDERID TABLE DOCMDOCDOCUMENT 'Папка'; DESCRIBE FIELD NAME TABLE DOCMDOCDOCUMENT 'Наименование документа (по умолчанию устанавливается в имя файла)'; DESCRIBE FIELD DESCRIPTION TABLE DOCMDOCDOCUMENT 'Описание'; DESCRIBE FIELD COMMENT TABLE DOCMDOCDOCUMENT 'Примечание'; DESCRIBE FIELD BODY TABLE DOCMDOCDOCUMENT 'Содержимое документа'; DESCRIBE FIELD FILESIZE TABLE DOCMDOCDOCUMENT 'Оригинальный размер'; DESCRIBE FIELD PACKSIZE TABLE DOCMDOCDOCUMENT 'Размер в упакованном виде'; DESCRIBE FIELD PACKTYPE TABLE DOCMDOCDOCUMENT 'Метод упаковки: 0 - без упаковки 1 - CAB 2 - ZIP (TZip) 3 - RAR 4 - ZIP (ZLIbEx)'; DESCRIBE FIELD FILECREATE TABLE DOCMDOCDOCUMENT 'Дата / время занесения'; DESCRIBE FIELD FILEMODIFY TABLE DOCMDOCDOCUMENT 'Дата / время редактирования документа'; DESCRIBE FIELD CREUSERID TABLE DOCMDOCDOCUMENT 'ID пользователя, который занес документ (создатель)'; DESCRIBE FIELD MODUSERID TABLE DOCMDOCDOCUMENT 'ID пользователя, который редактировал документ'; DESCRIBE FIELD FILENAME TABLE DOCMDOCDOCUMENT 'Имя файла (без пути)'; DESCRIBE FIELD FILETYPE TABLE DOCMDOCDOCUMENT 'Тип файла (расширение)'; DESCRIBE FIELD ORIGINFILENAME TABLE DOCMDOCDOCUMENT 'Имя оригинального файла (полный путь)'; DESCRIBE FIELD PARENTID TABLE DOCMDOCDOCUMENT 'Ссылка на предыдущую версию документа (при внесении изменений)'; DESCRIBE FIELD OURORGNID TABLE DOCMDOCFOLDER 'Предприятие'; DESCRIBE FIELD PARENTID TABLE DOCMDOCFOLDER 'Ссылка на родителя (в корневых папках = Null)'; DESCRIBE FIELD NAME TABLE DOCMDOCFOLDER 'Наименование папки'; DESCRIBE FIELD SYSTEM_FLAG TABLE DOCMDOCFOLDER '(на будущее - для особых типов)'; DESCRIBE FIELD OURORGNID TABLE DOCMGROUPS 'Предприятие'; DESCRIBE FIELD NAME TABLE DOCMGROUPS 'Наименование папки'; DESCRIBE FIELD PARENTID TABLE DOCMGROUPS 'Ссылка на родителя (для корневых папок = Null)'; DESCRIBE FIELD SUBJECT TABLE DOCMMSG 'Тема сообщения'; DESCRIBE FIELD BODY TABLE DOCMMSG 'Содержимое сообщения'; DESCRIBE FIELD SENDADDR TABLE DOCMMSG 'Адрес отправителя (e-mail)'; DESCRIBE FIELD SENDNAME TABLE DOCMMSG 'Имя отправителя'; DESCRIBE FIELD SENDUSERID TABLE DOCMMSG 'ID пользователя-отправителя'; DESCRIBE FIELD SENDDATETIME TABLE DOCMMSG 'Дата / время отправки сообщения'; DESCRIBE FIELD TASKID TABLE DOCMMSG 'ID задачи (если сообщение относится к задаче)'; DESCRIBE FIELD RECVCOUNT TABLE DOCMMSG 'Количество получателей данного сообщения'; DESCRIBE FIELD ATYPE TABLE DOCMMSG 'Тип сообщения: 0 - обычное 1 - постановка задачи (ее создание) 2 - изменена тема 3 - срок начала выполнения задачи 4 - срок завершения задачи (задача просрочена) 5 - исполнитель завершил задачу 6 - Изменено ответственное лицо задачи 7 - Изменён исполнитель задачи 8 - Изменён приоритет задачи 9 - Изменено планируемое время задачи 10 - Исполнитель принял задачу к рассмотрению'; DESCRIBE FIELD PARENTID TABLE DOCMMSGFOLDER 'Ссылка на родителя (для корневых папок = Null)'; DESCRIBE FIELD NAME TABLE DOCMMSGFOLDER 'Напменование папки'; DESCRIBE FIELD USERID TABLE DOCMMSGFOLDER 'ID пользователя-владельца имеет значение только для личных папок (ссылка на USERLIST) для системных папок = Null'; DESCRIBE FIELD SYSTEM_FLAG TABLE DOCMMSGFOLDER 'Признак системной папки: Inbox = -5 входящие сообщения Outbox = -4 исходящие сообщения Send = -3 отправленные Delete = -2 удаленные Draft = -1 черновики = 0 личная папка пользователя (см. поле USERID)'; DESCRIBE FIELD FOLDERID TABLE DOCMMSGRUSERS 'Папка (DOCMMSGFOLDER)'; DESCRIBE FIELD MSGID TABLE DOCMMSGRUSERS 'ID сообщения (DOCMMSG)'; DESCRIBE FIELD PARENTID TABLE DOCMMSGRUSERS 'Ссылка на предыдущее сообщение (если данное сообщение является ответом)'; DESCRIBE FIELD RUSERID TABLE DOCMMSGRUSERS 'ID получателя (USERLIST)'; DESCRIBE FIELD SENDDATETIME TABLE DOCMMSGRUSERS 'Дата / время отправки сообщения'; DESCRIBE FIELD RECVDATETIME TABLE DOCMMSGRUSERS 'Дата / время получения сообщения'; DESCRIBE FIELD READDATETIME TABLE DOCMMSGRUSERS 'Дата / время прочтения сообщения'; DESCRIBE FIELD RECVADDR TABLE DOCMMSGRUSERS 'Адрес получателя (e-mail)'; DESCRIBE FIELD RECVNAME TABLE DOCMMSGRUSERS 'Имя получателя'; DESCRIBE FIELD TYP TABLE DOCMTASK 'Тип: 0, Null - Типовая задача 1 - Доставка'; DESCRIBE FIELD GRPID TABLE DOCMTASK 'Ссылка на группу задач (DOCMGROUPS)'; DESCRIBE FIELD TASKID TABLE DOCMTASK 'Ссылка на главную задачу (для подзадачи/этапа)'; DESCRIBE FIELD SUBJECT TABLE DOCMTASK 'Тема задачи'; DESCRIBE FIELD DESCRIPTION TABLE DOCMTASK 'Описание'; DESCRIBE FIELD PRIORITY TABLE DOCMTASK 'Приоритет'; DESCRIBE FIELD STATE TABLE DOCMTASK 'Статус задачи: 0 - новая 1 - обр. связь 2 - отложена 3 - в работе 4 - решена (завершена) 5 - закрыта 6 - отклонена'; DESCRIBE FIELD IUSERID TABLE DOCMTASK 'Инициатор (пользователь)'; DESCRIBE FIELD MUSERID TABLE DOCMTASK 'Исполнитель'; DESCRIBE FIELD BDATE TABLE DOCMTASK 'Дата / время заказа (дата создания задачи)'; DESCRIBE FIELD SDATE TABLE DOCMTASK 'Дата / время начала выполнения задачи (план)'; DESCRIBE FIELD EDATE TABLE DOCMTASK 'Дата / время завершения (по плану)'; DESCRIBE FIELD WTIME TABLE DOCMTASK 'Объем работ (время) - по плану'; DESCRIBE FIELD FPROC TABLE DOCMTASK 'Процент выполнения'; DESCRIBE FIELD BFDATE TABLE DOCMTASK 'Дата / время начала работ - фактически'; DESCRIBE FIELD EFDATE TABLE DOCMTASK 'Дата / время завершения задачи - фактически'; DESCRIBE FIELD EFEDATE TABLE DOCMTASK 'Срок завершения плановый (исполнителем)'; DESCRIBE FIELD EFMDATE TABLE DOCMTASK 'Дата / время завершения задачи исполнителем'; DESCRIBE FIELD EFMEDITDATE TABLE DOCMTASK 'Дата / Время простановки исполнителем даты завершения задачи (EFMDATE)'; DESCRIBE FIELD FTIME TABLE DOCMTASK 'Затрачено (время) - фактически'; DESCRIBE FIELD PTIME TABLE DOCMTASK 'Оплачиваемое время'; DESCRIBE FIELD PPRICE TABLE DOCMTASK 'Расценка за работу'; DESCRIBE FIELD PUNITS TABLE DOCMTASK 'Ед. изм. (цена за работу) 0 - за 1 мин. 1 - за 1 час 2 - за 1 день'; DESCRIBE FIELD PSUMMA TABLE DOCMTASK 'Сумма оплаты'; DESCRIBE FIELD TASKCOLOR TABLE DOCMTASK 'Цвет'; DESCRIBE FIELD COMMENT TABLE DOCMTASK 'Примечание'; DESCRIBE FIELD ORGNID TABLE DOCMTASK 'Контрагент (получатель для доставки)'; DESCRIBE FIELD CONTACTID TABLE DOCMTASK 'Представитель контрагента-заказчика (CONTACTS)'; DESCRIBE FIELD ORGNINFOID TABLE DOCMTASK 'Ссылка на договор по контрагенту (ORGNINFO)'; DESCRIBE FIELD IS_ACCEPTED TABLE DOCMTASK '1 = Задача принята к сведению (рассмотрена) пользователем'; DESCRIBE FIELD GROU_ TABLE DOCMTASK '0 - обычная задача; 1 - группирующая задача (проект)'; DESCRIBE FIELD SOURCE_TYPE TABLE DOCMTASK 'Тип создания задачи: 0 - вручную 1 - из типовой'; DESCRIBE FIELD MUSER_CLOSE TABLE DOCMTASK 'признак закрытия исполнителем периода (1-открыл и не закрыл)'; DESCRIBE FIELD PSUMCOSTS TABLE DOCMTASK 'планируемые затраты'; DESCRIBE FIELD CYCLE TABLE DOCMTASK '0 - не циклическая 1 - циклическая'; DESCRIBE FIELD CYCLEID TABLE DOCMTASK 'ссылка на DOMCTASKCYCLE ID'; DESCRIBE FIELD RESULT_OK TABLE DOCMTASK 'Результат выполнения - подробно'; DESCRIBE FIELD RESULT_REFUSED TABLE DOCMTASK 'Причина отклонения - подробно'; DESCRIBE FIELD SENDORGNID TABLE DOCMTASK 'Отправитель (доставка)'; DESCRIBE FIELD TRANSORGNID TABLE DOCMTASK 'Перевозчик (доставка)'; DESCRIBE FIELD SALEORGNID TABLE DOCMTASK 'Плательщик (доставка)'; DESCRIBE FIELD RECEIVER TABLE DOCMTASK 'Получатель (доставка)'; DESCRIBE FIELD FORCE_SALE TABLE DOCMTASK 'Признак - Оплачено'; DESCRIBE FIELD DOCSINCL TABLE DOCMTASK 'Признак - С документами (Доставка)'; DESCRIBE FIELD NAME TABLE DOCMTASKATTACH 'Имя файла'; DESCRIBE FIELD ATTACHBODY TABLE DOCMTASKATTACH 'Содержимое файла'; DESCRIBE FIELD TASKID TABLE DOCMTASKATTACH 'ID задачи'; DESCRIBE FIELD ATTACHSIZE TABLE DOCMTASKATTACH 'Размер файла'; DESCRIBE FIELD USERID TABLE DOCMTASKATTACH 'ID пользователя'; DESCRIBE FIELD ADATE TABLE DOCMTASKATTACH 'Дата файла'; DESCRIBE FIELD TASKID TABLE DOCMTASKCATEGORY 'ID задачи (DOCMTASK)'; DESCRIBE FIELD CATEGORYID TABLE DOCMTASKCATEGORY 'ID категории (DOCMCATEGORY)'; DESCRIBE FIELD STAGE TABLE DOCMTASKCYCLE 'этапы повторения 0 - ежедневно 1 - еженедельно 2 - ежемесячно 3 - ежегодно 4 - понедельник 5 - вторник 6 - среда 7 - четверг 8 - пятница 9 - суббота'; DESCRIBE FIELD STAGEWEEKREPEAT TABLE DOCMTASKCYCLE 'номер недели для повтора 1,2,3,4'; DESCRIBE FIELD SDATE TABLE DOCMTASKCYCLE 'дата начала цикла'; DESCRIBE FIELD EDATE TABLE DOCMTASKCYCLE 'дата окончания цикла'; DESCRIBE FIELD REPEAT TABLE DOCMTASKCYCLE 'количество повторов до окончания'; DESCRIBE FIELD STAGEOVER TABLE DOCMTASKCYCLE 'ОКОНЧАНИЕ цикла: 0 - нет конечной даты 1 - завешить после ENDREPEAT количества повторов 2 - завершить в указанную дату EDATE'; DESCRIBE FIELD GENTASK TABLE DOCMTASKCYCLE 'время генерации до планируемого времени создания задачи'; DESCRIBE FIELD TASKSTAGE TABLE DOCMTASKCYCLE 'этапы генерации: 0 - день 1 - неделя 2 - месяц 3 - год'; DESCRIBE FIELD CR_DATE TABLE DOCMTASKCYCLE 'дата последней генерации для проверки на создание новой'; DESCRIBE FIELD CYCLE_ACT TABLE DOCMTASKCYCLE '0 - неактивен 1 - активен'; DESCRIBE FIELD TASKID TABLE DOCMTASKFINANCE 'Задача'; DESCRIBE FIELD DAT_ TABLE DOCMTASKFINANCE 'Дата'; DESCRIBE FIELD SUMMA TABLE DOCMTASKFINANCE 'Сумма'; DESCRIBE FIELD ORGNID TABLE DOCMTASKFINANCE 'Контрагент (организация)'; DESCRIBE FIELD USERID TABLE DOCMTASKFINANCE 'Пользователь'; DESCRIBE FIELD COMMENT TABLE DOCMTASKFINANCE 'Примечание'; DESCRIBE FIELD GRPID TABLE DOCMTASKHB 'Ссылка на группу задач'; DESCRIBE FIELD TASKID TABLE DOCMTASKHB 'Ссылка на главную задачу (для подзадач)'; DESCRIBE FIELD SUBJECT TABLE DOCMTASKHB 'Тема'; DESCRIBE FIELD DESCRIPTION TABLE DOCMTASKHB 'Описание'; DESCRIBE FIELD MUSERID TABLE DOCMTASKHB 'Ответственный'; DESCRIBE FIELD PRIORITY TABLE DOCMTASKHB 'Приоритет'; DESCRIBE FIELD TASKCOLOR TABLE DOCMTASKHB 'Цвет'; DESCRIBE FIELD COMMENT TABLE DOCMTASKHB 'Примечание'; DESCRIBE FIELD WTIME TABLE DOCMTASKHB 'Планируемое время исполнения (трудозатраты)'; DESCRIBE FIELD NAME TABLE DOCMTASKSTAGE 'Наименование этапа'; DESCRIBE FIELD IUSERID TABLE DOCMTASKSTAGE 'Инициатор'; DESCRIBE FIELD RUSERID TABLE DOCMTASKSTAGE 'Исполнитель (получатель)'; DESCRIBE FIELD SENDDATETIME TABLE DOCMTASKSTAGE 'Отправлено (дата / время)'; DESCRIBE FIELD READDATETIME TABLE DOCMTASKSTAGE 'Исполнитель ознакомлен (дата / время)'; DESCRIBE FIELD CLOSEDATETIME TABLE DOCMTASKSTAGE 'Этап завершен исполнителем (возможно с отменой) (дата / время)'; DESCRIBE FIELD COMMITDATETIME TABLE DOCMTASKSTAGE 'Этап утвержден инициатором - закрытый этап (дата / время)'; DESCRIBE FIELD ICOMMENT TABLE DOCMTASKSTAGE 'Примечание (описание) инициатора'; DESCRIBE FIELD RCOMMENT TABLE DOCMTASKSTAGE 'Примечание (описание) исполнителя'; DESCRIBE FIELD STAGEREAD TABLE DOCMTASKSTAGE 'Исполнитель ознакомлен с этапом (признак) = 0 - не ознакомлен = 1 - ознакомлен'; DESCRIBE FIELD STAGECLOSE TABLE DOCMTASKSTAGE 'Этап закрыт исполнителем (признак) = 0 - не закрыт = 1 - закрыт'; DESCRIBE FIELD STAGEABORT TABLE DOCMTASKSTAGE 'Этап отменен исполнителем (признак) = 0 - не отменен = 1 - отменен'; DESCRIBE FIELD STAGECOMMIT TABLE DOCMTASKSTAGE 'Закрытый / отмененный этап утвержден инициатором'; DESCRIBE FIELD IPRIORITY TABLE DOCMTASKSTAGE 'Приоритет инициатора'; DESCRIBE FIELD RPRIORITY TABLE DOCMTASKSTAGE 'Приоритет исполнителя'; DESCRIBE FIELD WTIME TABLE DOCMTASKSTAGE 'Трудоемкость (в ч.) (TDateTime)'; DESCRIBE FIELD EUSERID TABLE DOCMTASKWORK 'Исполнитель'; DESCRIBE FIELD ID TABLE ECRGOODS 'Уникальный код записи Код (Артикул) заносимый в память ЭККА'; DESCRIBE FIELD GODSID TABLE ECRGOODS 'Ссылка на оригинальное наименование товара в справочнике (GOODS)'; DESCRIBE FIELD NAME1 TABLE ECRGOODS 'Начальная часть наименования товара'; DESCRIBE FIELD NAME2 TABLE ECRGOODS 'Дополнение наименования товара'; DESCRIBE FIELD TYPQNT TABLE ECRGOODS 'Признак количества: 0 - дробное 1 - целое'; DESCRIBE FIELD PROCNDS TABLE ECRGOODS 'Ставка НДС (%)'; DESCRIBE FIELD FACULTY TABLE EDUCATION 'Факультет'; DESCRIBE FIELD BDATE TABLE EDUCATION 'Дата начала'; DESCRIBE FIELD EDATE TABLE EDUCATION 'Дата окончания'; DESCRIBE FIELD SPECIALITY TABLE EDUCATION 'Специальность'; DESCRIBE FIELD QUALIFICATION TABLE EDUCATION 'Квалификация'; DESCRIBE FIELD AVERAGEGRADE TABLE EDUCATION 'Средняя оценка по диплому'; DESCRIBE FIELD NAME TABLE EDUCATION 'ВУЗ'; DESCRIBE FIELD ID TABLE FRREPORT 'Уникальный код записи'; DESCRIBE FIELD PARENTID TABLE FRREPORT 'Ссылка на родителя (древовидная структура)'; DESCRIBE FIELD FOLDER TABLE FRREPORT 'Признак папки: = 0 - отчет = 1 - папка'; DESCRIBE FIELD NAME TABLE FRREPORT 'Наименование отчета (папки)'; DESCRIBE FIELD TEMPLATE TABLE FRREPORT 'Отчетная форма (binary)'; DESCRIBE FIELD TYP TABLE FRREPORT 'Тип документа (классификатор)'; DESCRIBE FIELD FRVER TABLE FRREPORT 'Версия FastReport = 3 - версия 3.xx <> 3 - версия 2.xx'; DESCRIBE FIELD ID TABLE FRREPORTTREE 'Уникальный код записи'; DESCRIBE FIELD PARENTID TABLE FRREPORTTREE 'Ссылка на родителя'; DESCRIBE FIELD TEMPLATE TABLE FRREPORTTREE 'Отчетная форма'; DESCRIBE FIELD NAME TABLE FRREPORTTREE 'Наименование (отчета, папки)'; DESCRIBE FIELD FRRPID TABLE FRREPORTTREEUSER 'Ссылка на отчет/папку - (на поле ID таблицы FRREPORTTREE)'; DESCRIBE FIELD USERID TABLE FRREPORTTREEUSER 'Пользователь (ссылка на поле ID таблицы USERLIST)'; DESCRIBE FIELD NAME TABLE FUNCMANAGE 'Наименование'; DESCRIBE FIELD CODE TABLE FUNCMANAGE 'Код'; DESCRIBE FIELD GROU_ TABLE FUNCMANAGE '0 = Внешняя функция 1 = Внутренняя функция'; DESCRIBE FIELD OWNER TABLE FUNCMANAGE 'Ссылка на функцию-родителя'; DESCRIBE FIELD NAME TABLE FUNCSUPPORT 'Наименование '; DESCRIBE FIELD CODE TABLE FUNCSUPPORT 'Код '; DESCRIBE FIELD GROU_ TABLE FUNCSUPPORT '0 = Внешняя функция 1 = Внутренняя функция '; DESCRIBE FIELD OWNER TABLE FUNCSUPPORT 'Ссылка на функцию-родителя '; DESCRIBE FIELD ID TABLE GDDDT 'Уникальный код записи'; DESCRIBE FIELD GDSKEY TABLE GDDDT 'Ссылка на товар (на поле ID таблицы GOODS) (! только для выписанных счетов, DGVDT - TYP=11)'; DESCRIBE FIELD DGVKEY TABLE GDDDT 'Ссылка на расходную накладную (на поле ID таблицы DGVDT)'; DESCRIBE FIELD GDDKEY TABLE GDDDT 'Ссылка на исходный товар в приходе (на поле ID таблицы GDDKT)'; DESCRIBE FIELD GDDID TABLE GDDDT 'Ссылка на позицию товара в выписанных счетах (при резервировании из Выписанных Счетов). Ссылка на основной материал при распределении отходов в заказе (производство).'; DESCRIBE FIELD ZID TABLE GDDDT 'Заказ (Производство)'; DESCRIBE FIELD ZKID TABLE GDDDT 'Производство - ссылка на оприходованное изделие (для списания материалов)'; DESCRIBE FIELD SZGDSID TABLE GDDDT 'Ссылка на товар в складском заказе'; DESCRIBE FIELD PRICEID TABLE GDDDT 'Ссылка на прайс-лист (на поле ID таблицы PRICELIST) для счетов/накладных - "реализация товара" при выборе цен по прайс-листам'; DESCRIBE FIELD PRICE TABLE GDDDT 'Цена (с НДС)'; DESCRIBE FIELD NDS TABLE GDDDT 'НДС (на единицу)'; DESCRIBE FIELD PRICEN TABLE GDDDT 'Цена без НДС (! заполняется не всегда) Надежнее считать (PRICE - NDS)'; DESCRIBE FIELD TPRICE TABLE GDDDT 'Цена в валюте (экспорт)'; DESCRIBE FIELD QUANT TABLE GDDDT 'Количество отпускаемого товара (для выписанных счетов - остаток, исходное кол-во - в SOURCE)'; DESCRIBE FIELD SOURCE TABLE GDDDT '- Исходное количество (в выписанных счетах) - Количество изготовленных изделий (списание материалов в производстве)'; DESCRIBE FIELD QNT_ONE TABLE GDDDT 'Количество в шт. (расход)'; DESCRIBE FIELD PPRICE TABLE GDDDT 'цена по пройсу (? не заполняется)'; DESCRIBE FIELD LOSS TABLE GDDDT '? Убыток (при убыточной реализации)'; DESCRIBE FIELD PRPROC TABLE GDDDT 'скидка от цены по прайсу (? не заполняется)'; DESCRIBE FIELD REMZAPID TABLE GDDDT 'Ссылка на запчасть в ремонте SC_REMZAP (Сервисный центр)'; DESCRIBE FIELD DGVKEY TABLE GDDDTDDU 'Ссылка на накладную (DGVDT)'; DESCRIBE FIELD NAMEID TABLE GDDDTDDU 'ССылка на вид услуги (HBGDDDU)'; DESCRIBE FIELD SC_CARDT_ID TABLE GDDDTPARAM 'Ссылка на карточку сервисного центра (SC_CARDT)'; DESCRIBE FIELD SNBR TABLE GDDDTPARAM 'Серийный номер'; DESCRIBE FIELD ZNBR TABLE GDDDTPARAM 'Заводской номер'; DESCRIBE FIELD COMMENT TABLE GDDDTPARAM 'Примечание'; DESCRIBE FIELD QUANT TABLE GDDDTU 'Количество'; DESCRIBE FIELD PRICE TABLE GDDDTU 'Цена (в нац. валюте)'; DESCRIBE FIELD CPRICE TABLE GDDDTU 'Цена (в валюте) - экспорт'; DESCRIBE FIELD DGVID TABLE GDDDTUNL 'Ссылка на договор на оказаание услуг/работ (DGVDTUD)'; DESCRIBE FIELD DTNLID TABLE GDDDTUNL 'Ссылка на вид налога (HBDTNL)'; DESCRIBE FIELD PRIORITY TABLE GDDDTUNL 'Приоритет расчета налога. Налоги с большим значением приоритета считаются позже, при этом базовая сумма для расчета берется за вычетом ранее рассчитанных налогов. '; DESCRIBE FIELD PROC TABLE GDDDTUNL 'Ставка налога (%).'; DESCRIBE FIELD ID TABLE GDDKT 'Уникальный код записи'; DESCRIBE FIELD DGVKEY TABLE GDDKT 'Ссылка на накладную (на поле ID таблицы DGVKT)'; DESCRIBE FIELD GDSKEY TABLE GDDKT 'Ссылка на наименование товара (на поле ID таблицы GOODS)'; DESCRIBE FIELD GDDKTID TABLE GDDKT 'Ссылка на свзяанную позицию в приходе - расхождение с приходом (позиция в корректирующей приходной накладной)'; DESCRIBE FIELD GDDKEY TABLE GDDKT 'Ссылка на позицию товара в расходной накладной - заполняется при связях (внутр. передача, переоценка...)'; DESCRIBE FIELD ZID TABLE GDDKT 'Заказ (Производство) для резервируемых в заказ позиций материалов / комплектующих'; DESCRIBE FIELD ZMID TABLE GDDKT 'Ссылка на Изделие в Заказе (производство) - таблица WORKZMST'; DESCRIBE FIELD WRGDSID TABLE GDDKT 'ССылка на позицию изделия в заявке (если изготовлено по заявке)'; DESCRIBE FIELD SPRICE TABLE GDDKT 'Исходная цена поставщика без скидки задана только в накладных на оприходование от поставщика и импорте'; DESCRIBE FIELD SNDS TABLE GDDKT 'Исходный НДС без скидки задан только в накладных на оприходование от поставщика и импорте'; DESCRIBE FIELD TPRICE TABLE GDDKT '- Контрактная (фактурная) цена в валюте (при импорте) - Цена поставщика (для обычного оприходования) без услуг - Себестоимость готовой продукции без накладных расходов (Производство - заказы)'; DESCRIBE FIELD TNDS TABLE GDDKT '- НДС поставщика (без услуг) - НДС готовой продукции без накладных расходов (Производство - заказы)'; DESCRIBE FIELD KPRICE TABLE GDDKT 'Первоначальная цена Поставки с НДС (себестоимость с услугами) (после переоценки - остается цена поставшика) для изделий - материальная себестоимость Для импорта - таможенная стоимость'; DESCRIBE FIELD KNDS TABLE GDDKT 'Первоначальный НДС поставки (себестоимость - с услугами) для изделий - НДС по материалам'; DESCRIBE FIELD PRICE TABLE GDDKT 'Входная цена (с НДС)'; DESCRIBE FIELD PRICENS TABLE GDDKT 'Входная цена без НДС (заполняется не всегда)'; DESCRIBE FIELD NDS TABLE GDDKT 'Входной НДС'; DESCRIBE FIELD AKCIZ TABLE GDDKT 'Акциз'; DESCRIBE FIELD SOURCE TABLE GDDKT 'Исходное количество товара по накладной'; DESCRIBE FIELD QUANT TABLE GDDKT 'Остаток товара'; DESCRIBE FIELD SKIDKAPROC TABLE GDDKT 'Скидка в % (не использ.)'; DESCRIBE FIELD AKCIZPROC TABLE GDDKT 'Ставка акциза (в %) (только для импорта)'; DESCRIBE FIELD NDSPROC TABLE GDDKT 'Ставка НДС (использ. только для импорта)'; DESCRIBE FIELD TAMP TABLE GDDKT 'Таможенная пошлина (%) - импорт'; DESCRIBE FIELD NW TABLE GDDKT 'Вес нетто (на ед.)'; DESCRIBE FIELD GW TABLE GDDKT 'Вес брутто (на ед.)'; DESCRIBE FIELD ZNBR TABLE GDDKT '№ заказа (для изделий из производства)'; DESCRIBE FIELD SIZEX TABLE GDDKT 'Размер (X)'; DESCRIBE FIELD SIZEY TABLE GDDKT 'Размер (Y)'; DESCRIBE FIELD SIZEZ TABLE GDDKT 'Размер (Z)'; DESCRIBE FIELD SRC_ONE TABLE GDDKT 'Кол-во в шт. (приход)'; DESCRIBE FIELD QNT_ONE TABLE GDDKT 'Кол-во в шт. (остаток)'; DESCRIBE FIELD DATEREAL TABLE GDDKT 'Крайняя дата реализации (срок годности)'; DESCRIBE FIELD DATE_REG TABLE GDDKT 'Крайняя дата регистрации'; DESCRIBE FIELD SERTNBR TABLE GDDKT '№ сертификата'; DESCRIBE FIELD BARCODE TABLE GDDKT 'Штрих-код'; DESCRIBE FIELD TGRPCODE TABLE GDDKT 'Код таможенной группы (код УКТ ВЭД)'; DESCRIBE FIELD SZID TABLE GDDKT 'Для изделий из заявок - ссылка на складской заказ'; DESCRIBE FIELD POSNO TABLE GDDKT 'Номер позиции товара в списке'; DESCRIBE FIELD GTDDATE TABLE GDDKT 'Дата ГТД'; DESCRIBE FIELD GTDNBR TABLE GDDKT '№ ГТД'; DESCRIBE FIELD IMP TABLE GDDKT 'Признак - "Импортный товар"'; DESCRIBE FIELD DGVKEY TABLE GDDKTDDU 'Ссылка на накладную (DGVKT)'; DESCRIBE FIELD UID TABLE GDDKTDDU 'Вид услуги'; DESCRIBE FIELD ORGNID TABLE GDDKTDDU 'Контрагент Если =Null - услуги поставщика из накладной (из DGVKT)'; DESCRIBE FIELD TYP TABLE GDDKTDDU 'Тип услуг (импорт): 0 - услуги до границы 1 - услуги после границы'; DESCRIBE FIELD QUANT TABLE GDDKTDDU 'Количество'; DESCRIBE FIELD TPRICE TABLE GDDKTDDU 'Цена (в валюте)'; DESCRIBE FIELD PRICE TABLE GDDKTDDU 'Цена (в нац. валюте)'; DESCRIBE FIELD NDS TABLE GDDKTDDU 'НДС (в нац. валюте)'; DESCRIBE FIELD ID TABLE GDDKTQNT 'Ссылка на позицию в приходной накладной (на поле ID таблицы GDDKT)'; DESCRIBE FIELD STOR TABLE GDDKTQNT 'Склад (ссылка на поле ID таблицы STORLIST)'; DESCRIBE FIELD DOCID TABLE GDDKTU 'Ссылка на акт (DGVKTU)'; DESCRIBE FIELD UID TABLE GDDKTU 'Ссылка на вид работ / услуг (на поле ID таблицы HBKTSU)'; DESCRIBE FIELD ID TABLE GDDKTZKPARAMS 'Уникальный код записи'; DESCRIBE FIELD GDDKTID TABLE GDDKTZKPARAMS 'Ссылка на позицию материала в приходной накладной (GDDKT)'; DESCRIBE FIELD BDATE TABLE GDDKTZKPARAMS 'Дата начала обработки'; DESCRIBE FIELD EDATE TABLE GDDKTZKPARAMS 'Дата окончания обработки'; DESCRIBE FIELD PRSNID TABLE GDDKTZKPARAMS 'Сотрудник'; DESCRIBE FIELD COUNT_B TABLE GDDKTZKPARAMS 'Начальное показание счетчика'; DESCRIBE FIELD COUNT_E TABLE GDDKTZKPARAMS 'Конечное показание счетчика'; DESCRIBE FIELD P_LENGTH_ALL TABLE GDDKTZKPARAMS 'Длина печати (м)'; DESCRIBE FIELD P_LENGTH_OK TABLE GDDKTZKPARAMS 'Длина годной печати (м)'; DESCRIBE FIELD CLOSED TABLE GDDKTZKPARAMS 'Закрыто (признак)'; DESCRIBE FIELD COMMENT TABLE GDDKTZKPARAMS 'Примечание'; DESCRIBE FIELD CREATED TABLE GDDKTZKPARAMS 'Дата создания'; DESCRIBE FIELD UPDATED TABLE GDDKTZKPARAMS 'Дата последнего редактирования'; DESCRIBE FIELD CUSERID TABLE GDDKTZKPARAMS 'Пользователь-создатель'; DESCRIBE FIELD USERID TABLE GDDKTZKPARAMS 'Пользователь, последним вносивший изменения'; DESCRIBE FIELD OPERCOUNT TABLE GDDKTZKPARAMS 'Количество закладок'; DESCRIBE FIELD ID TABLE GDSKTREQ 'Уникальный ключ записи'; DESCRIBE FIELD OURORGNID TABLE GDSKTREQ 'ID предприятия'; DESCRIBE FIELD SZID TABLE GDSKTREQ 'ID складского заказа'; DESCRIBE FIELD ORGNID TABLE GDSKTREQ 'ID контрагента'; DESCRIBE FIELD PRSNID TABLE GDSKTREQ 'Заявитель'; DESCRIBE FIELD DAT_ TABLE GDSKTREQ 'Дата документа'; DESCRIBE FIELD NBR TABLE GDSKTREQ 'Момер документа'; DESCRIBE FIELD PDATE TABLE GDSKTREQ 'Планируемая дата получения'; DESCRIBE FIELD CLOSED TABLE GDSKTREQ 'Признак - закрыто'; DESCRIBE FIELD COMMENT TABLE GDSKTREQ 'Примечание'; DESCRIBE FIELD USERID TABLE GDSKTREQ 'ID пользователя'; DESCRIBE FIELD LASTEDIT TABLE GDSKTREQ 'Дата / время последней модификации'; DESCRIBE FIELD GROUPID TABLE GDSPARAMPRM 'Группа параметров'; DESCRIBE FIELD COD TABLE GDSPARAMPRM 'Код параметра'; DESCRIBE FIELD NAME TABLE GDSPARAMPRM 'Наименование параметра'; DESCRIBE FIELD TYP TABLE GDSPARAMPRM 'Тип параметра: 0 - фиксированный - выбор из списка 1 - целый - integer 2 - вещественный - double 3 - строка - varchar(255) 4 - эквивалент 5 - адрес на складе 6 - наименование (ЭККА) 7 - страховой запас (на складе)'; DESCRIBE FIELD STORID TABLE GDSPARAMPRM 'Склад'; DESCRIBE FIELD LEN TABLE GDSPARAMPRM 'Длина текстового поля (использутся для Наименования ЭККА)'; DESCRIBE FIELD OPTIONS TABLE GDSPARAMPRM 'Опции (побитно) 0x01 - Накладные расходы 0x02 - Регистрация факт (для управленческого учета) 0x04 - Коэффициент работ СЦ'; DESCRIBE FIELD PARAMID TABLE GDSPARAMVAL 'Вид параметра'; DESCRIBE FIELD STRVAL TABLE GDSPARAMVAL 'Значение параметра'; DESCRIBE FIELD BDGTITEM1 TABLE GDSPARAMVAL 'Статья затрат'; DESCRIBE FIELD BDGTITEM2 TABLE GDSPARAMVAL 'Статья доходов'; DESCRIBE FIELD ID TABLE GOODS 'Уникальный код записи'; DESCRIBE FIELD GROU_ TABLE GOODS 'Признак группы 0 - группа товара (в поле NAME - наименование группы) 1 - обычный товар'; DESCRIBE FIELD NAME TABLE GOODS 'Наименование'; DESCRIBE FIELD CODE TABLE GOODS 'Артикул'; DESCRIBE FIELD FULLNAME TABLE GOODS 'Полное наименование'; DESCRIBE FIELD OWNER TABLE GOODS 'Ссылка на Группу (на поле ID)'; DESCRIBE FIELD KPRICE TABLE GOODS 'Нормативная цена'; DESCRIBE FIELD DESCRIPTION TABLE GOODS 'Описание товара'; DESCRIBE FIELD K1PRICE TABLE GOODS 'Розничная цена'; DESCRIBE FIELD NW TABLE GOODS 'Вес нетто (кг.) единицы товара'; DESCRIBE FIELD GW TABLE GOODS 'Вес брутто (в кг.) единицы товара'; DESCRIBE FIELD VOL TABLE GOODS 'Объем (куб. м.) единицы товара'; DESCRIBE FIELD QNT TABLE GOODS 'Кол-во в одной упаковке'; DESCRIBE FIELD ONE TABLE GOODS 'Единица измерения'; DESCRIBE FIELD ONEID TABLE GOODS 'Единица измерения (ссылка на справочник HBONE)'; DESCRIBE FIELD COD TABLE GOODS 'Код товара'; DESCRIBE FIELD PRICE_INCLUDE TABLE GOODS 'Признак "включать в прайс-лист" (для групп)'; DESCRIBE FIELD PRICE_NOCALC TABLE GOODS 'Признак "не производить перерасчет цен" (для групп)'; DESCRIBE FIELD DCRDPROC TABLE GOODS 'Скидка при продаже по дисконтной карте (для групп товара)'; DESCRIBE FIELD SQNT TABLE GOODS 'Страховой запас'; DESCRIBE FIELD BARCODE TABLE GOODS 'Штрих-код'; DESCRIBE FIELD PERIODSTOR TABLE GOODS 'Срок хранения (в днях)'; DESCRIBE FIELD PERIOD_UNIT TABLE GOODS 'Срок хранения - единица измерения 0 - день 1 - неделя 2 - месяц 3 - год'; DESCRIBE FIELD SHORTNAME TABLE GOODS 'Краткое наименование (для кассовых аппаратов)'; DESCRIBE FIELD SIZEX TABLE GOODS 'Размер (X)'; DESCRIBE FIELD SIZEY TABLE GOODS 'Размер (Y)'; DESCRIBE FIELD SIZEZ TABLE GOODS 'Размер (Z)'; DESCRIBE FIELD MATERIALTYP TABLE GOODS 'Вид материала (по размерности): 0 - не указано 1 - линейный (x) 2 - плоский (x, y) 3 - объемный (x, y, z)'; DESCRIBE FIELD COUNTRYID TABLE GOODS 'Страна-производитель'; DESCRIBE FIELD IMAGE TABLE GOODS 'Изображение'; DESCRIBE FIELD IMGTYP TABLE GOODS 'Формат изображения: 0-bmp; 1-jpg; 2-gif; 3-ico; 4-tif; 5-eps; 6-png; 7-psd; 8-psp'; DESCRIBE FIELD IMGFILENAME TABLE GOODS 'Изображение - имя файла'; DESCRIBE FIELD MAXTNPROC TABLE GOODS 'Ограничение процента (%) торговой надбавки (не более)'; DESCRIBE FIELD CODUKTVED TABLE GOODS 'Код УКТ ВЭД (код по Украинскому классификатору товаров внешнеэкономической деятельности)'; DESCRIBE FIELD ACQUANT1 TABLE GOODS 'Авто-расчет цены по количеству: Кол-во до...'; DESCRIBE FIELD ACPRICE1 TABLE GOODS 'Авто-расчет цены по количеству: Цена: 0 - Розничная цена 1 - Прайс-лист'; DESCRIBE FIELD ACONE1 TABLE GOODS 'Авто-расчет цены по количеству: Ед. Изм. (тип): 0 - Ед. Изм. 1 - Упак.'; DESCRIBE FIELD ACPRLS1 TABLE GOODS 'Авто-расчет цены по количеству: Прайс-лист (ID из таблицы PRICELIST)'; DESCRIBE FIELD IMP TABLE GOODS 'Признак - "Импортный товар"'; DESCRIBE FIELD ZOOMSCALE TABLE GOODS 'Размерность'; DESCRIBE FIELD AUTOCALC TABLE GOODS 'Признак: Расчет количества по размерам и шт.'; DESCRIBE FIELD USERNAME TABLE GOODS 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE GOODS 'Дата / время последней модификации записи'; DESCRIBE FIELD PARENTID TABLE GOODSGROUPS 'Ссылка на родительскую группу (для корневых групп = Null)'; DESCRIBE FIELD NAME TABLE GOODSGROUPS 'Наименование группы товара'; DESCRIBE FIELD COD TABLE GOODSGROUPS 'Код группы товара'; DESCRIBE FIELD PRICE_INCLUDE TABLE GOODSGROUPS 'Включать в прайс лист (признак)'; DESCRIBE FIELD PRICE_NOCALC TABLE GOODSGROUPS 'Не пересчитывать цены по прайс-листу (признак)'; DESCRIBE FIELD DCRDPROC TABLE GOODSGROUPS 'Скидка при продаже по дисконтной карте (%)'; DESCRIBE FIELD WORKMAINGRP TABLE GOODSGROUPS 'В группе есть изделия (признак) = 0 - изделий нет = 1 - изделия есть'; DESCRIBE FIELD IMAGE TABLE GOODSGROUPS 'Изображение'; DESCRIBE FIELD IMGTYP TABLE GOODSGROUPS 'Формат изображения: 0-bmp; 1-jpg; 2-gif; 3-ico; 4-tif; 5-eps; 6-png; 7-psd; 8-psp'; DESCRIBE FIELD GDSGRPID TABLE GOODSPRICEPROC '?'; DESCRIBE FIELD PERIOD1 TABLE GOODS_DECRNORM 'Период 1 (до nnn суток)'; DESCRIBE FIELD NORM1 TABLE GOODS_DECRNORM 'Норма (%)'; DESCRIBE FIELD CALC1 TABLE GOODS_DECRNORM '0 - общая норма 1 - накопительная норма (посуточно)'; DESCRIBE FIELD PERIOD2 TABLE GOODS_DECRNORM 'Период 2 (до nnn суток)'; DESCRIBE FIELD NAME TABLE HBDTNL 'Наименование налога'; DESCRIBE FIELD PROC TABLE HBDTNL 'ставка налога (%)'; DESCRIBE FIELD TYP TABLE HBDTNL 'Включать в документ (по умолчанию) 0 - Нет 1 - Да'; DESCRIBE FIELD NAME TABLE HBGDDDU 'Наименование услуги'; DESCRIBE FIELD ONEID TABLE HBGDDDU 'Ед. изм. (ссылка на HBONE)'; DESCRIBE FIELD PRICE TABLE HBGDDDU 'Цена'; DESCRIBE FIELD KPRICE TABLE HBGDDDU 'Стоимость'; DESCRIBE FIELD ECRCODE TABLE HBGDDDU 'Код (ЭККА)'; DESCRIBE FIELD ECRNAME TABLE HBGDDDU 'Наименование (ЭККА)'; DESCRIBE FIELD NAME TABLE HBKTSU 'Наименование услуги'; DESCRIBE FIELD ONE TABLE HBKTSU 'ед. изм.'; DESCRIBE FIELD NAME TABLE HBONE 'Наименование ед. изм.'; DESCRIBE FIELD CODE TABLE HBONE 'Код ед. изм.'; DESCRIBE FIELD ID TABLE HBPRSNTEST '№ п.п.'; DESCRIBE FIELD NAME TABLE HBPRSNTEST 'Наименование теста'; DESCRIBE FIELD DESCRIPTION TABLE HBPRSNTEST 'Описание теста'; DESCRIBE FIELD TOTESTED TABLE HBPRSNTEST 'Обращение к испытуемому'; DESCRIBE FIELD ANSWTYPE TABLE HBPRSNTEST 'Тип ответа: 0 - Тест обрабатывается плагином. 1 - Выбор единственного соответствующего ответа (да/нет, согласен/частично_согласен/не_согласен и т.д.) 2 - Выбор соответствующих ответов (например, выбрать соотв. характеристики резинового мяча: 1-шарообразный, 2-резиновый, 3-деревянный. из них веберется соответствующие, это 1 и 2) 3 - Ввод значения'; DESCRIBE FIELD TESTTIME TABLE HBPRSNTEST 'Время тестирования (плановое)'; DESCRIBE FIELD AUTOEND TABLE HBPRSNTEST 'Признак автоостановки тестирования по окончании времени'; DESCRIBE FIELD CALCKEY TABLE HBPRSNTEST 'Ключи расчета результатов теста'; DESCRIBE FIELD ID TABLE HB_VEHICLE 'Уникальный ключ записи'; DESCRIBE FIELD ORGNID TABLE HB_VEHICLE 'Автопредприятие'; DESCRIBE FIELD NAME TABLE HB_VEHICLE 'Марка транспортного средства'; DESCRIBE FIELD TYP TABLE HB_VEHICLE 'Тип транспортного средства'; DESCRIBE FIELD NBR TABLE HB_VEHICLE 'Гос. номер'; DESCRIBE FIELD G_NBR TABLE HB_VEHICLE 'Гаражный номер'; DESCRIBE FIELD USERID TABLE HB_VEHICLE 'Пользователь (редактирование записи)'; DESCRIBE FIELD LASTEDIT TABLE HB_VEHICLE 'Дата / время последнего изменения'; DESCRIBE FIELD ID TABLE INVOPISDATA 'ID записи'; DESCRIBE FIELD OPISID TABLE INVOPISDATA 'ID ведомости (INVOPISHEADER)'; DESCRIBE FIELD GODSID TABLE INVOPISDATA 'ID товара (GOODS)'; DESCRIBE FIELD KID TABLE INVOPISDATA 'ID позиции в приходной накладной (для развернутой ведомости)'; DESCRIBE FIELD CQUANT TABLE INVOPISDATA 'Расчетное количество (остаток на складе)'; DESCRIBE FIELD RQUANT TABLE INVOPISDATA 'Фактическое количество (по результатам инвентаризации)'; DESCRIBE FIELD PRICE TABLE INVOPISDATA 'Цена без НДС'; DESCRIBE FIELD NDS TABLE INVOPISDATA 'НДС'; DESCRIBE FIELD HANDMADE TABLE INVOPISDATA 'Позиция добавлена вручную (не результат авто-формирования)'; DESCRIBE FIELD TMP TABLE INVOPISDATA 'Признак временных записей (расчетный остаток на складе) Используется процедурой INVOPISDATA_RECALC в нормальной ситуации записи существуют лишь временно в процессе работы процедуры в контексте модифицирующей (расчетной) транзакции'; DESCRIBE FIELD DGVKTID TABLE INVOPISHEADER 'Накладная на оприходование недостачи'; DESCRIBE FIELD DGVDTID TABLE INVOPISHEADER 'Накладная на списание излишков'; DESCRIBE FIELD KASSAVID TABLE KASSAVCR 'Ссылка на Авансовый отчет (на поле ID таблицы KASSAVLIST)'; DESCRIBE FIELD KASSDTID TABLE KASSAVCR 'Ссылка на кассовый ордер (на поле ID таблицы KASSDATA)'; DESCRIBE FIELD SUMMA TABLE KASSAVCR 'Сумма оплаты'; DESCRIBE FIELD CSUMMA TABLE KASSAVCR 'Сумма оплаты в валюте'; DESCRIBE FIELD SUMM TABLE KASSAVCR 'Курсовая разница'; DESCRIBE FIELD ID TABLE KASSAVDATA 'Уникальный код записи'; DESCRIBE FIELD CALCNDS TABLE KASSAVDATA 'Признак - авто-расчет НДС'; DESCRIBE FIELD ID TABLE KASSAVLIST 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE KASSAVLIST 'Дата авансового отчета'; DESCRIBE FIELD NBR TABLE KASSAVLIST '№ документа'; DESCRIBE FIELD PRSNID TABLE KASSAVLIST 'Подотчетное лицо (Сотрудник)'; DESCRIBE FIELD SUMMA TABLE KASSAVLIST 'Сумма авансового отчета (расходы)'; DESCRIBE FIELD CURS TABLE KASSAVLIST 'Курс валюты'; DESCRIBE FIELD CURRTYP TABLE KASSAVLIST 'Вид валюты (ссылка на поле ID таблицы CURRTYP)'; DESCRIBE FIELD CURRDATE TABLE KASSAVLIST 'Дата валютирования'; DESCRIBE FIELD COMMENT TABLE KASSAVLIST 'Примечание'; DESCRIBE FIELD OPERID TABLE KASSAVLIST 'Код Операции (ссылка на поле ID таблицы ACOPRLST)'; DESCRIBE FIELD TYP TABLE KASSAVLIST 'Категория: 0 - Хозрасходы 1 - Командировки'; DESCRIBE FIELD ORGNINFOID TABLE KASSAVLIST 'Договор'; DESCRIBE FIELD KDAYS TABLE KASSAVLIST 'Командировка - количество дней'; DESCRIBE FIELD ID TABLE KASSDATA 'Уникальный код записи'; DESCRIBE FIELD OBJID TABLE KASSDATA 'ID объекта'; DESCRIBE FIELD KASSID TABLE KASSDATA 'Касса (ссылка на поле ID таблицы KASSLIST)'; DESCRIBE FIELD DAT_ TABLE KASSDATA 'Дата'; DESCRIBE FIELD NBR TABLE KASSDATA '№ документа'; DESCRIBE FIELD SERIAL TABLE KASSDATA 'Серия документа (было для кассовых ордеров на бланках строгой отчетности)'; DESCRIBE FIELD SUMMA TABLE KASSDATA 'Сумма > 0 - для приходного кассового ордера < 0 - для расходного кассового ордера'; DESCRIBE FIELD COMMENT TABLE KASSDATA 'Назначение платежа (Примечание)'; DESCRIBE FIELD PRSNID TABLE KASSDATA 'Подотчетное лицо (Сотрудник)'; DESCRIBE FIELD ACCN TABLE KASSDATA 'Корреспондирующий счет'; DESCRIBE FIELD ANID TABLE KASSDATA 'Аналитика для корр. счета ссылка на соотв. справочник в зависимости от вида аналитики в корр. счете'; DESCRIBE FIELD ORGNID TABLE KASSDATA 'Организация (ссылка на поле ID таблицы ORGN) для кассовых ордеров по расчету с дебиторами / кредиторами'; DESCRIBE FIELD OPERID TABLE KASSDATA 'Операция (ACOPRLST)'; DESCRIBE FIELD STORKEY TABLE KASSDATA 'Ссылка на оплату - дебиторы (SALE)'; DESCRIBE FIELD SALEKTKEY TABLE KASSDATA 'Ссылка на оплату - кредиторы (SALEKT)'; DESCRIBE FIELD KASSDATAKEY TABLE KASSDATA 'Ссылка на связанную запись (при передаче в другую кассу)'; DESCRIBE FIELD CNCODE TABLE KASSDATA 'Целевое назначение (номер позиции)'; DESCRIBE FIELD DELETED TABLE KASSDATA 'Признак аннулированного кассового ордера 0 - обычный, действующий 1 - аннулированный кассовый ордер'; DESCRIBE FIELD KASSSALE TABLE KASSDATA 'Признак: Включать в расчеты с контрагентами (создание оплаты в дебиторах/кредиторах)'; DESCRIBE FIELD CURRTYP TABLE KASSDATA 'Тип валюты (для валютных операций)'; DESCRIBE FIELD CURS TABLE KASSDATA 'Курс валюты'; DESCRIBE FIELD CSUMMA TABLE KASSDATA 'Сумма в валюте'; DESCRIBE FIELD BCURS TABLE KASSDATA 'Биржевой курс'; DESCRIBE FIELD SUMM TABLE KASSDATA 'Остаток суммы для распределения (для авансовых отчетов)'; DESCRIBE FIELD CSUMM TABLE KASSDATA 'Остаток суммы в валюте для распределения (для авансовых отчетов)'; DESCRIBE FIELD TYP TABLE KASSDATA 'Классификатор (тип): 0, Null - кассовый ордер общего назначения 1 - ХозРасходы (на погашение авансовых отчетов) 2 - Командировки (на погашение авансовых отчетов) '; DESCRIBE FIELD PODRID TABLE KASSDATA 'Подраздение'; DESCRIBE FIELD SUBSCRIBE TABLE KASSDATA 'Признак - подпись кассира'; DESCRIBE FIELD APPENDIX TABLE KASSDATA 'Приложение'; DESCRIBE FIELD EMAIL_STATE TABLE KASSDATA 'Статус оповещения по e-mail 0 - не отправлено 1 - оповещение отправлено успешно 2 - N/A отключена система оповещений 3 - не указан e-mail получателя (в личных делах) 4 - ошибка при отправке'; DESCRIBE FIELD KASSID TABLE KASSDAYS 'Ссылка на кассу (на поле ID таблицы KASSLIST)'; DESCRIBE FIELD DAT_ TABLE KASSDAYS 'Дата (день)'; DESCRIBE FIELD SUMMA TABLE KASSDAYS 'Остаток на конец дня'; DESCRIBE FIELD SUMM TABLE KASSDAYS 'Сумма - в т.ч. на Зар. Плату'; DESCRIBE FIELD CSUMMA TABLE KASSDAYS 'Остаток в валюте на конец дня (для валютных касс)'; DESCRIBE FIELD USERNAME TABLE KASSDAYS 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE KASSDAYS 'Дата / время последней модификации записи'; DESCRIBE FIELD ID TABLE KASSLIST 'Уникальный код записи'; DESCRIBE FIELD OURORGNID TABLE KASSLIST 'ID предприятия'; DESCRIBE FIELD PRSNID TABLE KASSLIST 'Ответственный'; DESCRIBE FIELD NAME TABLE KASSLIST 'Наименование'; DESCRIBE FIELD INTRKASS TABLE KASSLIST 'ID кассы для формирования приходного ордера'; DESCRIBE FIELD INTROP TABLE KASSLIST 'ID операции для формирования приходного ордера'; DESCRIBE FIELD OUTKASS TABLE KASSLIST 'ID кассы для формирования расходного ордера'; DESCRIBE FIELD OUTOP TABLE KASSLIST 'ID операции для формирования расходного ордера'; DESCRIBE FIELD DTOPERID TABLE KASSLIST 'Операция по расчетам с дебиторами'; DESCRIBE FIELD KTOPERID TABLE KASSLIST 'Операция по расчетам с кредиторами'; DESCRIBE FIELD CNAMEI1 TABLE KASSLIST 'Коды целевого назначения (приход) (CNAMEI1 ... CNAMEI8)'; DESCRIBE FIELD CNAMEO1 TABLE KASSLIST 'Коды целевого назначения (расход) (CNAMEO1 ... CNAMEO8)'; DESCRIBE FIELD "INACTIVE" TABLE KASSLIST 'Признак - неактивная касса'; DESCRIBE FIELD OPTIONS TABLE KASSLIST 'Признаки (побитно): 0x01 - Обязательное поле "Операция" 0x02 - Скрывать уволенных сотрудников'; DESCRIBE FIELD PRSNID TABLE LANG 'Сотрудник'; DESCRIBE FIELD NAME TABLE LANG 'Наименование языка'; DESCRIBE FIELD KNOWTYPE TABLE LANG 'Уровень владения 1 - с затруднениями 2 - хорошо 3 - свободно'; DESCRIBE FIELD CODE TABLE "LEV" 'Код'; DESCRIBE FIELD NAME TABLE "LEV" 'Наименование'; DESCRIBE FIELD TYP TABLE "LEV" 'Тип: 0 - Группа общего назначения 1 - Валовые доходы 2 - Валовые расходы'; DESCRIBE FIELD ID TABLE MAINAMCR 'Уникальный код записи'; DESCRIBE FIELD MAINKEY TABLE MAINAMCR 'Ссылка на ведомость расчета амортизации (на поле ID таблицы MAINAMMST)'; DESCRIBE FIELD ACCNKEY TABLE MAINAMCR 'Ссылка на проводку (на поле ID таблицы ACCNPROV)'; DESCRIBE FIELD OURORGNID TABLE MAINAMMST 'Ссылка на предприятие'; DESCRIBE FIELD DAT_ TABLE MAINAMMST 'Дата начисления (конец периода начисления)'; DESCRIBE FIELD NBR TABLE MAINAMMST '№ документа'; DESCRIBE FIELD OPERID TABLE MAINAMMST 'Операция'; DESCRIBE FIELD PERIOD TABLE MAINAMMST 'Период начисления 0 - месяц 1 - квартал 2 - год'; DESCRIBE FIELD GRPTYP TABLE MAINAMMST '0 - Амортизация 1 - Износ'; DESCRIBE FIELD COMMENT TABLE MAINAMMST 'Примечание'; DESCRIBE FIELD USERNAME TABLE MAINAMMST 'Пользователь'; DESCRIBE FIELD LASTEDIT TABLE MAINAMMST 'Дата / время последнего изменения'; DESCRIBE FIELD ID TABLE MAINAMSLV 'Уникальный код записи'; DESCRIBE FIELD MSTID TABLE MAINAMSLV 'Ведомость (ссылка на поле ID таблицы MAINAMMST)'; DESCRIBE FIELD MAINMEANID TABLE MAINAMSLV 'Основное средство (ссылка на поле ID таблицы MAINMEAN)'; DESCRIBE FIELD GRPID TABLE MAINAMSLV 'Ссылка на группу амортизации / износа'; DESCRIBE FIELD PRICE TABLE MAINAMSLV 'Балансовая стоимость (база для расчета амортизации)'; DESCRIBE FIELD AMNORM TABLE MAINAMSLV 'Норма амортизации (%)'; DESCRIBE FIELD MULT TABLE MAINAMSLV 'Коэффициент индексации'; DESCRIBE FIELD SUMMA TABLE MAINAMSLV 'Рассчитанная сумма амортизации'; DESCRIBE FIELD TYP TABLE MAINAMSLV 'Тип расчета 0 - линейный (%) 1 - метод уменьшающихся остатков 2 - линейный (по сроку использования)'; DESCRIBE FIELD M2 TABLE MAINAMSLV 'Остаток месяцев эксплуатации'; DESCRIBE FIELD LPRICE TABLE MAINAMSLV 'Ликвидационная стоимость'; DESCRIBE FIELD ID TABLE MAINCRCH 'Привязка проводок к изменению стоимости Основных Средств'; DESCRIBE FIELD NAME TABLE MAINGRP 'Наименование группы амортизации / износа'; DESCRIBE FIELD AMNORM TABLE MAINGRP 'Норма амортизации (в %) годовая'; DESCRIBE FIELD PERIOD TABLE MAINGRP 'Период начисления амортизации: 0 - месяц 1 - квартал 2 - год'; DESCRIBE FIELD TYP TABLE MAINGRP 'Метод расчета: 0 - линейный метод 1 - метод уменьшающихся остатков 2 - линейный (по сроку использования)'; DESCRIBE FIELD CODE TABLE MAINGRP 'Код группы амортизации / износа'; DESCRIBE FIELD MULT TABLE MAINGRP 'Коээффичиент индексации (в типовых случаях = 1.00)'; DESCRIBE FIELD GRPTYP TABLE MAINGRP '0 - амортизация 1 - износ'; DESCRIBE FIELD USE_PERIOD TABLE MAINGRP 'Срок полезного использования (мес.)'; DESCRIBE FIELD ID TABLE MAINMEAN 'Уникальный код записи'; DESCRIBE FIELD GODSID TABLE MAINMEAN 'Ссылка на наименование мат. ценности (на поле ID таблицы GOODS)'; DESCRIBE FIELD GDDKEY TABLE MAINMEAN 'Ссылка на позицию товара (при списании со склада)'; DESCRIBE FIELD DAT_ TABLE MAINMEAN 'Дата ввода в эксплуатацию (начало начисления амортизации)'; DESCRIBE FIELD INVNBR TABLE MAINMEAN 'Инвентарный номер'; DESCRIBE FIELD INP_DATE TABLE MAINMEAN 'Дата ввода в эксплуатацию (начало эксплуатации)'; DESCRIBE FIELD COD TABLE MAINMEAN 'Код ОС'; DESCRIBE FIELD PRICE TABLE MAINMEAN 'Первоначальная стоимость (без НДС)'; DESCRIBE FIELD OUT_DATE TABLE MAINMEAN 'Дата списания'; DESCRIBE FIELD PRICEO TABLE MAINMEAN 'Восстановительная стоимость'; DESCRIBE FIELD PODRID TABLE MAINMEAN 'Подразделение (ссылка на поле ID таблицы PODRLIST)'; DESCRIBE FIELD GROUPID TABLE MAINMEAN 'Группа Амортизации (ссылка на поле ID таблицы MAINGRP)'; DESCRIBE FIELD GROUPID1 TABLE MAINMEAN 'Группа износа (ссылка на таблицу MAINGRP)'; DESCRIBE FIELD INBR TABLE MAINMEAN 'Номер документа (на ввод в эксплуатацию)'; DESCRIBE FIELD INOPERID TABLE MAINMEAN 'Ссылка на операцию (по вводу в эксплуатацию)'; DESCRIBE FIELD ZNBR TABLE MAINMEAN 'Заводской номер'; DESCRIBE FIELD ONBR TABLE MAINMEAN 'Номер документа (на списание)'; DESCRIBE FIELD RPRICE TABLE MAINMEAN 'Цена реализации (при реализации ОС)'; DESCRIBE FIELD OUTCOMMENT TABLE MAINMEAN 'Причина выбытия'; DESCRIBE FIELD AMCLOSED TABLE MAINMEAN 'Начислять ли амортизацию после выбытия 0 - нет 1 - да'; DESCRIBE FIELD AMCLOSED1 TABLE MAINMEAN 'Начислять ли износ после выбытия 0 - нет 1 - да'; DESCRIBE FIELD ASUMMA TABLE MAINMEAN 'Начальная амортизация'; DESCRIBE FIELD ASUMMA1 TABLE MAINMEAN 'Начальный износ'; DESCRIBE FIELD QUANTGL TABLE MAINMEAN 'Золото (драг. металлы)'; DESCRIBE FIELD QUANTSL TABLE MAINMEAN 'Серебро (драг. металлы)'; DESCRIBE FIELD QUANTPL TABLE MAINMEAN 'Платина (драг. металлы)'; DESCRIBE FIELD QUANTPD TABLE MAINMEAN 'Палладий (драг. металлы)'; DESCRIBE FIELD QUANTRU TABLE MAINMEAN 'Рутений (драг. металлы)'; DESCRIBE FIELD QUANTIR TABLE MAINMEAN 'Драг. металлы - Иридий'; DESCRIBE FIELD QUANTRH TABLE MAINMEAN 'Драг. металлы - Родий'; DESCRIBE FIELD QUANTOS TABLE MAINMEAN 'Драг. металлы - Осмий'; DESCRIBE FIELD PRICEO0 TABLE MAINMEAN 'Восстановительная стоимость (аморт.)'; DESCRIBE FIELD PRICEO1 TABLE MAINMEAN 'Восстановительная стоимость (износ)'; DESCRIBE FIELD USE_PERIOD TABLE MAINMEAN 'Срок использования (мес.)'; DESCRIBE FIELD LPRICE TABLE MAINMEAN 'Ликвидационная стоимость'; DESCRIBE FIELD ID TABLE MAINMOVE 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE MAINMOVE 'Дата перемещения'; DESCRIBE FIELD NBR TABLE MAINMOVE '№ документа о перемещении'; DESCRIBE FIELD MAINID TABLE MAINMOVE 'ID Основного средства'; DESCRIBE FIELD PODRSRC TABLE MAINMOVE 'Исходное подразделение (откуда)'; DESCRIBE FIELD PODRDST TABLE MAINMOVE 'Подразделение назначения (куда)'; DESCRIBE FIELD GRPSRC0 TABLE MAINMOVE 'Группа амортизации (откуда)'; DESCRIBE FIELD GRPDST0 TABLE MAINMOVE 'Группа амортизации (куда)'; DESCRIBE FIELD GRPSRC1 TABLE MAINMOVE 'Группа износа (откуда)'; DESCRIBE FIELD GRPDST1 TABLE MAINMOVE 'Группа износа (куда)'; DESCRIBE FIELD USERNAME TABLE MAINMOVE 'Пользователь'; DESCRIBE FIELD LASTEDIT TABLE MAINMOVE 'Дата/время изменения'; DESCRIBE FIELD SUMMA TABLE MAINPRICE 'Сумма изменения стоимости ОС +: увеличение стоимости -: уменьшение стоимости'; DESCRIBE FIELD EXCL0 TABLE MAINPRICE 'Исключить изменение стоимости из начисления амортизации'; DESCRIBE FIELD EXCL1 TABLE MAINPRICE 'Исключить изменение стоимости из начисления износа'; DESCRIBE FIELD DELPART TABLE MAINPRICE 'Признак - "Ликвидация части стоимости"'; DESCRIBE FIELD SYSTEM_FLAG TABLE MAINPRICE '0x01 - использовать при расчете в текущем месяце 0x02 - не учитывать в карточке ОС'; DESCRIBE FIELD ID TABLE MAINRPTINVMST 'Уникальный ключ записи'; DESCRIBE FIELD OURORGNID TABLE MAINRPTINVMST 'ID предприятия'; DESCRIBE FIELD DAT_ TABLE MAINRPTINVMST 'Дата'; DESCRIBE FIELD NBR TABLE MAINRPTINVMST 'Номер документа'; DESCRIBE FIELD GRPTYP TABLE MAINRPTINVMST '0 - амортизация, 1 - износ'; DESCRIBE FIELD GRPID TABLE MAINRPTINVMST 'Группа амортизации/износа'; DESCRIBE FIELD PODRID TABLE MAINRPTINVMST 'Подразделение'; DESCRIBE FIELD COMMENT TABLE MAINRPTINVMST 'Примечание'; DESCRIBE FIELD USERID TABLE MAINRPTINVMST 'ID пользователя'; DESCRIBE FIELD LASTEDIT TABLE MAINRPTINVMST 'Дата/время последнего изменения'; DESCRIBE FIELD ID TABLE MBPDGV 'Уникальный код записи'; DESCRIBE FIELD OURORGNID TABLE MBPDGV 'Предприятие'; DESCRIBE FIELD DAT_ TABLE MBPDGV 'Дата документа'; DESCRIBE FIELD NBR TABLE MBPDGV '№ документа'; DESCRIBE FIELD PODR TABLE MBPDGV 'Подразделение-Источник'; DESCRIBE FIELD PODRID TABLE MBPDGV 'Подразделение-Получатель'; DESCRIBE FIELD TYP TABLE MBPDGV 'Тип накладной 0 - ввод в эксплуатацию 1 - внутренняя передача 2 - списание 3 - переоценка'; DESCRIBE FIELD DGVDTID TABLE MBPDGV 'Накладная на списание МБП со склада (ссылка на поле ID таблицы DGVDT)'; DESCRIBE FIELD OPERID TABLE MBPDGV 'Код операции'; DESCRIBE FIELD COMMENT TABLE MBPDGV 'Примечание'; DESCRIBE FIELD DGVID TABLE MBPGDD 'Ссылка на накладную (МБП)'; DESCRIBE FIELD MBPID TABLE MBPGDD 'Ссылка на карточку МБП (MBPMEAN)'; DESCRIBE FIELD GDDID TABLE MBPGDD 'Ссылка на исходную позицию (внутр. передачи, списание, переоценка)'; DESCRIBE FIELD GDDDTID TABLE MBPGDD 'Ссылка на позицию товара в складской накладной (после передачи МБП со склада)'; DESCRIBE FIELD PRICE TABLE MBPGDD 'Учетная цена'; DESCRIBE FIELD INP_DATE TABLE MBPGDD 'Дата поступления'; DESCRIBE FIELD OUT_DATE TABLE MBPGDD 'Дата списания (плановая - по сроку службы, от даты поступления)'; DESCRIBE FIELD QUANT TABLE MBPGDD 'Текущий остаток по позиции'; DESCRIBE FIELD SOURCE TABLE MBPGDD 'Исходное количество'; DESCRIBE FIELD OURORGNID TABLE MBPMEAN 'Предприятие'; DESCRIBE FIELD GODSID TABLE MBPMEAN 'Ссылка на наименование (справочник товаров)'; DESCRIBE FIELD PERIOD TABLE MBPMEAN 'Срок службы МБП (мес.)'; DESCRIBE FIELD INVNBR TABLE MBPMEAN 'Инв. №'; DESCRIBE FIELD ID TABLE OBJ_ATTACH 'Уникальный код записи'; DESCRIBE FIELD OBJID TABLE OBJ_ATTACH 'Объект, к которому приклеплен файл'; DESCRIBE FIELD FILENAME TABLE OBJ_ATTACH 'Имя файла'; DESCRIBE FIELD FILEBODY TABLE OBJ_ATTACH 'Содержимое файла'; DESCRIBE FIELD FILETYPE TABLE OBJ_ATTACH 'Тип файла (расширение)'; DESCRIBE FIELD FILESIZE TABLE OBJ_ATTACH 'Размер файла (оригинальный, неупакованный)'; DESCRIBE FIELD PACKTYPE TABLE OBJ_ATTACH 'Тип упаковки: 0 - не упакован 1 - CAB 2 - ZIP (TZip) 3 - RAR 4 - ZIP (ZLIbEx)'; DESCRIBE FIELD PACKSIZE TABLE OBJ_ATTACH 'Упакованный размер'; DESCRIBE FIELD USERID TABLE OBJ_ATTACH 'ID пользователя (автор)'; DESCRIBE FIELD FILECREATE TABLE OBJ_ATTACH 'Дата создания файла'; DESCRIBE FIELD FILEMODIFY TABLE OBJ_ATTACH 'Дата модификации файла'; DESCRIBE FIELD DESCRIPTION TABLE OBJ_ATTACH 'Описание файла (может быть в .RTF)'; DESCRIBE FIELD BDG_STATE TABLE OBJ_CLASS 'Статус учета объекта в управленческом учете (BDG_%) 0 - не учтен 1 - учтен 2 - отклонен 3 - учтен, но был изменен 4 - учтен, но был изменен управленческий документ'; DESCRIBE FIELD ID TABLE OBJ_MSG 'Уникальный код записи'; DESCRIBE FIELD OBJID TABLE OBJ_MSG 'Объект, к которому привязано сообщение'; DESCRIBE FIELD SENDUSERID TABLE OBJ_MSG 'Автор сообщения (ID пользователя)'; DESCRIBE FIELD SUBJECT TABLE OBJ_MSG 'Тема сообщения'; DESCRIBE FIELD BODY TABLE OBJ_MSG 'Содержимое сообщения'; DESCRIBE FIELD CREATED TABLE OBJ_MSG 'Дата / время создания сообщения'; DESCRIBE FIELD ID TABLE OBJ_MSGREAD 'Уникальный код записи'; DESCRIBE FIELD MSGID TABLE OBJ_MSGREAD 'ID сообщения (OBJ_MSG)'; DESCRIBE FIELD USERID TABLE OBJ_MSGREAD 'ID пользвателя (USERLIST)'; DESCRIBE FIELD READED TABLE OBJ_MSGREAD 'Дата / время прочтения сообщения'; DESCRIBE FIELD USERID1 TABLE OBJ_STAGE 'Инициатор'; DESCRIBE FIELD USERID2 TABLE OBJ_STAGE 'Исполнитель'; DESCRIBE FIELD DESCRIPTION1 TABLE OBJ_STAGE 'Описание инициатора'; DESCRIBE FIELD DESCRIPTION2 TABLE OBJ_STAGE 'Описание исполнителя'; DESCRIBE FIELD STAGECREATE TABLE OBJ_STAGE 'Этап создан'; DESCRIBE FIELD STAGEREAD TABLE OBJ_STAGE 'Этап - прочитано (исполнитель ознакомлен)'; DESCRIBE FIELD STAGECLOSE TABLE OBJ_STAGE 'Исполнитель утвердил решение'; DESCRIBE FIELD STAGEABORT TABLE OBJ_STAGE 'Исполнитель отменил решение'; DESCRIBE FIELD STAGECOMMIT TABLE OBJ_STAGE 'Инициатор подтвердил'; DESCRIBE FIELD NAME TABLE OBJ_STAGEROUTESTD 'Наименование маршрута'; DESCRIBE FIELD STAGEROUTEID TABLE OBJ_STAGESTD 'Маршрут'; DESCRIBE FIELD NAME TABLE OBJ_STAGESTD 'Наименование этапа'; DESCRIBE FIELD PRSNID TABLE OPERADD 'Сотрудник'; DESCRIBE FIELD PODRPOSTID TABLE OPERADD 'Должность'; DESCRIBE FIELD OPERDATE TABLE OPERADD 'Дата операции'; DESCRIBE FIELD COMMENT TABLE OPERADD 'Примечание'; DESCRIBE FIELD ISPLANNING TABLE OPERADD 'Планируемая операция (признак)'; DESCRIBE FIELD DOCM TABLE OPERADD 'Номер документа (приказа)'; DESCRIBE FIELD OLDNAME TABLE OPERFIO 'Старые ФИО'; DESCRIBE FIELD OLDFULLNAME TABLE OPERFIO 'Старые: Фамилия Имя Отчество'; DESCRIBE FIELD OPERDATE TABLE OPERFIO 'Дата операции (до указанной действительна старая фамилия - OLDNAME)'; DESCRIBE FIELD COMMENT TABLE OPERFIO 'Примечание'; DESCRIBE FIELD ISPLANNING TABLE OPERFIO 'Планируемая операция'; DESCRIBE FIELD DOCM TABLE OPERFIO 'Документ'; DESCRIBE FIELD NAME TABLE ORGN 'Наименование (краткое)'; DESCRIBE FIELD FULLNAME TABLE ORGN 'Полное наименование'; DESCRIBE FIELD NAME_NDS TABLE ORGN 'Наименование плательщика НДС'; DESCRIBE FIELD OURORGN TABLE ORGN 'Признак "своих" предприятий (по которым ведется консолидированный учет) 0 - внешний контрагент 1 - главное предприятие 2 - филиалы (прочие)'; DESCRIBE FIELD ADDRESS TABLE ORGN 'Адрес (юридический)'; DESCRIBE FIELD PHONE TABLE ORGN 'Телефон(ы)'; DESCRIBE FIELD BANK TABLE ORGN 'Наименование банка'; DESCRIBE FIELD MFO_CODE TABLE ORGN 'МФО банка'; DESCRIBE FIELD ACCNCODE TABLE ORGN 'Расчетный счет'; DESCRIBE FIELD OKPOCODE TABLE ORGN 'Код ОКПО (ЕДРПОУ)'; DESCRIBE FIELD PSTIDX TABLE ORGN 'Почтовый индекс'; DESCRIBE FIELD FAX TABLE ORGN 'Факс'; DESCRIBE FIELD CALL TABLE ORGN 'Отв. лицо (Ф.И.О.)'; DESCRIBE FIELD POST TABLE ORGN 'Должность отв. лица'; DESCRIBE FIELD COMMENT TABLE ORGN 'Примечание'; DESCRIBE FIELD BUYER TABLE ORGN 'Признак: Поставщик (=1)'; DESCRIBE FIELD DILER TABLE ORGN 'Признак Дилер (=1)'; DESCRIBE FIELD COUNTRY TABLE ORGN 'Страна (ссылка на REGION)'; DESCRIBE FIELD REGION TABLE ORGN 'Область (ссылка на REGION)'; DESCRIBE FIELD CITY TABLE ORGN 'Город (ссылка на REGION)'; DESCRIBE FIELD MAXTIME TABLE ORGN 'Отсрочка (в днях)'; DESCRIBE FIELD DOLG TABLE ORGN 'Признак: Должник / Арбитраж (побитно) 0 бит - Должник 1 бит - Арбитраж'; DESCRIBE FIELD MANAGER TABLE ORGN 'Менеджер (ссылка на справочник Личных Дел)'; DESCRIBE FIELD DIRECTOR TABLE ORGN 'Директор'; DESCRIBE FIELD NALNBR TABLE ORGN 'Индивидуальный налоговый номер'; DESCRIBE FIELD REGNBR TABLE ORGN 'Регистрационный номер свидетельства'; DESCRIBE FIELD EMAIL TABLE ORGN 'E-Mail'; DESCRIBE FIELD WEBSITE TABLE ORGN 'Web (http)'; DESCRIBE FIELD DGVPRSN TABLE ORGN 'В лице...'; DESCRIBE FIELD PRICEID TABLE ORGN 'Прайс-лист (по умолчанию)'; DESCRIBE FIELD ACCOUNTER TABLE ORGN 'Гл. бухгалтер (ссылка на справочник Сотрудников)'; DESCRIBE FIELD ORGNDIRID TABLE ORGN 'Директор (ссылка на справочник Сотрудников)'; DESCRIBE FIELD BIRTHDAY TABLE ORGN 'Дата основания'; DESCRIBE FIELD ADDRESSF TABLE ORGN 'Адрес (фактический)'; DESCRIBE FIELD DESCRIPTION TABLE ORGN 'Описание'; DESCRIBE FIELD NALORGN TABLE ORGN 'Признак "Налоговая инспекция" 0 - нет 1 - да'; DESCRIBE FIELD NALORGNID TABLE ORGN 'Налоговая инспекция для данной организации'; DESCRIBE FIELD CYCLETIME TABLE ORGN 'Период обращения'; DESCRIBE FIELD VIP TABLE ORGN 'VIP-клиент (признак)'; DESCRIBE FIELD CODE TABLE ORGN 'Код'; DESCRIBE FIELD KREDITMAX TABLE ORGN 'Максимальная сумма кредита'; DESCRIBE FIELD KREDITONE TABLE ORGN 'Макс. сумма единоразового кредита'; DESCRIBE FIELD SALENDS TABLE ORGN 'Признак - Плательщик НДС'; DESCRIBE FIELD PHONENBR TABLE ORGN 'Телефонный номер. Все 12 цифр и никаких других символов.'; DESCRIBE FIELD BRANCH_NO TABLE ORGN 'Номер филиала'; DESCRIBE FIELD NO_EMAIL TABLE ORGN 'Не оповещать по e-mail'; DESCRIBE FIELD NO_SMS TABLE ORGN 'Не оповещать по SMS'; DESCRIBE FIELD BOUNSFORBIRTHDAY TABLE ORGN 'Дата когда клиент получил бонусную чашку на день рождение.'; DESCRIBE FIELD ORGNID TABLE ORGNBANKACCN 'Ссылка на Организацию'; DESCRIBE FIELD BANKID TABLE ORGNBANKACCN 'Ссылка на Банк'; DESCRIBE FIELD TYP TABLE ORGNBANKACCN 'Признак: основной (текущий) / дополнительный р/с 0 = основной 1 = дополнительный'; DESCRIBE FIELD TYPNDS TABLE ORGNBANKACCN 'Признак: Счет НДС (=1)'; DESCRIBE FIELD ACCNNDSID TABLE ORGNBANKACCN 'Связанный счет для НДС'; DESCRIBE FIELD ACCNCODE TABLE ORGNBANKACCN 'Номер расчетного счета'; DESCRIBE FIELD CTYP TABLE ORGNBANKACCN 'Признак валютного счета (= 1)'; DESCRIBE FIELD CURRTYP TABLE ORGNBANKACCN 'Вид валюты'; DESCRIBE FIELD AACCNCODE TABLE ORGNBANKACCN 'Транзитный (корр.) счет'; DESCRIBE FIELD CREDIT TABLE ORGNBANKACCN 'Кредитовый (ссудный) р/с (= 1)'; DESCRIBE FIELD NAME TABLE ORGNBANKACCN 'Описание р/с - как он показывается в аналитике По умолчанию устанавливается в номер р/с'; DESCRIBE FIELD ID TABLE ORGNGRPREF 'Привязка Организаций по Группам'; DESCRIBE FIELD GRPID TABLE ORGNGRPREF 'Код группы (ссылка на поле ID таблицы ORGN_GRP)'; DESCRIBE FIELD ORGNID TABLE ORGNGRPREF 'Код Организации (ссылка на поле ID таблицы ORGN)'; DESCRIBE FIELD ORGNID TABLE ORGNINFO 'Ссылка на Организацию (на поле ID таблицы ORGN)'; DESCRIBE FIELD DAT_ TABLE ORGNINFO 'Дата заключения договора'; DESCRIBE FIELD NBR TABLE ORGNINFO '№ договора'; DESCRIBE FIELD BDATE TABLE ORGNINFO 'Дата начала'; DESCRIBE FIELD EDATE TABLE ORGNINFO 'Дата окончания'; DESCRIBE FIELD MAXTIME TABLE ORGNINFO 'Отсрочка платежа (в днях)'; DESCRIBE FIELD OWNUSERID TABLE ORGN_GRP 'Пользователь-владелец (личная группа) = NULL - публичная группа'; DESCRIBE FIELD PUBLICGRP TABLE ORGN_GRP 'Публичная личная (OWNUSERID != NULL) группа (флаг) 1 = доступна для всех'; DESCRIBE FIELD EMAIL_TMPL_REAL TABLE ORGN_GRP 'Шаблон оповещения по E-Mail (реализация товара). Имя файла (в /FrfStor/).'; DESCRIBE FIELD MNGRID TABLE ORGN_MANAGER 'ССылка на сотрудника (PERSONAL)'; DESCRIBE FIELD DEFMNGR TABLE ORGN_MANAGER 'Признак - менеждер по умолчанию'; DESCRIBE FIELD SUBSCRIBE TABLE ORGN_MANAGER 'Признак "Утверждено"'; DESCRIBE FIELD SUSERID TABLE ORGN_MANAGER '"Утверждено" - Пользователь'; DESCRIBE FIELD SDATETIME TABLE ORGN_MANAGER '"Утверждено" - Дата / Время'; DESCRIBE FIELD COMMENT TABLE ORGN_MANAGER 'Примечание'; DESCRIBE FIELD ID TABLE PERSONAL 'Уникальный код записи'; DESCRIBE FIELD PRSNCARDID TABLE PERSONAL 'Ссылка на Личное Дело (PRSNCARD)'; DESCRIBE FIELD OURORGNID TABLE PERSONAL 'Предприятие'; DESCRIBE FIELD NAME TABLE PERSONAL 'Фамилия И.О.'; DESCRIBE FIELD INP_DATE TABLE PERSONAL 'Дата приема на работу '; DESCRIBE FIELD OUT_DATE TABLE PERSONAL 'Дата увольнения с работы '; DESCRIBE FIELD IDX_DATE TABLE PERSONAL 'Базовая дата для расчета индексации'; DESCRIBE FIELD WTYP TABLE PERSONAL 'Признак работы: 0 - основное место работы 1 - работа по совместительству 2 - работа по договору подряда 3 - работающий инвалид'; DESCRIBE FIELD COMMENT TABLE PERSONAL 'Примечание'; DESCRIBE FIELD PODRID TABLE PERSONAL 'Ссылка на подразделение (на поле ID таблицы PODRLIST) '; DESCRIBE FIELD STORID TABLE PERSONAL 'Ссылка на склад (цех) - на поле ID таблицы STORLIST. Используется при распределении накладных расходов по ЗарПлате, при привязке аналитики по цехам.'; DESCRIBE FIELD DAYWTIME TABLE PERSONAL 'Продолжительность рабочего дня (в ч.) '; DESCRIBE FIELD TABNBR TABLE PERSONAL 'Табельный номер'; DESCRIBE FIELD FOTGRPID TABLE PERSONAL 'Группа начислений на ФОТ (ссылка на поле ID таблицы ZPLTFOTGRP) '; DESCRIBE FIELD POSTID TABLE PERSONAL 'Должность (PRSNPOST)'; DESCRIBE FIELD TABELID TABLE PERSONAL 'Плановый табель учета рабочего времени (ZPLTTABEL)'; DESCRIBE FIELD OKLAD TABLE PERSONAL 'Оклад - справочное значение (расчет з/п производится по начислениям)'; DESCRIBE FIELD MANAGER TABLE PERSONAL 'Является ли менежером (признак для Склада): 0 - Нет 1 - Да'; DESCRIBE FIELD ZTYP TABLE PERSONAL 'Система оплаты (в расчете не используется): 0 - Оклад 1 - Повременная 2 - Сдельная '; DESCRIBE FIELD RGTYP TABLE PERSONAL 'Режим работы: 0 - 5-ти дневная рабочая неделя 1 - 6-ти дневная рабочая неделя (к удалению - будет привязан плановый табель ZPLTTABEL через должность - PODRPOST)'; DESCRIBE FIELD USERID TABLE PERSONAL 'Пользователь (ID в таблице USERLIST)'; DESCRIBE FIELD POST TABLE PERSONAL 'Должность (к удалению) новое значение в PRSNPOST'; DESCRIBE FIELD FULLNAME TABLE PERSONAL 'Фамилия Имя Отчество'; DESCRIBE FIELD INN TABLE PERSONAL 'Индивидуальный налоговый номер'; DESCRIBE FIELD BIRTHDAY TABLE PERSONAL 'Дата рождения'; DESCRIBE FIELD COUNTRY TABLE PERSONAL 'Страна'; DESCRIBE FIELD REGION TABLE PERSONAL 'Область'; DESCRIBE FIELD CITY TABLE PERSONAL 'Город'; DESCRIBE FIELD ADDRESS TABLE PERSONAL 'Адрес'; DESCRIBE FIELD PSTIDX TABLE PERSONAL 'Почтовый индекс'; DESCRIBE FIELD HOMEPHONE TABLE PERSONAL 'Телефон (дом.)'; DESCRIBE FIELD PASSPORT TABLE PERSONAL 'Кем выдан паспорт'; DESCRIBE FIELD PASPSER TABLE PERSONAL 'Серия паспорта'; DESCRIBE FIELD PASPNBR TABLE PERSONAL 'Номер паспорта'; DESCRIBE FIELD PASPOUT TABLE PERSONAL 'Паспорт выдан ____ (дата)'; DESCRIBE FIELD PHOTO TABLE PERSONAL 'Фото Сотрудника (изображение)'; DESCRIBE FIELD IMGPHOTOTYP TABLE PERSONAL 'Формат изображения (поле PHOTO) 0 - BMP 1 - JPG 2 - GIF'; DESCRIBE FIELD SUBSCRIBE TABLE PERSONAL 'Образец Подписи (изображение)'; DESCRIBE FIELD IMGSUBSCRIBETYP TABLE PERSONAL 'Формат изображения (поле SUBSCRIBE) 0 - BMP 1 - JPG 2 - GIF'; DESCRIBE FIELD NALORGNID TABLE PERSONAL 'Налоговая испекция (ссылка на ORGN)'; DESCRIBE FIELD GENDER TABLE PERSONAL 'Пол: = Null - не указанное значение = 1 - мужской = 2 - женский'; DESCRIBE FIELD CARDACCN TABLE PERSONAL 'Расчетный счет (карточка)'; DESCRIBE FIELD CARDACCNUSE TABLE PERSONAL 'Использование счета (карточка) - (=1)'; DESCRIBE FIELD USERNAME TABLE PERSONAL 'Имя пользователя, редактировавшего запись'; DESCRIBE FIELD LASTEDIT TABLE PERSONAL 'Дата / Время последнего изменения записи'; DESCRIBE FIELD NRC TABLE PERSONAL 'Неполный рабочий день (признак)'; DESCRIBE FIELD SUPERVISOR TABLE PERSONAL 'Является ли супервайзером: 0 - Нет 1 - Да'; DESCRIBE FIELD DIRECTOR TABLE PERSONAL 'Является ли директором: 0 - Нет 1 - Да'; DESCRIBE FIELD PARENTID TABLE PODRLIST 'Ссылка на главное подразделение'; DESCRIBE FIELD NAME TABLE PODRLIST 'Наименование Подразделения'; DESCRIBE FIELD COD TABLE PODRLIST 'Код подразделения'; DESCRIBE FIELD ADDRESS TABLE PODRLIST 'Адрес'; DESCRIBE FIELD PHONE TABLE PODRLIST 'Телефон(ы)'; DESCRIBE FIELD MPRSNID TABLE PODRLIST 'Руководитель подразделения (PERSONAL)'; DESCRIBE FIELD SPRSNID TABLE PODRLIST 'Материально-ответственное лицо (PERSONAL)'; DESCRIBE FIELD BDG_CENTER_ID TABLE PODRLIST 'ссылка на Центр финансового учета (ЦФУ)'; DESCRIBE FIELD OWN TABLE PODRLIST 'не используется (было: мат.-отв. лицо)'; DESCRIBE FIELD DELETED TABLE PODRLIST 'Признак удаления: 0 - актуальное подразделение 1 - удаленное (расформированное) подразделение'; DESCRIBE FIELD COD TABLE PODRPOST 'Код должности'; DESCRIBE FIELD NAME TABLE PODRPOST 'Наименование должности (need delete) (см. поле POSTID)'; DESCRIBE FIELD PODRID TABLE PODRPOST 'Подразделение'; DESCRIBE FIELD POSTID TABLE PODRPOST 'Ссылка на должность (PRSNPOST)'; DESCRIBE FIELD BOSSID TABLE PODRPOST 'Руководитель (Должность)'; DESCRIBE FIELD PRSNID TABLE PODRPOST 'Сотрудник'; DESCRIBE FIELD TABELID TABLE PODRPOST 'Табель (плановый)'; DESCRIBE FIELD SUMMA TABLE PODRPOST 'Оклад (сумма)'; DESCRIBE FIELD GDSKEY TABLE PRICEGOODS 'ID товара (GOODS)'; DESCRIBE FIELD PRICE TABLE PRICEGOODS 'Цена в нац. валюте'; DESCRIBE FIELD PRICEID TABLE PRICEGOODS 'Прайс-лист (PRICELIST)'; DESCRIBE FIELD CPRICE TABLE PRICEGOODS 'Цена в у.е.'; DESCRIBE FIELD USERNAME TABLE PRICEGOODS 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE PRICEGOODS 'Дата/время последней модификации'; DESCRIBE FIELD ID TABLE PRICELIST 'Уникальный код записи'; DESCRIBE FIELD BASEPRICEID TABLE PRICELIST 'Ссылка на базовый прайс-лист (для производных прайс-листов)'; DESCRIBE FIELD BASEPRICE TABLE PRICELIST 'Тип прайс-листа: =1 - базовый =0 - производный'; DESCRIBE FIELD NAME TABLE PRICELIST 'Наименование Прайс-Листа'; DESCRIBE FIELD PROC TABLE PRICELIST 'Скидка в % от базового прайс-листа'; DESCRIBE FIELD CODE TABLE PRICELIST 'Код прайс-листа (сокращение)'; DESCRIBE FIELD CURS TABLE PRICELIST 'Курс у.е. (для перерасчетов)'; DESCRIBE FIELD RND TABLE PRICELIST 'Степень округления цен, например: 0.01 - до одной коп. 1.00 - до 1 грн.'; DESCRIBE FIELD BONUSPRICE TABLE PRICELIST '% бонуса'; DESCRIBE FIELD PRICE_ROZN TABLE PRICELIST 'Признак: (= 1) При выборе скидок по прайс-листу для розничного склада рассчитывать скидку от входной (розничной) цены на данном складе. (= 0) В противном случае скидка рассчитывается от Розничной Цены в справочнике Товаров.'; DESCRIBE FIELD PRSNID TABLE PROFEXPERIENCE 'Ссылка на личное дело (PRSNCARD)'; DESCRIBE FIELD BDATE TABLE PROFEXPERIENCE 'Дата начала'; DESCRIBE FIELD EDATE TABLE PROFEXPERIENCE 'Дата окончания'; DESCRIBE FIELD ORGN TABLE PROFEXPERIENCE 'Назв. организации'; DESCRIBE FIELD POSTNAME TABLE PROFEXPERIENCE 'Назв. должности'; DESCRIBE FIELD COMMENT TABLE PROFEXPERIENCE 'Комментарий'; DESCRIBE FIELD DISMISS TABLE PROFEXPERIENCE 'Причина увольнения'; DESCRIBE FIELD FUNCTIONS TABLE PROFEXPERIENCE 'Обязанности'; DESCRIBE FIELD PRSNID TABLE PRSNATTACH 'Личное дело (PRSNCARD)'; DESCRIBE FIELD NAME TABLE PRSNATTACH 'Имя файла'; DESCRIBE FIELD FILEDATA TABLE PRSNATTACH 'Сам файл'; DESCRIBE FIELD COMMENT TABLE PRSNATTACH 'Примечания'; DESCRIBE FIELD NAME TABLE PRSNCARD 'Фамилия И.О.'; DESCRIBE FIELD FULLNAME TABLE PRSNCARD 'Фамилия Имя Отчество'; DESCRIBE FIELD INN TABLE PRSNCARD 'Индивидуальный налоговый номер'; DESCRIBE FIELD BIRTHDAY TABLE PRSNCARD 'Дата рождения'; DESCRIBE FIELD PSTIDX TABLE PRSNCARD 'Почтовый индекс'; DESCRIBE FIELD ADDRESS TABLE PRSNCARD 'Адрес'; DESCRIBE FIELD HOMEPHONE TABLE PRSNCARD 'Телефон (дом.)'; DESCRIBE FIELD PASPSER TABLE PRSNCARD 'Паспорт (серия)'; DESCRIBE FIELD PASPNBR TABLE PRSNCARD 'Паспорт - номер'; DESCRIBE FIELD PASPOUT TABLE PRSNCARD 'Паспорт - выдан (дата)'; DESCRIBE FIELD PASSPORT TABLE PRSNCARD 'Паспорт - кем выдан'; DESCRIBE FIELD GENDER TABLE PRSNCARD 'Пол Null - не указано 1 - мужской 2 - женский'; DESCRIBE FIELD PHOTO TABLE PRSNCARD 'Фото'; DESCRIBE FIELD IMGPHOTOTYP TABLE PRSNCARD 'Формат изображения (поле PHOTO) 0 - BMP 1 - JPG 2 - GIF'; DESCRIBE FIELD SUBSCRIBE TABLE PRSNCARD 'Образец Подписи (изображение)'; DESCRIBE FIELD IMGSUBSCRIBETYP TABLE PRSNCARD 'Формат изображения (поле SUBSCRIBE) 0 - BMP 1 - JPG 2 - GIF'; DESCRIBE FIELD NALORGNID TABLE PRSNCARD 'Налоговая инспекция'; DESCRIBE FIELD COMMENT TABLE PRSNCARD 'Примечание'; DESCRIBE FIELD RESUME TABLE PRSNCARD 'Резюме'; DESCRIBE FIELD FAMILYSTATUS TABLE PRSNCARD 'Семейное положение'; DESCRIBE FIELD CHILDREN TABLE PRSNCARD 'Кол-во детей'; DESCRIBE FIELD ABROADPASS TABLE PRSNCARD 'Загранпаспорт (признак)'; DESCRIBE FIELD REGISTERPLACE TABLE PRSNCARD 'Прописка (адрес)'; DESCRIBE FIELD DRIVECATEGORY TABLE PRSNCARD 'Водительские права (категории)'; DESCRIBE FIELD DRIVEAGE TABLE PRSNCARD 'Водительский стаж'; DESCRIBE FIELD DRIVECAR TABLE PRSNCARD 'Автомобиль (наименование)'; DESCRIBE FIELD COMPKNOWLEDGE TABLE PRSNCARD 'Навыки работы с компьютером'; DESCRIBE FIELD KNOWCOPY TABLE PRSNCARD 'Знание копировальной техники'; DESCRIBE FIELD KNOWFAX TABLE PRSNCARD 'Навыки работы с факсом'; DESCRIBE FIELD KNOWATC TABLE PRSNCARD 'Навыки работы с офисными АТС'; DESCRIBE FIELD KNOWSCAN TABLE PRSNCARD 'Навыки работы со сканером'; DESCRIBE FIELD JOBMST TABLE PRSNCARD 'Желание работать на основном месте работы'; DESCRIBE FIELD JOBSLV TABLE PRSNCARD 'Желание работать по совместительству'; DESCRIBE FIELD JOBRENT TABLE PRSNCARD 'Желание работать по договору подряда'; DESCRIBE FIELD TRIPTYPE TABLE PRSNCARD 'Желание ездить в командировки 1 - никогда 2 - иногда 3 - часто'; DESCRIBE FIELD RESIDENCE TABLE PRSNCARD 'Желательное месторасположение компании'; DESCRIBE FIELD PRSNCOMMENT TABLE PRSNCARD 'Личные примечания'; DESCRIBE FIELD WARDUTY TABLE PRSNCARD 'Военнообязанный 0 - нет 1 - да'; DESCRIBE FIELD WARRANK TABLE PRSNCARD 'Воинское звание'; DESCRIBE FIELD WARREGION TABLE PRSNCARD 'Где служил (служба в армии)'; DESCRIBE FIELD HOBBY TABLE PRSNCARD 'Увлечения'; DESCRIBE FIELD WANTEDEXPERIENCE TABLE PRSNCARD 'Желание приобрести новые навыки'; DESCRIBE FIELD HABITSMOKE TABLE PRSNCARD 'Курение (да / нет)'; DESCRIBE FIELD HABITALCOHOL TABLE PRSNCARD 'Употребляет ли алкоголь'; DESCRIBE FIELD HABITDRUG TABLE PRSNCARD 'Употребляет ли наркотики'; DESCRIBE FIELD HABITJAIL TABLE PRSNCARD 'Судимость (признак)'; DESCRIBE FIELD EDUTYPE TABLE PRSNCARD 'Вид образования 1 - неполное среднее 2 - среднее специальное 3 - среднее техническое 4 - неполное высшее 5 - высшее 6 - академическое'; DESCRIBE FIELD BIRTHPLACE TABLE PRSNCARD 'Место рождения'; DESCRIBE FIELD WORKBOOKNBR TABLE PRSNCARD 'Номер трудовой книжки'; DESCRIBE FIELD FOREIGNPASPORT TABLE PRSNCARD 'Наличие загранпаспорта'; DESCRIBE FIELD WARDRAFT TABLE PRSNCARD 'Военнообязанный'; DESCRIBE FIELD PHONE TABLE PRSNCARD 'Контактный телефон'; DESCRIBE FIELD EMAIL TABLE PRSNCARD 'E-mail'; DESCRIBE FIELD WARINFO TABLE PRSNCARD 'Инф. о прохождении военной службы'; DESCRIBE FIELD INVALIDGRP TABLE PRSNCARD 'Степень инвалидности'; DESCRIBE FIELD KINSFOLK TABLE PRSNCARD 'Родня'; DESCRIBE FIELD PRSNID TABLE PRSNMOVE 'Сотрудник'; DESCRIBE FIELD PODRID TABLE PRSNMOVE 'Подразделение (новое значение - для перемещения) Ссылка на PODRLIST'; DESCRIBE FIELD POSTID TABLE PRSNMOVE 'Должность (новое значение - для перемещения) Ссылка на PRSNPOST'; DESCRIBE FIELD PODRPOSTID TABLE PRSNMOVE 'Должность в организационной структуре (штатное расписание) '; DESCRIBE FIELD DAT_ TABLE PRSNMOVE 'Дата операции'; DESCRIBE FIELD NBR TABLE PRSNMOVE '№ документа (приказа)'; DESCRIBE FIELD DOCDATE TABLE PRSNMOVE 'Дата документа (приказа)'; DESCRIBE FIELD TYP TABLE PRSNMOVE 'Вид операции: 0 - Прием на работу 1 - Перемещение 2 - Увольнение'; DESCRIBE FIELD WTYP TABLE PRSNMOVE 'Признак работы: 0 - основное место работы 1 - работа по совместительству 2 - работа по договору подряда'; DESCRIBE FIELD OKLAD TABLE PRSNMOVE 'Оклад (справочное значение)'; DESCRIBE FIELD NBR TABLE PRSNOPER 'Номер'; DESCRIBE FIELD BDATE TABLE PRSNOPER 'Начало периода'; DESCRIBE FIELD EDATE TABLE PRSNOPER 'Окончание периода'; DESCRIBE FIELD COMMENT TABLE PRSNOPER 'Комментарий'; DESCRIBE FIELD STRVAL1 TABLE PRSNOPER 'Строковая переменная 1'; DESCRIBE FIELD STRVAL2 TABLE PRSNOPER 'Строковая переменная 2'; DESCRIBE FIELD INTVAL1 TABLE PRSNOPER 'Целочисленная переменная 1'; DESCRIBE FIELD ASTATUS TABLE PRSNOPER 'Состояние операции: 0 - запланированная 1 - завершенная'; DESCRIBE FIELD ORGN_ID TABLE PRSNOPER 'Ссылка на организацию (ORGN)'; DESCRIBE FIELD POST_ID TABLE PRSNOPER 'Ссылка на профессию (PRSNPOST)'; DESCRIBE FIELD NAME TABLE PRSNOPERTYPE 'Наименование'; DESCRIBE FIELD ATYPE TABLE PRSNOPERTYPE 'Тип операции: 0 - стандартная 1 - пользовательская'; DESCRIBE FIELD STRVAL1_NAME TABLE PRSNOPERTYPE 'Имя строковой переменной SVAL1'; DESCRIBE FIELD STRVAL2_NAME TABLE PRSNOPERTYPE 'Имя строковой переменной SVAL2'; DESCRIBE FIELD INTVAL1_NAME TABLE PRSNOPERTYPE 'Имя целочисленной переменной IVAL1'; DESCRIBE FIELD ORGNID_NAME TABLE PRSNOPERTYPE 'Имя ссылки на организацию'; DESCRIBE FIELD POSTID_NAME TABLE PRSNOPERTYPE 'Имя ссылки на профессию'; DESCRIBE FIELD NAME TABLE PRSNPOST 'Наименование должности'; DESCRIBE FIELD PRSNID TABLE PRSNPOSTPROF 'Личное дело (PRSNCARD)'; DESCRIBE FIELD COMMENT TABLE PRSNPOSTPROF 'Комментарий'; DESCRIBE FIELD PROFNAME TABLE PRSNPOSTPROF 'Профессия (остается навсякий случай)'; DESCRIBE FIELD POSTID TABLE PRSNPOSTPROF 'Профессия (PRSNPOST)'; DESCRIBE FIELD ID TABLE PRSNTEST '№ п.п.'; DESCRIBE FIELD PRSNID TABLE PRSNTEST 'Ссылка на личное дело (поле ID таблицы PRSNCARD)'; DESCRIBE FIELD DAT_ TABLE PRSNTEST 'Дата тестирования'; DESCRIBE FIELD HPTID TABLE PRSNTEST 'Ссылка на тест в справочнике тестов (поле ID в таблице HBPRSNTEST)'; DESCRIBE FIELD RESVAL TABLE PRSNTEST 'Результаты'; DESCRIBE FIELD GRAPH TABLE PRSNTEST 'График по значениям результатов'; DESCRIBE FIELD IMGGRAPHTYP TABLE PRSNTEST 'Формат изображения (поле GRAPH) 0 - BMP 1 - JPG 2 - GIF'; DESCRIBE FIELD INTERP TABLE PRSNTEST 'Интерпретация'; DESCRIBE FIELD ID TABLE PTANSW '№ п.п.'; DESCRIBE FIELD QUESTID TABLE PTANSW 'Ссылка на вопрос в таблице вопросов (поле ID таблицы PTQUEST)'; DESCRIBE FIELD IDINGROUP TABLE PTANSW '№ п.п. в пределах группы Если ParentID is null, то № п.п. ответа в пределах вопроса'; DESCRIBE FIELD TEXT TABLE PTANSW 'Содержит текст ответа'; DESCRIBE FIELD ID TABLE PTQUEST '№ п.п.'; DESCRIBE FIELD HPTID TABLE PTQUEST 'Ссылка на тест в справочнике тестов (поле ID таблицы HBPRSNTEST)'; DESCRIBE FIELD PARENTID TABLE PTQUEST 'Ссылка на группу (поле ID этой таблицы)'; DESCRIBE FIELD IDINGROUP TABLE PTQUEST '№ п.п. в пределах группы Если ParentID is null, то № п.п. вопроса в пределах теста'; DESCRIBE FIELD TEXT TABLE PTQUEST 'Содержит текст вопроса'; DESCRIBE FIELD ID TABLE REGION 'Уникальный код записи'; DESCRIBE FIELD NAME TABLE REGION 'Наименование - страна, область, город'; DESCRIBE FIELD OWNER TABLE REGION 'Владелец: Для страны - ссылка на самого себя (ID = OWNER) Для области - ссылка на страну Для Города - ссылка на область'; DESCRIBE FIELD ID TABLE REPLICATIONLOG 'Унакальный код записи'; DESCRIBE FIELD OFFICE TABLE REPLICATIONLOG 'Офис-источник'; DESCRIBE FIELD OFFICEID TABLE REPLICATIONLOG 'Офис-получатель'; DESCRIBE FIELD DAT_ TABLE REPLICATIONLOG 'Дата/время создания записи репликации'; DESCRIBE FIELD RECID TABLE REPLICATIONLOG 'ID записи (главный)'; DESCRIBE FIELD OLDID TABLE REPLICATIONLOG 'ID записи (местный)'; DESCRIBE FIELD RELATION_NAME TABLE REPLICATIONLOG 'Имя таблицы'; DESCRIBE FIELD FIELD_NAME TABLE REPLICATIONLOG 'Имя поля'; DESCRIBE FIELD FIELD_VALUE TABLE REPLICATIONLOG 'Значение поля'; DESCRIBE FIELD BLOB_VALUE TABLE REPLICATIONLOG 'Значение для BLOB-поля'; DESCRIBE FIELD OPERATION TABLE REPLICATIONLOG 'Код операции 0 - запись добавлена 1 - запись изменена 2 - запись удалена 3 - записи присвоен главный ID'; DESCRIBE FIELD ID TABLE RESERVLOG 'Уникальный ключ записи'; DESCRIBE FIELD USERID TABLE RESERVLOG 'Пользователь, создавший резерв'; DESCRIBE FIELD EUSERID TABLE RESERVLOG 'Пользователь, закрывший резерв'; DESCRIBE FIELD MANAGER TABLE RESERVLOG 'Менеджер'; DESCRIBE FIELD PRSNID TABLE RESERVLOG 'ID сотрудника в расходной накладной (PERSONAL)'; DESCRIBE FIELD GDSKEY TABLE RESERVLOG 'ID товара (GOODS)'; DESCRIBE FIELD DGVKEY TABLE RESERVLOG 'ID накладной (DGVDT)'; DESCRIBE FIELD GDDKTKEY TABLE RESERVLOG 'ID позиции товара в приходной накладной (GDDKT)'; DESCRIBE FIELD GDDKEY TABLE RESERVLOG 'ID позиции товара в расходной накладной (GDDDT)'; DESCRIBE FIELD QUANT TABLE RESERVLOG 'Количество товара'; DESCRIBE FIELD PRICE TABLE RESERVLOG 'Цена реализации'; DESCRIBE FIELD NDS TABLE RESERVLOG 'НДС реализации'; DESCRIBE FIELD BDATETIME TABLE RESERVLOG 'Дата/время начала резерва (момент совершения операции резервирования при редактировании документа)'; DESCRIBE FIELD EDATETIME TABLE RESERVLOG 'Дата/время завершения резерва'; DESCRIBE FIELD USERNAME TABLE RESERVLOG '(не используется)'; DESCRIBE FIELD ATYPE TABLE RIGHT_LIST 'Тип параметра: 0 - системный 1 - внешнего разработчика'; DESCRIBE FIELD BY_ORGN TABLE RIGHT_LIST '0 - одно значение на все организации 1 - для каждой организации свое значение'; DESCRIBE FIELD ID TABLE SALE 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE SALE 'Дата платежа'; DESCRIBE FIELD NBR TABLE SALE '№ документа'; DESCRIBE FIELD SUMMA TABLE SALE 'Сумма платежа'; DESCRIBE FIELD SUMM TABLE SALE 'Остаток нераспределенной суммы'; DESCRIBE FIELD CSUMMA TABLE SALE 'Сумма в валюте'; DESCRIBE FIELD CSUMM TABLE SALE 'Остаток нераспределенной суммы в валюте'; DESCRIBE FIELD CURRTYP TABLE SALE 'Тип валюты (ссылка на поле ID таблицы CURRTYP)'; DESCRIBE FIELD CURS TABLE SALE 'Курс валюты'; DESCRIBE FIELD CTYP TABLE SALE 'Признак валютного платежа. 0 - платеж в нац. валюте 1 - платеж в иностранной валюте'; DESCRIBE FIELD NAMEID TABLE SALE 'Плательщик (Контрагент). Ссылка на поле ID таблицы ORGN'; DESCRIBE FIELD TYP TABLE SALE 'В наст. время не используется.'; DESCRIBE FIELD DGVKEY TABLE SALE 'Не используется (Сыылка на накладную - возврат товара заказчиком, авто-оплата) В приходной накладной (DGVKT) есть поле SALEDTID'; DESCRIBE FIELD SUBTYP TABLE SALE 'В наст. время не используется.'; DESCRIBE FIELD PRSNID TABLE SALE 'Сотрудник (ссылка на поле ID таблицы PERSONAL).'; DESCRIBE FIELD OPERID TABLE SALE 'Ссылка на операцию по формированию проводок (на поле ID таблицы ACOPRLST)'; DESCRIBE FIELD SYSTEM_FLAG TABLE SALE ' = 2 - возврат товара'; DESCRIBE FIELD MANAGER TABLE SALE 'Менеджер (ссылка на поле ID таблицы PERSONAL).'; DESCRIBE FIELD OURACCNID TABLE SALE 'Расчетный счет Получателя (наш) - ссылка на ORGNBANKACCN'; DESCRIBE FIELD ACCNID TABLE SALE 'Ссылка на расчетный счет плательщика (контрагента) ORGNBANKACCN'; DESCRIBE FIELD OURACCNNDSID TABLE SALE 'Расчетный счет для НДС Получателя (наш)'; DESCRIBE FIELD ACCNNDSID TABLE SALE 'Расчетный счет для НДС Плательщика (контрагента)'; DESCRIBE FIELD COMMENT TABLE SALE 'Назначение Платежа (примечание)'; DESCRIBE FIELD COMMENTNDS TABLE SALE 'Назначение платежа (для НДС)'; DESCRIBE FIELD PODRID TABLE SALE 'Подразделение'; DESCRIBE FIELD NNBR TABLE SALE 'Номер налоговой накладной'; DESCRIBE FIELD REMARK TABLE SALE 'Комментарий'; DESCRIBE FIELD DGVKEY TABLE SALECROS 'Расходная накладная (ссылка на поле ID таблицы DGVDT)'; DESCRIBE FIELD SALEKEY TABLE SALECROS 'Оплата (ссылка на поле ID таблицы SALE)'; DESCRIBE FIELD SZDTCRID TABLE SALECROS 'Ссылка на распределенную оплату в заказ (SZDTCR)'; DESCRIBE FIELD SUMMA TABLE SALECROS 'Сумма, которой оплачена накладная (может быть меньше суммы самой оплаты)'; DESCRIBE FIELD CSUMMA TABLE SALECROS 'Сумма оплаты в валюте (экспорт)'; DESCRIBE FIELD SUMM TABLE SALECROS 'Курсовая разница (Экспорт)'; DESCRIBE FIELD ID TABLE SALEKT 'Уникальный код записи'; DESCRIBE FIELD OURORGNID TABLE SALEKT 'Ссылка на предприятие (ORGN)'; DESCRIBE FIELD DAT_ TABLE SALEKT 'Дата формирования документа'; DESCRIBE FIELD NBR TABLE SALEKT '№ документа'; DESCRIBE FIELD SUMMA TABLE SALEKT 'Сумма по документу'; DESCRIBE FIELD SUMM TABLE SALEKT 'Остаток неразнесенной суммы'; DESCRIBE FIELD NAMEID TABLE SALEKT 'Контрагент (получатель платежа)'; DESCRIBE FIELD SALEDATE TABLE SALEKT 'Дата прохождения платежа'; DESCRIBE FIELD OPERID TABLE SALEKT 'Код операции (для формирования проводок)'; DESCRIBE FIELD PRSNID TABLE SALEKT 'Подотчетное лицо'; DESCRIBE FIELD OURACCNID TABLE SALEKT 'Расчетный счет Плательщика (наш) - ссылка на ORGNBANKACCN'; DESCRIBE FIELD ACCNID TABLE SALEKT 'Расчетный счет получателя (контрагента) ORGNBANKACCN'; DESCRIBE FIELD OURACCNNDSID TABLE SALEKT 'Расчетный счет Плательщика для НДС (наш)'; DESCRIBE FIELD ACCNNDSID TABLE SALEKT 'Расчетный счет получателя для НДС (контрагента)'; DESCRIBE FIELD COMMENT TABLE SALEKT 'Назначение платежа (примечание)'; DESCRIBE FIELD COMMENTNDS TABLE SALEKT 'Назначение платежа (для НДС)'; DESCRIBE FIELD CTYP TABLE SALEKT 'Признак платежа в валюте: 0 - платеж в национальной валюте 1 - платеж в иностранной валюте'; DESCRIBE FIELD CURRTYP TABLE SALEKT 'Тип валюты'; DESCRIBE FIELD CSUMMA TABLE SALEKT 'Сумма в валюте'; DESCRIBE FIELD CSUMM TABLE SALEKT 'Остаток неразнесенной суммы в валюте'; DESCRIBE FIELD CURS TABLE SALEKT 'Курс валюты'; DESCRIBE FIELD BDATE TABLE SALEKT 'Продажа валюты - дата валютирования'; DESCRIBE FIELD BCURS TABLE SALEKT 'Продажа валюты - биржевой курс'; DESCRIBE FIELD BSUMMA TABLE SALEKT 'Продажа валюты - сумма проданой валюты'; DESCRIBE FIELD BKSUMMA TABLE SALEKT 'Продажа валюты - сумма комиссионных'; DESCRIBE FIELD BESUMMA TABLE SALEKT 'Продажа валюты - сумма для зачисления'; DESCRIBE FIELD BACCNID TABLE SALEKT 'Расчетный счет для зачисления (при продаже валюты)'; DESCRIBE FIELD BSALEDTID TABLE SALEKT 'Продажа валюты - дебиторский платеж'; DESCRIBE FIELD ORGNINFOID TABLE SALEKT 'Ссылка на Договор / Контракт (ORGNINFO)'; DESCRIBE FIELD PODRID TABLE SALEKT 'Подразделение (PODRLIST)'; DESCRIBE FIELD CALCNDS TABLE SALEKT 'Авто-расчет НДС'; DESCRIBE FIELD USERNAME TABLE SALEKT 'Имя пользователя'; DESCRIBE FIELD REMARK TABLE SALEKT 'Комментарий'; DESCRIBE FIELD ID TABLE SALEKUCR 'Уникальный код записи'; DESCRIBE FIELD DGVKEY TABLE SALEKUCR 'Ссылка на Акт (DGVKTU)'; DESCRIBE FIELD SALEKEY TABLE SALEKUCR 'Ссылка на платежный документ (SALEKT)'; DESCRIBE FIELD SUMMA TABLE SALEKUCR 'Сумма оплаты'; DESCRIBE FIELD CSUMMA TABLE SALEKUCR 'Сумма оплаты в валюте'; DESCRIBE FIELD SUMM TABLE SALEKUCR 'Курсовая разница (бухг.)'; DESCRIBE FIELD CARDTID TABLE SC_CARDS 'Для связи с СARDID'; DESCRIBE FIELD GOODSID TABLE SC_CARDS 'Для связи с GOODS'; DESCRIBE FIELD QUANT TABLE SC_CARDS 'Сейчас не использ.'; DESCRIBE FIELD PRICE TABLE SC_CARDS 'Цена из Goods'; DESCRIBE FIELD DAT_N TABLE SC_CARDT 'Дата продажи'; DESCRIBE FIELD GDSKEY TABLE SC_CARDT 'для связи с GOODS'; DESCRIBE FIELD SNBR TABLE SC_CARDT 'серийный номер'; DESCRIBE FIELD ZNBR TABLE SC_CARDT 'Заводской номер'; DESCRIBE FIELD DAT_K TABLE SC_CARDT 'Дата окончания гарантии'; DESCRIBE FIELD GARANT TABLE SC_CARDT 'Гарантия'; DESCRIBE FIELD ORGNID TABLE SC_CARDT 'для связи с ORGN'; DESCRIBE FIELD PRICE TABLE SC_CARDT 'Цена (стоимость изделия)'; DESCRIBE FIELD CASH_DOC_NBR TABLE SC_CARDT 'Номер кассового чека'; DESCRIBE FIELD WARRANTY_DOC_NBR TABLE SC_CARDT 'Номер гарантийного ремонта'; DESCRIBE FIELD CARDTID TABLE SC_REMO 'для связи с SC_CARDT карточки(серв.центр)'; DESCRIBE FIELD DGVKEY TABLE SC_REMO 'для связи с DGVDT'; DESCRIBE FIELD DAT_N TABLE SC_REMO 'дата начала ремонта'; DESCRIBE FIELD DAT_K TABLE SC_REMO 'дата конца ремонта'; DESCRIBE FIELD DATE_INP TABLE SC_REMO 'Дата приема'; DESCRIBE FIELD DATE_OUT TABLE SC_REMO 'Дата выдачи'; DESCRIBE FIELD NBR TABLE SC_REMO '№ ремонта (документа)'; DESCRIBE FIELD TOTAL TABLE SC_REMO 'по просьбе дома кофе'; DESCRIBE FIELD NEPOL TABLE SC_REMO 'Заявленные неполадки'; DESCRIBE FIELD PROC_JOB TABLE SC_REMO 'процент скидки с работы'; DESCRIBE FIELD PROC_GOODS TABLE SC_REMO 'процент скидки с товара'; DESCRIBE FIELD SUM_JOB TABLE SC_REMO 'Сумма по работам со скидкой'; DESCRIBE FIELD SUM_GOODS TABLE SC_REMO 'Сумма по запчастям со скидкой'; DESCRIBE FIELD SUMMA TABLE SC_REMO 'Общая сумма со скидкой'; DESCRIBE FIELD ORGPRSN TABLE SC_REMO 'Принято от'; DESCRIBE FIELD ORGADDR TABLE SC_REMO 'Адрес и тел.'; DESCRIBE FIELD DTKTID TABLE SC_REMO 'Категория задолжености'; DESCRIBE FIELD SMSPHONE TABLE SC_REMO 'Телефон (SMS-уведомления)'; DESCRIBE FIELD REMOTYPEID TABLE SC_REMO 'Тип ремонта'; DESCRIBE FIELD PROC_COMMENT TABLE SC_REMO 'Примечание (скидка)'; DESCRIBE FIELD USERID TABLE SC_REMO 'Пользователь'; DESCRIBE FIELD LASTEDIT TABLE SC_REMO 'Дата/время последнего изменения записи'; DESCRIBE FIELD REMOID TABLE SC_REMONT 'ссылка на SC_REMO (карточки ремонта)'; DESCRIBE FIELD CENA TABLE SC_REMONT 'Цена работы (без скидки)'; DESCRIBE FIELD PRSNID TABLE SC_REMONT 'ссылка на PERSONAL'; DESCRIBE FIELD JOBID TABLE SC_REMONT 'для связи с ZPLTJOBSLIST справочник работ (зарплата)'; DESCRIBE FIELD WTIME TABLE SC_REMONT 'Время затраченное на работу в минутах'; DESCRIBE FIELD PRICEG TABLE SC_REMONT 'Сумма за товар в работе (без скидки)'; DESCRIBE FIELD CENA_PROC TABLE SC_REMONT 'Цена работы со скидкой'; DESCRIBE FIELD PRICEG_PROC TABLE SC_REMONT 'Сумма запчастей (со скидкой)'; DESCRIBE FIELD REMOID TABLE SC_REMONT1 'Ссылка на ремонт - SC_REMO'; DESCRIBE FIELD JOBID TABLE SC_REMONT1 'Ссылка на работу - ZPLTJOBSLIST'; DESCRIBE FIELD ID TABLE SC_REMO_TYPE 'Уникальный ключ записи'; DESCRIBE FIELD NAME TABLE SC_REMO_TYPE 'Наименование типа ремонта'; DESCRIBE FIELD CODE TABLE SC_REMO_TYPE 'Код типа ремонта'; DESCRIBE FIELD COLOR TABLE SC_REMO_TYPE 'Цвет'; DESCRIBE FIELD WARRANTY TABLE SC_REMO_TYPE 'Признак - Гарантийный ремонт'; DESCRIBE FIELD DTKTID TABLE SC_REMO_TYPE 'Категория задолженности'; DESCRIBE FIELD USERID TABLE SC_REMO_TYPE 'ID пользователя (создание/редактирование записи)'; DESCRIBE FIELD LASTEDIT TABLE SC_REMO_TYPE 'Дата/время последнего изменения записи'; DESCRIBE FIELD REMID TABLE SC_REMZAP 'ссылка на SC_REMONT'; DESCRIBE FIELD GOODSID TABLE SC_REMZAP 'ссылка на GOODS'; DESCRIBE FIELD PRICE TABLE SC_REMZAP 'Цена без скидки'; DESCRIBE FIELD QUANT TABLE SC_REMZAP 'Количество'; DESCRIBE FIELD SUMMA TABLE SC_REMZAP 'Сумма (со скидкой)'; DESCRIBE FIELD PRICE_PROC TABLE SC_REMZAP 'Цена со скидкой'; DESCRIBE FIELD ID TABLE STORACCN 'Уникальный код записи'; DESCRIBE FIELD OPER TABLE STORACCN 'Тип операции (заполняется не всегда, надежнее смотреть OPER в таблице ACOPRLST)'; DESCRIBE FIELD OPERID TABLE STORACCN 'Привязка к операции (на поле ID таблицы ACOPRLST)'; DESCRIBE FIELD DT TABLE STORACCN 'Счет - дебет'; DESCRIBE FIELD KT TABLE STORACCN 'Счет - кредит'; DESCRIBE FIELD SUMTYP TABLE STORACCN 'Вид суммы, зависит от конкретного первичного документа'; DESCRIBE FIELD COMMENT TABLE STORACCN 'Примечание в проводке, используется как правило при отсутствии такового в первичном документе.'; DESCRIBE FIELD STORNO TABLE STORACCN 'Признак "Сторно", сумма меняет знак'; DESCRIBE FIELD ACCNDATE TABLE STORACCN 'Признак Даты, по которой формируется проводка. Зависит от конкретного первичного документа.'; DESCRIBE FIELD FINRES TABLE STORACCN 'Финансовый результат: 0 - при отрицательной сумме - обнулить 1 - при отрицательной сумме - оставить как есть 2 - при отрицательной сумме - поменять корреспонденцию'; DESCRIBE FIELD PROC TABLE STORACCN 'Процент от указанной суммы (исп. если <> 0).'; DESCRIBE FIELD DEFAULTCLIENTID TABLE STORGRP 'Клиент по умолчанию для Группы складов используется в модуле Shopseller.ManagerPanel для закрытия кассового дня.'; DESCRIBE FIELD ID TABLE STORGRPREF 'Уникальный код записи'; DESCRIBE FIELD STORID TABLE STORGRPREF 'Ссылка на Склад (на поле ID таблицы STORLIST)'; DESCRIBE FIELD GRPID TABLE STORGRPREF 'Ссылка на группу (на поле ID таблицы STORGRP)'; DESCRIBE FIELD POSNO TABLE STORGRPREF 'Позиция склада в группе складов'; DESCRIBE FIELD COST TABLE STORGRP_NCOST 'Стоимость'; DESCRIBE FIELD RND TABLE STORGRP_NCOST 'Округление'; DESCRIBE FIELD ID TABLE STORLIST 'Уникальный код записи'; DESCRIBE FIELD OURORGNID TABLE STORLIST 'Предприятие'; DESCRIBE FIELD COD TABLE STORLIST 'Код'; DESCRIBE FIELD NAME TABLE STORLIST 'Наименование Склада'; DESCRIBE FIELD OWNER TABLE STORLIST 'Материально-ответственное лицо'; DESCRIBE FIELD OWNPRSNID TABLE STORLIST 'Зав. складом (сотрудник)'; DESCRIBE FIELD ACCN TABLE STORLIST 'Счет (не используется)'; DESCRIBE FIELD NDSTYP TABLE STORLIST 'Тип начисления НДС 0 - НДС с торговой надбавки (в настоящее время не применяется) 1 - НДС со всей суммы'; DESCRIBE FIELD TYP TABLE STORLIST 'Тип Склада 0 - Обычный Склад 1 - Товар в Рознице 2 - Товар на ответственном хранении 3 - Производственный Склад (Производство, Цех) 4 - Товар, переданный на комиссию 5 - Комиссия (валюта)'; DESCRIBE FIELD NDSPROC TABLE STORLIST 'Ставка НДС (в %)'; DESCRIBE FIELD OPERIDEXTN TABLE STORLIST 'Операция - оприходование товара'; DESCRIBE FIELD OPERIDKTRT TABLE STORLIST 'Операция - возврат товара заказчиком'; DESCRIBE FIELD OPERIDKTWK TABLE STORLIST 'Операция - оприходование изделий'; DESCRIBE FIELD OPERIDIMPT TABLE STORLIST 'Операция - оприходование импорта'; DESCRIBE FIELD OPERIDREAL TABLE STORLIST 'Операция - реализация'; DESCRIBE FIELD OPERIDINTR TABLE STORLIST 'Операция - внутренняя передача'; DESCRIBE FIELD OPERIDEXPT TABLE STORLIST 'Операция - экспорт'; DESCRIBE FIELD OPERIDPRIC TABLE STORLIST 'Операция - переоценка'; DESCRIBE FIELD OPERIDDTRT TABLE STORLIST 'Операция - возврат товара поставщику'; DESCRIBE FIELD OPERIDMAIN TABLE STORLIST 'Операция - списание ОС'; DESCRIBE FIELD OPERID_MBP TABLE STORLIST 'Операция - списание МБП'; DESCRIBE FIELD OPERID_TMC TABLE STORLIST 'Операция - списание ТМЦ'; DESCRIBE FIELD COLOR TABLE STORLIST 'Цвет'; DESCRIBE FIELD USERNAME TABLE STORLIST 'Имя пользователя'; DESCRIBE FIELD OURORGNID TABLE STORZAKAZDT 'Предприятие'; DESCRIBE FIELD DAT_ TABLE STORZAKAZDT 'Дата формирования заказа'; DESCRIBE FIELD NBR TABLE STORZAKAZDT '№ документа'; DESCRIBE FIELD MANAGER TABLE STORZAKAZDT 'Менеджер заказа (по умолчанию для накладных)'; DESCRIBE FIELD SUMMA TABLE STORZAKAZDT 'Сумма заказа'; DESCRIBE FIELD SLSUMMA TABLE STORZAKAZDT 'Сумма к оплате'; DESCRIBE FIELD SALESUMMA TABLE STORZAKAZDT 'Сумма оплаты (распределено)'; DESCRIBE FIELD SUMM TABLE STORZAKAZDT 'Остаток нераспределенной в накладные суммы оплаты'; DESCRIBE FIELD CSUMMA TABLE STORZAKAZDT 'С!умма (в валюте)'; DESCRIBE FIELD CSLSUMMA TABLE STORZAKAZDT 'Сумма к оплате (в валюте)'; DESCRIBE FIELD SCSUMMA TABLE STORZAKAZDT 'Сумма оплаты (в валюте)'; DESCRIBE FIELD SALEDATE TABLE STORZAKAZDT 'Дата оплаты'; DESCRIBE FIELD COMMENT TABLE STORZAKAZDT 'Примечание'; DESCRIBE FIELD ORGNID TABLE STORZAKAZDT 'Контрагент'; DESCRIBE FIELD CREATEDATETIME TABLE STORZAKAZDT 'Дата / время создания'; DESCRIBE FIELD READYPDATETIME TABLE STORZAKAZDT 'Плановая дата готовности'; DESCRIBE FIELD READYFDATETIME TABLE STORZAKAZDT 'Фактическая дата готовности'; DESCRIBE FIELD STATE TABLE STORZAKAZDT 'Статус: 0 - заказ открыт xxx 1 - заказ сформирован (закрыт от изменений) - резервирование товара xxx 2 - передача изделий в производство 3 - заказ исполнен 4 - заказ закрыт 5 - "архивный"'; DESCRIBE FIELD STORGRPID TABLE STORZAKAZDT 'Группа складов (для оценки наличия товара)'; DESCRIBE FIELD OURACCNID TABLE STORZAKAZDT 'Расчетный счет поставщика товара (наш)'; DESCRIBE FIELD ORGACCNID TABLE STORZAKAZDT 'Расчетный счет получателя товара (контрагента)'; DESCRIBE FIELD DDATE TABLE STORZAKAZDT 'Дата выписки доверенности'; DESCRIBE FIELD DNBR TABLE STORZAKAZDT '№ доверенности'; DESCRIBE FIELD DPRSN TABLE STORZAKAZDT 'Выдано (доверенность)'; DESCRIBE FIELD DDOC TABLE STORZAKAZDT 'по документу (доверенность)'; DESCRIBE FIELD NDATE TABLE STORZAKAZDT 'Дата налоговой накладной'; DESCRIBE FIELD NNBR TABLE STORZAKAZDT '№ налоговой накладной'; DESCRIBE FIELD SALECOND TABLE STORZAKAZDT 'Условие продажи'; DESCRIBE FIELD SALEFORM TABLE STORZAKAZDT 'Форма оплаты'; DESCRIBE FIELD CSDTKTHBID TABLE STORZAKAZDT 'Категория задолженности'; DESCRIBE FIELD ORGNINFOID TABLE STORZAKAZDT 'Ссылка на договор'; DESCRIBE FIELD SUBSCRIBE TABLE STORZAKAZDT 'Признак "Утвержден"'; DESCRIBE FIELD TRANSFER TABLE STORZAKAZDT 'Доставка (описание)'; DESCRIBE FIELD NN TABLE STORZAKAZDT '№ расх. накладной'; DESCRIBE FIELD NZ TABLE STORZAKAZDT '№ заявки'; DESCRIBE FIELD OUT_DATE TABLE STORZAKAZDT 'Дата отгрузки'; DESCRIBE FIELD TRDPID TABLE STORZAKAZDT 'Торговая точка'; DESCRIBE FIELD EGRNN TABLE STORZAKAZDT 'Признак - налоговая накладная включена в ЕГРНН (Единый государственный реестр налоговых накладных)'; DESCRIBE FIELD ROUNDNDS TABLE STORZAKAZDT 'Признак - округлять НДС (до копеек)'; DESCRIBE FIELD BONUSPROC TABLE STORZAKAZDT '% Бонуса (Дисконт)'; DESCRIBE FIELD SZID TABLE STORZDTGDS 'ID заказа'; DESCRIBE FIELD GODSID TABLE STORZDTGDS 'ID товара'; DESCRIBE FIELD SOURCE TABLE STORZDTGDS 'Кол-во товара в заказе'; DESCRIBE FIELD RSQUANT TABLE STORZDTGDS 'зарезервировано товара'; DESCRIBE FIELD BQUANT TABLE STORZDTGDS 'Баланс (при принудительном закрытии заказа) SOURCE-RSQUANT'; DESCRIBE FIELD SRC_ONE TABLE STORZDTGDS 'Кол-во (шт.)'; DESCRIBE FIELD SQNT_ONE TABLE STORZDTGDS 'Зарезервировано товара (в шт.)'; DESCRIBE FIELD PRICE TABLE STORZDTGDS 'Отпускная цена (с НДС)'; DESCRIBE FIELD DESCRIPTION TABLE STORZDTGDS 'Описание товара'; DESCRIBE FIELD PRICEID TABLE STORZDTGDS 'Прайс-лист (при выборе цен по прайс-листу)'; DESCRIBE FIELD DISCOUNTBONUSSETID TABLE STORZDTGDS 'Идентификатор набора скидок и бонусов'; DESCRIBE FIELD OURORGNID TABLE SUB 'Предприятие'; DESCRIBE FIELD ACCN TABLE SUB 'Номер счета (см. Поле ACCN таблицы ACCNPLAN)'; DESCRIBE FIELD AN TABLE SUB 'Тип аналитики определяет соотв. куда указывает поле SUBKEY 0 - дополнительная аналитика (на таблицу LEV) 1 - Организации (на таблицу ORGN) 2 - Товары (на таблицу GOODS) 3 - Сотрудники (на таблицу PERSONAL) 4 - Склады (на таблицу STORLIST) 5 - Подразделения (на таблицу PODRLIST) 6 - Расчетные Счета (на таблицу ORGNBANKACCN) 7 - Кассы (на таблицу KASSLIST) 8 - Валовые доходы (LEV) 9 - Валовые расходы (LEV)'; DESCRIBE FIELD SUBKEY TABLE SUB 'Код аналитики - ссылка на соотв. справочник зависит от вида аналитики (поле AN)'; DESCRIBE FIELD SALDO TABLE SUB 'Сальдо в нац. валюте ("+" дебет / "-" кредит)'; DESCRIBE FIELD CSALDO TABLE SUB 'Сальдо в валюте (для валютных счетов)'; DESCRIBE FIELD OURORGNID TABLE SYSCONST 'Предприятие, к которому относится константа (для настроек в целом по БД = NULL)'; DESCRIBE FIELD USERID TABLE SYSCONST 'ID пользователя-владельца (для индивидуальных настроек пользователей)'; DESCRIBE FIELD NAME TABLE SYSCONST 'Наименование константы'; DESCRIBE FIELD VAL TABLE SYSCONST 'Значение константы (числовые значения записываются в строковом представлении)'; DESCRIBE FIELD BLOBVAL TABLE SYSCONST 'Используется для хранения BLOB-параметра'; DESCRIBE FIELD OURORGNID TABLE SYSLOG 'ID предприятия'; DESCRIBE FIELD OBJID TABLE SYSLOG 'ID объекта'; DESCRIBE FIELD USERID TABLE SYSLOG 'ID пользователя'; DESCRIBE FIELD ID TABLE SZDTCR 'Уникальный код записи'; DESCRIBE FIELD SALEID TABLE SZDTCR 'ID оплаты (SALE)'; DESCRIBE FIELD SZDTID TABLE SZDTCR 'ID заказа (STORZAKAZDT)'; DESCRIBE FIELD SUMMA TABLE SZDTCR 'Сумма распределенной оплаты (в нац. валюте)'; DESCRIBE FIELD CSUMMA TABLE SZDTCR 'Сумма распределенной оплаты (в иностр. валюте)'; DESCRIBE FIELD SUMM TABLE SZDTCR 'Курсовая разница (в нац. валюте)'; DESCRIBE FIELD USERNAME TABLE SZDTCR 'Пользователь'; DESCRIBE FIELD LASTEDIT TABLE SZDTCR 'Дата/Время создания/изменения записи'; DESCRIBE FIELD USERID TABLE USERGGRP 'Пользователь для которого разрешен доступ (ссылка на USERLIST)'; DESCRIBE FIELD GGRPID TABLE USERGGRP 'Группа товара к которой разрешен доступ'; DESCRIBE FIELD USERNAME TABLE USERGGRP 'Имя пользователя, который занес запись (Администратор, который разрешил данный вид доступа)'; DESCRIBE FIELD LASTEDIT TABLE USERGGRP 'Дата/время внесения записи'; DESCRIBE FIELD USER_ID TABLE USERKASS 'Пользователь (ссылка на USERLIST)'; DESCRIBE FIELD KASS_ID TABLE USERKASS 'Касса (ссылка на KASSLIST)'; DESCRIBE FIELD NAME TABLE USERLIST 'Имя (Login)'; DESCRIBE FIELD FULLNAME TABLE USERLIST 'Фамилия И.О.'; DESCRIBE FIELD ACTIV TABLE USERLIST 'Признак Активности (для системы в целом): 0 - пользователю запрещена работа 1 - пользователь может работать в системе'; DESCRIBE FIELD RIGHTS TABLE USERLIST 'Статус: 0 - обычный пользователь 1 - администратор системы'; DESCRIBE FIELD PASSWRD TABLE USERLIST 'Пароль (не использ.)'; DESCRIBE FIELD OPERMASK TABLE USERLIST 'Права по операциям (битовая маска)'; DESCRIBE FIELD BDAYS TABLE USERLIST 'Начало рабочего периода по умолчанию (в днях в минус от текущей даты)'; DESCRIBE FIELD EDAYS TABLE USERLIST 'Конец рабочего периода по умолчанию (в днях в плюс от текущей даты)'; DESCRIBE FIELD HB_ORGN TABLE USERLIST 'Доступ к справочнику Организаций 0 - запрещен 1 - только чтение 2 - полный доступ'; DESCRIBE FIELD HB_GODS TABLE USERLIST 'Доступ к справочнику Товаров 0 - запрещен 1 - только чтение 2 - полный доступ'; DESCRIBE FIELD HB_PRSN TABLE USERLIST 'Доступ к справочнику Сотрудников (личные дела - PRSNCARD) 0 - запрещен 1 - только чтение 2 - полный доступ'; DESCRIBE FIELD HB_STOR TABLE USERLIST 'Доступ к справочнику Складов 0 - запрещен 1 - только чтение 2 - полный доступ'; DESCRIBE FIELD HB_WMN TABLE USERLIST 'Доступ к справочнику "Изделия" (производство)'; DESCRIBE FIELD HB_CNTC TABLE USERLIST 'Доступ к справочнику "Контакты"'; DESCRIBE FIELD HB_PRLS TABLE USERLIST 'Доступ к справочнику "Прайс-листы"'; DESCRIBE FIELD APPSMASK TABLE USERLIST 'Не используется - см. USERORGN -> APPSMASK (доступ по предприятиям) Доступ по модулям системы (битовая маска) {!) Включенный бит - запрет доступа aoAdmnOpen = $0001; конфигурация aoAccnOpen = $0002; бухгалтерия aoStorOpen = $0004; склад aoSlKtOpen = $0008; кредиторы aoSlDtOpen = $0010; дебиторы aoKassOpen = $0020; касса aoZpltOpen = $0040; зарплата aoMainOpen = $0080; осн. фонды и МБП aoWorkOpen = $0100; производство aoVkslOpen = $0200; векселя (ценные бумаги) aoDocmOpen = $0400; документооборот aoCtlgOpen = $0800; каталог aoBdgtOpen = $1000; бюджетирование aoCrdsOpen = $2000; складские карточки aoCadrOpen = $4000; управление персоналом aoTestOpen = $08000; // тестирование персонала aoSCenOpen = $10000; // сервисный центр aoFrVwOpen = $20000; // FrViewer'; DESCRIBE FIELD PHOTO TABLE USERLIST 'Фото (изображение)'; DESCRIBE FIELD SUBSCRIBE TABLE USERLIST 'Образец подписи (изображение)'; DESCRIBE FIELD PRSNID TABLE USERLIST 'Ссылка на Сотрудника (на поле ID таблицы PERSONAL)'; DESCRIBE FIELD SALEAGENT TABLE USERLIST 'Признак "торговый агент"'; DESCRIBE FIELD EMAIL TABLE USERLIST 'Адрес электронной почты (E-Mail)'; DESCRIBE FIELD EMAILHOST TABLE USERLIST 'Имя хоста для получения почты (почтовый сервер)'; DESCRIBE FIELD EMAILUSER TABLE USERLIST 'Логин для получения почты'; DESCRIBE FIELD EMAILPSWD TABLE USERLIST 'Пароль для получения почты'; DESCRIBE FIELD EMAILPOP3PORT TABLE USERLIST 'Номер порта POP3 (эл. почта) = 110 (по умолчанию)'; DESCRIBE FIELD EMAILSMTPPORT TABLE USERLIST 'Номер порта SMTP (эл. почта) = 25 (по умолчанию)'; DESCRIBE FIELD CTLGMASK TABLE USERLIST 'Доступ по модулю "Каталог"'; DESCRIBE FIELD BDGTMASK TABLE USERLIST 'Доступ по модулю "Бюджетирование"'; DESCRIBE FIELD REMOTEUSER TABLE USERLIST 'Признак "удаленный пользователь" (отправлять ему письма на e-mail)'; DESCRIBE FIELD PARENTID TABLE USERLIST 'Ссылка на группу'; DESCRIBE FIELD GROUPTYP TABLE USERLIST 'Признак группы: 0 - группа пользователей 1 - пользователь'; DESCRIBE FIELD LOGOFFTIMEOUT TABLE USERLIST 'Тайм-аут для автоматического закрытия Login в тиках таймера (ms) = 0 - отключено'; DESCRIBE FIELD PSWD TABLE USERLIST 'Пароль (MD5)'; DESCRIBE FIELD USERNAME TABLE USERLIST 'Имя пользователя, который создал/отредактировал запись'; DESCRIBE FIELD LASTEDIT TABLE USERLIST 'Дата / время последнего изменения записи'; DESCRIBE FIELD USERID TABLE USERORGN 'Пользователь (USERLIST)'; DESCRIBE FIELD ORGNID TABLE USERORGN 'Предприятие (ORGN)'; DESCRIBE FIELD RIGHTS TABLE USERORGN 'Права доступа по предприятию в целом: 0 - запрещен 1 - только для чтения 2 - чтение и запись'; DESCRIBE FIELD APPSMASK TABLE USERORGN 'Доступ по модулям системы (битовая маска) ! Включенный бит - запрет доступа aoAdmnOpen = $0001; aoAccnOpen = $0002; aoStorOpen = $0004; aoSlKtOpen = $0008; aoSlDtOpen = $0010; aoKassOpen = $0020; aoZpltOpen = $0040; aoMainOpen = $0080; aoWorkOpen = $0100; aoVkslOpen = $0200; aoDocmOpen = $0400; aoCtlgOpen = $0800; aoBdgtOpen = $1000; '; DESCRIBE FIELD OPERMASK TABLE USERORGN 'Доступ по операциям (0) --- coDgvDtSaleOpen = $00000001; // 0 Разнесение Платежей (Оплата Счетов) coDgvDtOutDateOpen = $00000002; // 1 Дата выдачи coDgvKtOpen = $00000004; // 2 Доступ к Оприходованию Товара coDgvDtOpen = $00000008; // 3 Расходные документы (резервирование) coStorOutMod = $00000010; // 4 Отметки кладовщика: выдано/изменено coOrgnDgv = $00000020; // 5 Договора с Организациями coDgvDtEdit = $00000040; // 6 Редактирование расходных документов coPriceList = $00000080; // 7 Редактирование Прайс-Листов coInpPrice = $00000100; // 8 Показывать входные цены coShowReport = $00000200; // 9 Просмотр отчетов coAccnOper = $00000400; // 10 Настройка Операций (Проводок) coEditClosedZakaz = $00000800; // 11 Редактирование закрытых заказов coDgvMoveStor = $00001000; // 12 Передать на другой Склад coDgvMoveDB = $00002000; // 13 Оприходовать в другую БД coKassSubscribe = $00004000; // 14 Бухгалтер-кассир: Подпись Ордеров coEnableClosed = $00008000; // 15 Работа в закрытом периоде coEditForeignSZ = $00010000; // 16 Редактирование "чужих" заказов (склад) coShowForeignKD = $00020000; // 17 Просмотр "чужих" документов (касса) coIgnoreSZMinTerm = $00040000; // 18 Игнорировать минимальный срок исполнения заказа coReservManager = $00080000; // 19 Контроль и отмена резерва товара coEditForeignKassDoc = $00100000; // 20 Редактирование "чужих" документов (касса) coIgnoreWorkLimit = $00200000; // 21 Игнорировать ограничение по объему производства coHideForeignDgvKt = $00400000; // 22 Не показывать "чужие" приходные накладные coHideForeignDgvDt = $00800000; // 23 Не показывать "чужие" расходные накладных coEditReportForm = $01000000; // 24 Редактирование отчетных форм coEditForeignWR = $02000000; // 25 Редактирование "чужих" заявок (пр-во) coEditForeignStorOut = $04000000; // 26 Отметки кладовщика в "чужих" накладных coZakazDtCreate = $08000000; // 27 Создание заказов на реализацию coZakazDtSubscribe = $10000000; // 28 Редакт. утв. заказов на реализацию coWorkRequestCreate = $20000000; // 29 Создание заявок на производство coHardPriceList = $40000000; // 30 Жесткая привязка цен к прайс-листу coStorModSub = $80000000; // 31 "Утверждено" (отметки кладовщика)'; DESCRIBE FIELD OPERMASK1 TABLE USERORGN 'Доступ по операциям (1) --- co1WorkZakaz = $00000001; // Производственные заказы co1WorkZakazClose = $00000002; // Закрытие произв. заказов co1EditWorkDt = $00000004; // Редактирование списанных материалов co1DgvDtIntr = $00000008; // Внутренние передачи (? произв. заказы) co1WorkZMst = $00000010; // Изделия в заказе co1ZakazDtForceClose = $00000020; // Принудительное казрытие скл. заказов co1SimpleKass = $00000040; // Упрощенный интерфейс модуля "Касса" co1OrgnPrint = $00000080; // Доступ к кнопке "Печать" (Справочник Организаций) co1StorDgvEmpty = $00000100; // Работа со счетами на реализацию co1StorAllowReal = $00000200; // Игнорировать запрет на ограничение выписки документов на реализацию co1StorDisableManager = $00000400; // Запретить редактирование поля "Менеджер" в накладных co1CRMLockDelTsk = $00000800; // Запрет удаления задач (CRM) co1CRMTransClose = $00001000; // Разрешается просмотр и установка статуса Закрыта в док-те Отправка co1ImportView = $00002000; // Оприходование Импорта - Просмотр co1ImportEdit = $00004000; // Оприходование Импорта - Редактирование co1GddKtParams = $00008000; // Доп. параметры товара (Приход) co1SubscribeManager = $00010000; // Утверждение Менеджера co1DgvDtOrig = $00020000; // Расх. накл. - Оригиналы документов co1ClntTransDesc = $00040000; // Редактирование описания в чужих задачах "Доставка" co1HideForeignStorZk = $00080000; // Не показывать "чужие" складские заказы co1CrmForeignTask = $00100000; // CRM: Видеть чужие задачи на доставку CRM co1DisableEditOutDate = $00200000; // Склад: Запрет редактирования счетов/накладных с датой выдачи co1DeletePriceList = $00400000; // Склад: удаление прайс-лстов (очистка списка товара) co1CntcForeignEdit = $00800000; // Редактирование чужих контактов co1WMnSubscribeSet = $01000000; // Изделия - признак Утверждено co1WMnSubscribeEdit = $02000000; // Изделия - Редактирование утвержденных изделий co1SZPriceReCalc = $04000000; // Скл. заказы: Обновление отпускных цен в накладных по заказу co1KassEncodeAppendix = $08000000; // Касса: Зашифрованное приложение в ордерах co1PrsnCardEMail = $10000000; // Личные Дела: редактирование поля E-Mail co1OrgnEMail = $20000000; // Организации: редактирование поля E-Mail co1OrgnMobilePhone = $40000000; // Организации: редактирование поля моб. телефон co1DisableRemoDel = $80000000; // Сервисный центр: Запрет удаления ремонта'; DESCRIBE FIELD OPERMASK2 TABLE USERORGN 'Доступ по операциям (2) битовые признаки --- co2SC_DisableRemoEditDate = $00000001; // Сервисный центр: Запрет редактирования даты приемки co2SC_DisableRemoEditNbr = $00000002; // Сервисный центр: Запрет редактирования номера co2SC_DisableRemoAfterEnd = $00000004; // Сервисный центр: Запрет редактирования ремонта после окончания ремонта co2SC_RemoDiscountEdit = $00000008; // Сервисный центр: Редактирование скидки по ремонту co2Stor_DgvDtChangeType = $00000010; // Склад: Изменение типа расходной накладной'; DESCRIBE FIELD CRDSMASK TABLE USERORGN 'Права доступа по модулю "Складские Карточки"'; DESCRIBE FIELD CADRMASK TABLE USERORGN 'Права доступа по модулю "Управление персоналом"'; DESCRIBE FIELD HB_STOR TABLE USERORGN 'Доступ к справочнику складов 0 - Нет доступа 1 - Только чтение 2 - Чтение и запись'; DESCRIBE FIELD HB_PRSN TABLE USERORGN 'Доступ к справочнику сотрудников (лицевых счетов)'; DESCRIBE FIELD HB_KASS TABLE USERORGN 'Доступ к справочнику касс'; DESCRIBE FIELD RIGHTS TABLE USERPRLS 'Права доступа: 0x01 - чтение 0x02 - запись (редактирование) 0x04 - использование --- old 0 - запрещен 1 - только для чтения 2 - чтение и запись'; DESCRIBE FIELD USER_ID TABLE USERSTOR 'Пользователь (ссылка на USERLIST)'; DESCRIBE FIELD STOR_ID TABLE USERSTOR 'Склад (ссылка на STORLIST)'; DESCRIBE FIELD NAME TABLE USER_GRP 'Наименование группы пользователей'; DESCRIBE FIELD USERID TABLE USER_GRPREF 'Пользователь (ссылка на USERLIST)'; DESCRIBE FIELD GRP_ID TABLE USER_GRPREF 'Группа пользователей (USER_GRP)'; DESCRIBE FIELD RIGHTS TABLE USER_GRPREF 'Права в группе 0 - Обычный пользователь 1 - Администратор'; DESCRIBE FIELD DAT_ TABLE VKSL 'Дата формирования документа (выписки)'; DESCRIBE FIELD NBR TABLE VKSL '№ векселя'; DESCRIBE FIELD SUMMA TABLE VKSL 'Номинальная стоимость'; DESCRIBE FIELD SUMDT TABLE VKSL 'Сумма продажи'; DESCRIBE FIELD SUMKT TABLE VKSL 'Сумма покупки'; DESCRIBE FIELD SSUMMADT TABLE VKSL 'Сумма оплаты (продажа)'; DESCRIBE FIELD SSUMMAKT TABLE VKSL 'Сумма оплаты (покупка)'; DESCRIBE FIELD OUT_DATE TABLE VKSL 'Дата предъявления'; DESCRIBE FIELD SALEDATE TABLE VKSL 'Дата оплаты'; DESCRIBE FIELD ORGNSLID TABLE VKSL 'Плательщик'; DESCRIBE FIELD ORGNDTID TABLE VKSL 'Покупатель'; DESCRIBE FIELD ORGNKTID TABLE VKSL 'Продавец'; DESCRIBE FIELD COMMENT TABLE VKSL 'Примечание - покупка'; DESCRIBE FIELD IOCOMMENT TABLE VKSL 'Примечание - выдача / получение'; DESCRIBE FIELD OCOMMENT TABLE VKSL 'Примечание - продажа'; DESCRIBE FIELD SCOMMENT TABLE VKSL 'Примечание - предъявление к платежу'; DESCRIBE FIELD ACOMMENT TABLE VKSL 'Примечание (акцепт)'; DESCRIBE FIELD ORGNVKDTID TABLE VKSL 'Векселедатель'; DESCRIBE FIELD ORGNVKKTID TABLE VKSL 'Векселедержатель'; DESCRIBE FIELD DATEDT TABLE VKSL 'Дата продажи'; DESCRIBE FIELD DATEKT TABLE VKSL 'Дата покупки'; DESCRIBE FIELD SDATEDT TABLE VKSL 'Дата полной оплаты (продажа)'; DESCRIBE FIELD SDATEKT TABLE VKSL 'Дата полной оплаты (покупка)'; DESCRIBE FIELD OPERID TABLE VKSL 'Код операции - покупка (ссылка на поле ID таблицы ACOPRLST)'; DESCRIBE FIELD OPERIDO TABLE VKSL 'Операция - продажа'; DESCRIBE FIELD OPERIDSL TABLE VKSL 'Операция - предъявление к платежу'; DESCRIBE FIELD OPERIDIO TABLE VKSL 'Операция - выдача/получение'; DESCRIBE FIELD OPERIDA TABLE VKSL 'Операция - акцепт'; DESCRIBE FIELD CURRTYP TABLE VKSL 'Валюта (для номин. стоимости)'; DESCRIBE FIELD CURS TABLE VKSL 'Курс валюты (для номинальной стоимости)'; DESCRIBE FIELD CSUMMA TABLE VKSL 'Номинальная стоимость в валюте'; DESCRIBE FIELD CURRTYPDT TABLE VKSL 'Валюта - продажа'; DESCRIBE FIELD CURSDT TABLE VKSL 'Курс продажи'; DESCRIBE FIELD CSUMDT TABLE VKSL 'Сумма продажи в валюте'; DESCRIBE FIELD SCSUMMADT TABLE VKSL 'Сумма оплаты при продаже (в валюте)'; DESCRIBE FIELD CURRTYPKT TABLE VKSL 'Валюта - покупка'; DESCRIBE FIELD CURSKT TABLE VKSL 'Курс покупки'; DESCRIBE FIELD CSUMKT TABLE VKSL 'Сумма покупки в валюте'; DESCRIBE FIELD SCSUMMAKT TABLE VKSL 'Сумма оплаты при покупке (в валюте)'; DESCRIBE FIELD DATE_AKC TABLE VKSL 'Дата акцепта'; DESCRIBE FIELD BLNS TABLE VKSL 'Флаг - "Включать в расчеты с контрагентами"'; DESCRIBE FIELD SALEDTID TABLE VKSL 'Ссылка на связанный платежный документ (Дебиторы)'; DESCRIBE FIELD SALEKTID TABLE VKSL 'Ссылка на связанный платежный документ (кредиторы)'; DESCRIBE FIELD DATESL TABLE VKSL 'Дата предъявления'; DESCRIBE FIELD OUTSALE TABLE VKSL 'Признак - вексель предъявлен к оплате (включать в основание для оплаты)'; DESCRIBE FIELD VKSLID TABLE VKSLACCR 'Ссылка на вексель (VKSL)'; DESCRIBE FIELD ACCNID TABLE VKSLACCR 'Ссылка на проводку (ACCNPROV)'; DESCRIBE FIELD TYP TABLE VKSLACCR 'Тип операции: 0 - поступление 1 - выбытие'; DESCRIBE FIELD OURORGNID TABLE WORKCALCMST 'Ссылка на предприятие'; DESCRIBE FIELD NBR TABLE WORKCALCMST '№ документа'; DESCRIBE FIELD BDATE TABLE WORKCALCMST 'Период распределения (начальная дата)'; DESCRIBE FIELD EDATE TABLE WORKCALCMST 'Период распределения (конечная дата)'; DESCRIBE FIELD COMMENT TABLE WORKCALCMST 'Примечание'; DESCRIBE FIELD OPERID TABLE WORKCALCMST 'Операция (ACOPRLST)'; DESCRIBE FIELD NKTYP TABLE WORKCALCMST 'Методика распределения накладных расходов: =0 - пропорционально себестоимости материалов и комплектующих =1 - по коэффициентам накладных расходов (указывается в изделиях - WORKMAIN)'; DESCRIBE FIELD USERNAME TABLE WORKCALCMST 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE WORKCALCMST 'Дата/время последней модификации'; DESCRIBE FIELD CALCNKID TABLE WORKCALCPODR 'Накладные расходы к распределению (WORKCALCNK)'; DESCRIBE FIELD STORID TABLE WORKCALCPODR 'Производственный цех, склад (STORLIST)'; DESCRIBE FIELD MULT TABLE WORKCALCPODR 'Коээфициент для данного цеха (? пока не используется = 1.00)'; DESCRIBE FIELD SUMMA TABLE WORKCALCPODR 'Себестоимость материалов и комплектующих на данный цех (может заполняться при распределении)'; DESCRIBE FIELD NKSUMMA TABLE WORKCALCPODR 'Общая сумма накладных расходов на данный цех (может заполняться при распределении)'; DESCRIBE FIELD NAME TABLE WORKGOODS 'Наименование'; DESCRIBE FIELD CODE TABLE WORKGOODS 'Артикул'; DESCRIBE FIELD PARENTID TABLE WORKGOODS 'Ссылка на родителя (группу)'; DESCRIBE FIELD GROUPTYP TABLE WORKGOODS 'Признак группы 0 - группа 1 - материал'; DESCRIBE FIELD ONE TABLE WORKGOODS 'ед. изм.'; DESCRIBE FIELD SIZEZ TABLE WORKGOODS 'Размер (толщина)'; DESCRIBE FIELD TYP TABLE WORKGOODS '0 - Сырье (материалы) 1 - Комплектующие 2 - Вспомогательные материалы'; DESCRIBE FIELD CUTTING TABLE WORKGOODS 'Признак раскроя: =0 - материал не раскраивается =1 - материал подлежит раскрою'; DESCRIBE FIELD QNT TABLE WORKGOODS 'Норма расхода'; DESCRIBE FIELD NORMDELTA TABLE WORKGOODS 'Норма отходов'; DESCRIBE FIELD RND TABLE WORKGOODS 'Точность расчетов'; DESCRIBE FIELD NW TABLE WORKGOODS 'Вес (кг./ед.)'; DESCRIBE FIELD KDELTA TABLE WORKGOODS 'Коэффициент полезного выхода - Расход материала / Кол-во в "чистой" детали '; DESCRIBE FIELD WKGID TABLE WORKGOODSGDS 'Условный материал (WORKGOODS)'; DESCRIBE FIELD GDSID TABLE WORKGOODSGDS 'Реальный материал (GOODS)'; DESCRIBE FIELD PRIORITY TABLE WORKGOODSGDS 'Приоритет'; DESCRIBE FIELD WGSID TABLE WORKGOODSLINK 'Вспомогательный материал'; DESCRIBE FIELD WGMID TABLE WORKGOODSLINK 'Основной материал'; DESCRIBE FIELD REFID TABLE WORKHBLN 'Ссылка на комплектующее в изделии (WORKLINK)'; DESCRIBE FIELD GODSID TABLE WORKHBLN 'Ссылка на наименование в справочнике товаров (GOODS)'; DESCRIBE FIELD QUANT TABLE WORKHBLN 'Кол-во на единицу изделия'; DESCRIBE FIELD NORMDELTA TABLE WORKHBLN 'Норма отходов'; DESCRIBE FIELD MAINGDS TABLE WORKHBLN 'Признак - Формировать производственный заказ изделия - по материалам'; DESCRIBE FIELD NAME TABLE WORKHBNK 'Наименование накладных расходов (или группы - см. поле NK_GROUP)'; DESCRIBE FIELD PARENTID TABLE WORKHBNK 'Ссылка на родителя (дерево)'; DESCRIBE FIELD NK_GROUP TABLE WORKHBNK 'Признак Группы 0 - накладные расходы 1 - группа'; DESCRIBE FIELD OWNER TABLE WORKLINK 'Ссылка на изделие (таблица WORKMAIN)'; DESCRIBE FIELD QUANT TABLE WORKLINK 'Количество на единицу изделия (Норма) (по всем данным деталям)'; DESCRIBE FIELD QNT_ONE TABLE WORKLINK 'Кол-во деталей в шт. (на ед. изделия)'; DESCRIBE FIELD GODSID TABLE WORKLINK 'Наименование (ссылка на таблицу GOODS)'; DESCRIBE FIELD TYP TABLE WORKLINK 'Тип: 0 - характерные 1 - базовые 2 - небазовые'; DESCRIBE FIELD NORMDELTA TABLE WORKLINK 'Норма отходов'; DESCRIBE FIELD NOZRESERV TABLE WORKLINK 'Признак "Не резервировать в заказ" (=1) (вспомогательные материалы) 0 - не вспомогательный материал (резервировать в заказ) 1 - вспомогательный материал (не резервировать в заказ)'; DESCRIBE FIELD MODELDTLID TABLE WORKLINK 'Привязка к деталям в модели изделия (WORKMODELDTL)'; DESCRIBE FIELD MODELGDSID TABLE WORKLINK 'Привязка к материалам в модели изделия (WORKMODELGDS)'; DESCRIBE FIELD MAINDTLID TABLE WORKLINK 'Деталь (изделие) в справочнике изделий, на которой основана данная позиция в нормах (при привязке изделия к модели по деталям)'; DESCRIBE FIELD SIZEX TABLE WORKLINK 'Размер (X)'; DESCRIBE FIELD SIZEY TABLE WORKLINK 'Размер (Y)'; DESCRIBE FIELD SIZEZ TABLE WORKLINK 'Размер (Z)'; DESCRIBE FIELD CUTTING TABLE WORKLINK 'Признак раскроя: =0 - материал не раскраивается =1 - материал подлежит раскрою'; DESCRIBE FIELD STRUCTUREXY TABLE WORKLINK 'Структура (можно ли поворачивать детали при крое): =0 - поворачивать =1 - не поворачивать =2 - одинаково для всех'; DESCRIBE FIELD NW TABLE WORKLINK 'Вес нетто (кг)'; DESCRIBE FIELD GW TABLE WORKLINK 'Вес брутто (кг)'; DESCRIBE FIELD DETAILNAME TABLE WORKLINK 'Наименование детали модели'; DESCRIBE FIELD KDELTA TABLE WORKLINK 'Коээф. полезного выхода'; DESCRIBE FIELD TESTONE TABLE WORKLINK 'Признак: - наладочный материал (=1)'; DESCRIBE FIELD RNDQNT TABLE WORKLINK 'Признак - списывать целое количество'; DESCRIBE FIELD KF TABLE WORKLINK 'Коэффициент формы - cоотношение между прощадью высечки и площадью описывающего прямоугольника'; DESCRIBE FIELD MAINGDS TABLE WORKLINK 'Признак - Формировать производственный заказ изделия - по материалам'; DESCRIBE FIELD USERNAME TABLE WORKLINK 'Пользователь'; DESCRIBE FIELD LASTEDIT TABLE WORKLINK 'Дата / время последнего изменения записи'; DESCRIBE FIELD ID TABLE WORKMAIN 'Уникальный код записи'; DESCRIBE FIELD GODSID TABLE WORKMAIN 'Наименование (ссылка на табл. GOODS)'; DESCRIBE FIELD PARENTID TABLE WORKMAIN 'Для сопутствующих материалов - ссылка на основное изделие Для основного изделия = Null'; DESCRIBE FIELD MULT TABLE WORKMAIN 'Коэффициент себестоимости (для сопутствующих материалов): Для основного изделия = 1.0'; DESCRIBE FIELD NORMPRICE TABLE WORKMAIN 'Плановая себестоимость (без НДС)'; DESCRIBE FIELD KNK TABLE WORKMAIN 'Коээфициент накладных расходов'; DESCRIBE FIELD MODELID TABLE WORKMAIN 'Привязка изделия к модели'; DESCRIBE FIELD MDTYP TABLE WORKMAIN 'Тип привязки изделия к модели (обновление норм) 0 - по материалам 1 - по деталям'; DESCRIBE FIELD SIZEX TABLE WORKMAIN 'Размер (X)'; DESCRIBE FIELD SIZEY TABLE WORKMAIN 'Размер (Y)'; DESCRIBE FIELD SIZEZ TABLE WORKMAIN 'Размер (Z)'; DESCRIBE FIELD NW TABLE WORKMAIN 'Вес нетто'; DESCRIBE FIELD GW TABLE WORKMAIN 'Вес брутто'; DESCRIBE FIELD INVALIDMODEL TABLE WORKMAIN 'Нормы изделия не соответствуют модели (флаг)'; DESCRIBE FIELD COD TABLE WORKMAIN 'Код изделия (модификация)'; DESCRIBE FIELD SCALESIZE TABLE WORKMAIN 'Масштабируемое по размерам изделие 0 - нет 1 - да'; DESCRIBE FIELD CALCTYPE TABLE WORKMAIN 'Авто-расчет количества по размерам: 0 - не рассчитывать 1 - по длине (X) 2 - по площади (X * Y) 3 - по объему (X * Y * Z) 4 - по периметру'; DESCRIBE FIELD ZOOMSCALE TABLE WORKMAIN 'Масштаб перевода X, Y, Z в рассчитываемое кол-во. Например при размерах в мм. и кол-ве в м. = 1000'; DESCRIBE FIELD CALCRATIO TABLE WORKMAIN 'Коэффициент (при CALCTYPE=4)'; DESCRIBE FIELD STORID TABLE WORKMAIN 'Цех-изготовитель'; DESCRIBE FIELD RECEIPE TABLE WORKMAIN 'Рецепт'; DESCRIBE FIELD SCRUSERID TABLE WORKMAIN 'Пользователь, утвердивщий Изделие'; DESCRIBE FIELD SCRDATETIME TABLE WORKMAIN 'Дата/время утверждения Изделия'; DESCRIBE FIELD SCRMODDATETIME TABLE WORKMAIN 'Дата/время изменения (модификации) утвержденного Изделия'; DESCRIBE FIELD ID TABLE WORKMAINTOOL 'Уникальнай код записи'; DESCRIBE FIELD TOOLID TABLE WORKMAINTOOL 'Ссылка на технологическую оснастку'; DESCRIBE FIELD MAINID TABLE WORKMAINTOOL 'Ссылка на изделие'; DESCRIBE FIELD PARENTID TABLE WORKMODEL 'Ссылка на родителя (группу) У корневых групп PARENTID = Null'; DESCRIBE FIELD NAME TABLE WORKMODEL 'Наименование'; DESCRIBE FIELD CODE TABLE WORKMODEL 'Артикул'; DESCRIBE FIELD GROUPTYP TABLE WORKMODEL 'Признак группы 0 - группа моделей 1 - модель изделия'; DESCRIBE FIELD PACKQNT TABLE WORKMODEL 'Кол-во упаковок'; DESCRIBE FIELD NW TABLE WORKMODEL 'Вес нетто (кг)'; DESCRIBE FIELD GW TABLE WORKMODEL 'Вес брутто (кг)'; DESCRIBE FIELD MARKCODE TABLE WORKMODEL 'Маркировка'; DESCRIBE FIELD MODELID TABLE WORKMODELDTL 'Изделие (главная деталь, узел, агрегат)'; DESCRIBE FIELD DETAILID TABLE WORKMODELDTL 'Входящая деталь (ссылка на модель детали)'; DESCRIBE FIELD PARENTID TABLE WORKMODELDTL 'Ссылка на главную деталь текущей модели - в которую входит данная деталь (для деталей верхнего уровня = Null)'; DESCRIBE FIELD MODELDTLID TABLE WORKMODELDTL 'Ссылка на деталь в исходной родительской модели для собственных деталей текущей модели = Null'; DESCRIBE FIELD QUANT TABLE WORKMODELDTL 'Количество данных деталей в модели (MODELID)'; DESCRIBE FIELD NBR TABLE WORKMODELDTL 'Номер детали в модели'; DESCRIBE FIELD PACKNBR TABLE WORKMODELDTL 'Номер упаковки'; DESCRIBE FIELD NW TABLE WORKMODELDTL 'Вес нетто (кг)'; DESCRIBE FIELD GW TABLE WORKMODELDTL 'Вес брутто (кг)'; DESCRIBE FIELD PROCORIENTATION TABLE WORKMODELDTL 'Ориентация при обработке 0 - не указано 1 - вертикальная 2 - горизонтальная'; DESCRIBE FIELD PROCTYPE TABLE WORKMODELDTL 'Вид обработки 0 - не указано 1 - зеркальная 2 - простая'; DESCRIBE FIELD PROCTYPECODE TABLE WORKMODELDTL 'код вида обработки'; DESCRIBE FIELD MODELID TABLE WORKMODELGDS 'Модель/Узел/Деталь (WORKMODEL)'; DESCRIBE FIELD WKGDSID TABLE WORKMODELGDS 'Условный материал (WORKGOODS)'; DESCRIBE FIELD MODELDTLID TABLE WORKMODELGDS 'Ссылка на деталь текущей модели: для материалов верхнего уровня (самой модели) = Null'; DESCRIBE FIELD MODELGDSID TABLE WORKMODELGDS 'Ссылка на материал в исходной родительской модели заполняется при наследовании материалов от другой модели для собственных материалов текущей модели = Null'; DESCRIBE FIELD SIZEX TABLE WORKMODELGDS 'Размер по X'; DESCRIBE FIELD SIZEY TABLE WORKMODELGDS 'Размер по Y'; DESCRIBE FIELD SIZEZ TABLE WORKMODELGDS 'Размер по Z'; DESCRIBE FIELD DELTAX TABLE WORKMODELGDS 'Припуск по X'; DESCRIBE FIELD DELTAY TABLE WORKMODELGDS 'Припуск по Y'; DESCRIBE FIELD CUTTING TABLE WORKMODELGDS 'Признак раскроя: =0 - материал не раскраивается =1 - материал подлежит раскрою'; DESCRIBE FIELD STRUCTUREXY TABLE WORKMODELGDS 'Структура (можно ли поворачивать детали при крое): =0 - поворачивать =1 - не поворачивать =2 - одинаково для всех'; DESCRIBE FIELD QNT TABLE WORKMODELGDS 'Норма расхода'; DESCRIBE FIELD QUANT TABLE WORKMODELGDS 'Количество'; DESCRIBE FIELD CALCTYPE TABLE WORKMODELGDS 'Признак автоматического расчета норм по размерам: 0 - не рассчитывать 1 - по длине 2 - по площади 3 - по объему'; DESCRIBE FIELD KNORM TABLE WORKMODELGDS 'Размерность'; DESCRIBE FIELD NW TABLE WORKMODELGDS 'Вес нетто (кг./ед.)'; DESCRIBE FIELD GW TABLE WORKMODELGDS 'Вес брутто (кг./ед.)'; DESCRIBE FIELD KDELTA TABLE WORKMODELGDS 'Коэфф. полезного выхода'; DESCRIBE FIELD SCALESIZE TABLE WORKMODELGDS 'Признак масштабирования по размерам модели'; DESCRIBE FIELD SCALEX TABLE WORKMODELGDS 'Масштабирование по X'; DESCRIBE FIELD SCALEY TABLE WORKMODELGDS 'Масштабирование по Y'; DESCRIBE FIELD SCALEZ TABLE WORKMODELGDS 'Масштабирование по Z'; DESCRIBE FIELD SCALEDELTA TABLE WORKMODELGDS 'Признак масштабирования припусков по модели'; DESCRIBE FIELD SCALEDX TABLE WORKMODELGDS 'Масштабирование припусков по X'; DESCRIBE FIELD SCALEDY TABLE WORKMODELGDS 'Масштабирование припусков по Y'; DESCRIBE FIELD SCALEDZ TABLE WORKMODELGDS 'Масштабирование припусков по Z'; DESCRIBE FIELD MODELID TABLE WORKOPER 'Модель изделия (WORKMODEL)'; DESCRIBE FIELD OPERID TABLE WORKOPER 'Операция (WORKOPERATION)'; DESCRIBE FIELD NORMTIME TABLE WORKOPER 'Скорость выполнения (выполнение единицы работы - в мин.)'; DESCRIBE FIELD QNT TABLE WORKOPER 'Кол-во выполненной работы'; DESCRIBE FIELD OPERTIME TABLE WORKOPER 'Время выполнения операции (мин.) OperTime = Qnt / NormTime'; DESCRIBE FIELD ID TABLE WORKREQUEST 'Уникальный кол записи'; DESCRIBE FIELD OURORGNID TABLE WORKREQUEST 'Предприятие'; DESCRIBE FIELD SZID TABLE WORKREQUEST 'Ссылка на складской заказ (для заявок по заказам)'; DESCRIBE FIELD PRSNID TABLE WORKREQUEST 'Заявитель'; DESCRIBE FIELD OBJID TABLE WORKREQUEST 'ID объекта'; DESCRIBE FIELD DAT_ TABLE WORKREQUEST 'Дата формирования заявки'; DESCRIBE FIELD PDATE TABLE WORKREQUEST 'Плановая дата выпуска изделий'; DESCRIBE FIELD NBR TABLE WORKREQUEST 'Номер документа (заявки)'; DESCRIBE FIELD COMMENT TABLE WORKREQUEST 'Примечание'; DESCRIBE FIELD DESCRIPTION TABLE WORKREQUEST 'Описание'; DESCRIBE FIELD CLOSED TABLE WORKREQUEST 'Признак закрытия (=1 - закрыто)'; DESCRIBE FIELD USERNAME TABLE WORKREQUEST 'Пользователь'; DESCRIBE FIELD LASTEDIT TABLE WORKREQUEST 'Дата / время модификации записи'; DESCRIBE FIELD ID TABLE WORKREQUESTGDS 'Уникальный код записи'; DESCRIBE FIELD WRID TABLE WORKREQUESTGDS 'Ссылка на заявку (WORKREQUEST)'; DESCRIBE FIELD GODSID TABLE WORKREQUESTGDS 'Ссылка на наименование (товар)'; DESCRIBE FIELD WMID TABLE WORKREQUESTGDS 'Ссылка на изделие в производственном заказе'; DESCRIBE FIELD QUANT TABLE WORKREQUESTGDS 'Кол-во (в ед. изм.)'; DESCRIBE FIELD QNT_ONE TABLE WORKREQUESTGDS 'Кол-во (шт.)'; DESCRIBE FIELD WQUANT TABLE WORKREQUESTGDS 'Изготовлено (кол-во)'; DESCRIBE FIELD WQNT_ONE TABLE WORKREQUESTGDS 'Изготовлено (шт.)'; DESCRIBE FIELD SIZEX TABLE WORKREQUESTGDS 'Размер X'; DESCRIBE FIELD SIZEY TABLE WORKREQUESTGDS 'Размер Y'; DESCRIBE FIELD SIZEZ TABLE WORKREQUESTGDS 'Размер Z'; DESCRIBE FIELD DESCRIPTION TABLE WORKREQUESTGDS 'Описание'; DESCRIBE FIELD OBJID TABLE WORKREQUESTGDS 'ID объекта'; DESCRIBE FIELD GEOMETRY TABLE WORKTOOL 'Геометрия: 0 - Круг 1 - Прямоугольник 2 - Сложная форма'; DESCRIBE FIELD ID TABLE WORKZAKAZ 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE WORKZAKAZ 'Дата'; DESCRIBE FIELD NBR TABLE WORKZAKAZ 'Номер документа'; DESCRIBE FIELD STOR TABLE WORKZAKAZ '? Цех'; DESCRIBE FIELD COMMENT TABLE WORKZAKAZ 'Примечание'; DESCRIBE FIELD ZSREADY TABLE WORKZAKAZ 'Признак завершения укомплектации заказа =1 - все материалы зарезервированы '; DESCRIBE FIELD ZMREADY TABLE WORKZAKAZ 'Признак завершения выпуска изделий =1 - все изделия выпущены'; DESCRIBE FIELD ZTRASH TABLE WORKZAKAZ 'Признак завершения распределения отходов =1 - отходы распределены'; DESCRIBE FIELD BDATE TABLE WORKZAKAZ 'Начальная дата оприходования изделий '; DESCRIBE FIELD EDATE TABLE WORKZAKAZ 'Конечная дата оприходования изделий (проставляется после выпуска всех изделий)'; DESCRIBE FIELD ZAKAZMAP TABLE WORKZAKAZ 'Карта раскоя (в формате 2D-Place)'; DESCRIBE FIELD INPSTOR1 TABLE WORKZAKAZ 'Склад Сырья (раскрой)'; DESCRIBE FIELD INPSTOR2 TABLE WORKZAKAZ 'Склад Обрезков (раскрой)'; DESCRIBE FIELD READYPDATE TABLE WORKZAKAZ 'Дата выхода (плановая)'; DESCRIBE FIELD WDATE TABLE WORKZAKAZ 'Передано в цех (дата)'; DESCRIBE FIELD NKNOCALC TABLE WORKZAKAZ 'Не распределять на заказ накладные расходы (признак)'; DESCRIBE FIELD FTIME TABLE WORKZAKAZ 'Фактическое время изготовления (ч.)'; DESCRIBE FIELD EQAVG TABLE WORKZAKAZ 'Пропорциональное распределение эквивалентов (признак)'; DESCRIBE FIELD USERNAME TABLE WORKZAKAZ 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE WORKZAKAZ 'Дата/Время последней модификации записи'; DESCRIBE FIELD EQUSE TABLE WORKZAKAZ 'Использование признака эквивалентности'; DESCRIBE FIELD OPTIONS TABLE WORKZAKAZ 'Опции (побитно): 0x01 - Разрешить использовать меньший размер материала 0x02 - Разрешить использование основных материалов в изделии, как эквивалентов 0x04 - Разрешить списание неосновных материалов вместо основных 0x08 - Пересчет норм на новый типоразмер материала 0x10 - Пропорциональное списание эквивалентов (не последовательное) 0x20 - Не контролировать дату прихода осн. материалов для списания'; DESCRIBE FIELD STATE TABLE WORKZAKAZ '0 - Open; 1 - Frozen;'; DESCRIBE FIELD ZID TABLE WORKZCUTTING 'Ссылка на заказ'; DESCRIBE FIELD CUTSTORTYP TABLE WORKZCUTTING 'Склад (тип для раскроя) 1 - склад сырья 2 - склад обрезков '; DESCRIBE FIELD STOR TABLE WORKZCUTTING 'Склад (ссылка на STORLIST)'; DESCRIBE FIELD GODSID TABLE WORKZCUTTING 'Ссылка на наименование (справочник товаров)'; DESCRIBE FIELD SIZEX TABLE WORKZCUTTING 'Размер X'; DESCRIBE FIELD SIZEY TABLE WORKZCUTTING 'Размер Y'; DESCRIBE FIELD SIZEZ TABLE WORKZCUTTING 'Размер Z'; DESCRIBE FIELD QNT_ONE TABLE WORKZCUTTING 'Количество (шт.): - Расход сырья и обрезков на раскрой: значение < 0 - Приход новых обрезков после раскроя: значение > 0'; DESCRIBE FIELD GDDKEY TABLE WORKZCUTTING 'Ссылка на позицию в акте на возврат обрезков'; DESCRIBE FIELD CUTTING TABLE WORKZCUTTING 'Признак раскроя: 0 - обрезок занесен вручную 1 - обрезок получен автоматически (2D-Place)'; DESCRIBE FIELD DELETED TABLE WORKZCUTTING 'Признак "удаленной" записи (=1)'; DESCRIBE FIELD ID TABLE WORKZMST 'Уникальный код записи'; DESCRIBE FIELD ZID TABLE WORKZMST 'Заказ (ссылка на поле ID таблицы WORKZAKAZ)'; DESCRIBE FIELD MID TABLE WORKZMST 'Изделие в справочнике (ссылка на поле ID таблицы WORKMAIN)'; DESCRIBE FIELD GODSID TABLE WORKZMST 'Наименование изделий (ссылка на поле ID таблицы GOODS)'; DESCRIBE FIELD COD TABLE WORKZMST 'Код изделия (модификация)'; DESCRIBE FIELD STOR TABLE WORKZMST 'Цех (Склад), в котором выпускается изделие'; DESCRIBE FIELD WRGDSID TABLE WORKZMST 'Ссылка на изделие в заявке'; DESCRIBE FIELD OBJID TABLE WORKZMST 'ID объекта'; DESCRIBE FIELD SOURCE TABLE WORKZMST 'Количество, запланированное к выпуску (в ед. изм.)'; DESCRIBE FIELD QUANT TABLE WORKZMST 'Фактически выпущенное количество (в ед. изм.)'; DESCRIBE FIELD SRC_ONE TABLE WORKZMST 'Кол-во в шт. (к выпуску)'; DESCRIBE FIELD QNT_ONE TABLE WORKZMST 'Кол-во в шт. (фактически выпущенное)'; DESCRIBE FIELD SCALESIZE TABLE WORKZMST 'Признак масштабирования размеров по модели'; DESCRIBE FIELD SIZEX TABLE WORKZMST 'X'; DESCRIBE FIELD SIZEY TABLE WORKZMST 'Y'; DESCRIBE FIELD SIZEZ TABLE WORKZMST 'Z'; DESCRIBE FIELD NW TABLE WORKZMST 'Вес нетто'; DESCRIBE FIELD GW TABLE WORKZMST 'Вес брутто'; DESCRIBE FIELD ZMID TABLE WORKZNK 'ID изделия в заказе'; DESCRIBE FIELD NKID TABLE WORKZNK 'Вид накладных расходов'; DESCRIBE FIELD CALCNKID TABLE WORKZNK 'ID накладных расходов в ведомости распределения'; DESCRIBE FIELD ZKID TABLE WORKZNK 'Оприходованное изделие (в приходной накладной на складе готовой продукции)'; DESCRIBE FIELD SUMMA TABLE WORKZNK 'Сумма распределеяемых накладных расходов'; DESCRIBE FIELD MSTID TABLE WORKZREF 'Деталь - WORKZSLV'; DESCRIBE FIELD DTLID TABLE WORKZREF 'Изделие (WORKZMST)'; DESCRIBE FIELD ID TABLE WORKZSLV 'Уникальный код записи'; DESCRIBE FIELD MSTID TABLE WORKZSLV 'Изделие (ссылка на поле ID таблицы WORKZMST)'; DESCRIBE FIELD GODSID TABLE WORKZSLV 'Наименование (ссылка на поле ID таблицы GOODS)'; DESCRIBE FIELD LID TABLE WORKZSLV 'Ссылка на комплектующее в справочнике изделий'; DESCRIBE FIELD QUANT TABLE WORKZSLV 'Зарезервированное количество'; DESCRIBE FIELD QNT TABLE WORKZSLV 'Норма на единицу изделия'; DESCRIBE FIELD SOURCE TABLE WORKZSLV 'Количество по норме (на все количество изделий)'; DESCRIBE FIELD QNT_ONE TABLE WORKZSLV 'Кол-во деталей шт. (на ед. изделия)'; DESCRIBE FIELD NORMDELTA TABLE WORKZSLV 'Норма отходов (на общее количество изделий)'; DESCRIBE FIELD NOZRESERV TABLE WORKZSLV 'Признак "Не резервировать в заказ" (вспомогательные материалы)'; DESCRIBE FIELD SIZEX TABLE WORKZSLV 'Размер X'; DESCRIBE FIELD SIZEY TABLE WORKZSLV 'Размер Y'; DESCRIBE FIELD SIZEZ TABLE WORKZSLV 'Размер Z'; DESCRIBE FIELD CUTTING TABLE WORKZSLV 'Признак раскроя: =0 - материал не раскраивается =1 - материал подлежит раскрою'; DESCRIBE FIELD STRUCTUREXY TABLE WORKZSLV 'Структура (можно ли поворачивать детали при крое): =0 - поворачивать =1 - не поворачивать =2 - одинаково для всех'; DESCRIBE FIELD DETAILNAME TABLE WORKZSLV 'Наименование детали'; DESCRIBE FIELD TESTONE TABLE WORKZSLV 'Признак: - наладочный материал (=1)'; DESCRIBE FIELD RNDQNT TABLE WORKZSLV 'Признак - списывать целое количество'; DESCRIBE FIELD KF TABLE WORKZSLV 'Коэффициент формы - cоотношение между прощадью высечки и площадью описывающего прямоугольника'; DESCRIBE FIELD TYP TABLE WORKZSLV 'Тип: 0 - характерные 1 - базовые 2 - небазовые'; DESCRIBE FIELD SLVID TABLE ZPLTCALCDECR 'Сотрудник в ведомости (ZPLTCALCSLV)'; DESCRIBE FIELD DECRID TABLE ZPLTCALCDECR 'ID удержания (ZPLTDECR)'; DESCRIBE FIELD SUMMA TABLE ZPLTCALCDECR 'Сумма ужержания (исходные данные)'; DESCRIBE FIELD PROC TABLE ZPLTCALCDECR 'Процент удержания (исходные данные)'; DESCRIBE FIELD CSUMMA TABLE ZPLTCALCDECR 'Рассчитанная сумма удержания (при расчете округляется до копеек)'; DESCRIBE FIELD SLVID TABLE ZPLTCALCINCR 'Сотрудник в ведомости (ZPLCALCSLV)'; DESCRIBE FIELD INCRID TABLE ZPLTCALCINCR 'ID начисления (ZPLTINCR)'; DESCRIBE FIELD SUMMA TABLE ZPLTCALCINCR 'Исходная сумма начисления'; DESCRIBE FIELD PROC TABLE ZPLTCALCINCR 'Процент начисления (исходные данные) для больничных - процент оплаты больничного листа'; DESCRIBE FIELD CSUMMA TABLE ZPLTCALCINCR 'Рассчитанная сумма начисления (при расчете округляется до копеек)'; DESCRIBE FIELD BLDATE TABLE ZPLTCALCINCR 'Начальная дата периода (больничные, отпускные)'; DESCRIBE FIELD ELDATE TABLE ZPLTCALCINCR 'Конечная дата периода (больничные, отпускные)'; DESCRIBE FIELD MONTHCNT TABLE ZPLTCALCINCR 'Количество расчетных месяцев для средней з/п (больничные, отпускные)'; DESCRIBE FIELD MROUND TABLE ZPLTCALCINCR 'Признак - округлять среднедневную з/п до копеек (больничные, отпускные)'; DESCRIBE FIELD NOCALC TABLE ZPLTCALCINCR 'Признак - не производить авто-расчет'; DESCRIBE FIELD ID TABLE ZPLTCALCMST 'Уникальный код записи'; DESCRIBE FIELD DAT_ TABLE ZPLTCALCMST 'Дата формирования ведомости (как правило - последний день месяца)'; DESCRIBE FIELD NBR TABLE ZPLTCALCMST '№ документа (ведомости)'; DESCRIBE FIELD COMMENT TABLE ZPLTCALCMST 'Примечание'; DESCRIBE FIELD AVANS TABLE ZPLTCALCMST 'Признак авансовой ведомости 0 - обычная расчетная ведомость 1 - расчетная ведомость аванса'; DESCRIBE FIELD OPERID TABLE ZPLTCALCMST 'Ссылка на операцию (формирование проводок) на поле ID таблицы ACOPRLST'; DESCRIBE FIELD HOLIDAYMASK TABLE ZPLTCALCMST 'Битовая маска праздничных дней в расчетном месяце'; DESCRIBE FIELD W5 TABLE ZPLTCALCMST 'Нормированное рабочее время в часах при 5-ти дневной рабочей неделе (итого за расчетный месяц)'; DESCRIBE FIELD W5MASK TABLE ZPLTCALCMST 'Битовая маска рабочих дней в расчетном месяце при 5-ти дневной рабочей неделе'; DESCRIBE FIELD CLOSED TABLE ZPLTCALCMST 'Признак закрытия ведомости 0 - ведомость не закрыта 1 - ведомость закрыта'; DESCRIBE FIELD CALCDATE TABLE ZPLTCALCMST 'Дата/Время расчета по ведомости'; DESCRIBE FIELD USERNAME TABLE ZPLTCALCMST 'Имя пользователя'; DESCRIBE FIELD LASTEDIT TABLE ZPLTCALCMST 'Дата / время последней модификации записи'; DESCRIBE FIELD ID TABLE ZPLTCALCSLV 'Уникальный код записи'; DESCRIBE FIELD MSTID TABLE ZPLTCALCSLV 'Ссылка на ведомость (на поле ID таблицы ZPLTCALCMST)'; DESCRIBE FIELD PRSNID TABLE ZPLTCALCSLV 'Ссылка на Сотрудника (на поле ID таблицы PERSONAL)'; DESCRIBE FIELD BSUMMA TABLE ZPLTCALCSLV 'Сумма начислений'; DESCRIBE FIELD ESUMMA TABLE ZPLTCALCSLV 'Сумма к выдаче на руки'; DESCRIBE FIELD OKLAD TABLE ZPLTCALCSLV 'Оклад (не используется)'; DESCRIBE FIELD D1 TABLE ZPLTCALCSLV 'D1..D31 - фактически отработанное время (в ч.) данным Сотрудником за дни расчетного месяца'; DESCRIBE FIELD WTIME TABLE ZPLTCALCSLV 'Общее отработанное время (в ч.) за рабочие, праздничные и выходные дни'; DESCRIBE FIELD TIMEHLD TABLE ZPLTCALCSLV 'Отработанное время за праздничные дни (в ч.)'; DESCRIBE FIELD TIMEWKN TABLE ZPLTCALCSLV 'Отработанное время за выходные дни (в ч.)'; DESCRIBE FIELD TIMEWRK TABLE ZPLTCALCSLV 'Отработанное время за рабочие дни (в ч.)'; DESCRIBE FIELD TIMENGT TABLE ZPLTCALCSLV 'Отработанные ночные часы'; DESCRIBE FIELD SSUMMA TABLE ZPLTCALCSLV 'Фактически выплаченная Сотруднику сумма (в наст. время не используется - учет ведется по платежным ведомостям)'; DESCRIBE FIELD ID TABLE ZPLTCALCSLVFOT 'Уникальный код записи'; DESCRIBE FIELD SLVID TABLE ZPLTCALCSLVFOT 'Ссылка на Сотрудника в расчетной ведомости (на поле ID таблицы ZPLTCALCSLV)'; DESCRIBE FIELD FOTID TABLE ZPLTCALCSLVFOT 'Ссылка на Начисление на Фонд Оплаты Труда (на поле ID таблицы ZPLTDECRFOT)'; DESCRIBE FIELD INCRID TABLE ZPLTCALCSLVFOT 'Ссылка на Начисление (на поле ID таблицы ZPLTINCR)'; DESCRIBE FIELD CSUMMA TABLE ZPLTCALCSLVFOT 'Рассчитанная сумма начисления на Фонд Оплаты Труда'; DESCRIBE FIELD CJEAR TABLE ZPLTCALENDARBASE 'Год'; DESCRIBE FIELD M1 TABLE ZPLTCALENDARBASE 'Январь: В значении поля побитно по дням устанавливается признак праздничного дня: 0 бит - 1 января 1 бит - 2 января ...'; DESCRIBE FIELD M2 TABLE ZPLTCALENDARBASE 'Февраль'; DESCRIBE FIELD ID TABLE ZPLTDECR 'Уникальный код записи'; DESCRIBE FIELD NAME TABLE ZPLTDECR 'Наименование Удержания'; DESCRIBE FIELD CODE TABLE ZPLTDECR 'Код удержания'; DESCRIBE FIELD COD TABLE ZPLTDECR 'Признак льготы (код)'; DESCRIBE FIELD TYP TABLE ZPLTDECR 'Расчет: 0 - по начислению 1 - по сумме к выдаче'; DESCRIBE FIELD SUMMA TABLE ZPLTDECR 'Сумма (при задании удержания по фиксированной сумме например - штраф)'; DESCRIBE FIELD PROC TABLE ZPLTDECR 'Процент для расчета удержания (если SUMMA = 0)'; DESCRIBE FIELD SUM1 TABLE ZPLTDECR 'SUM1..SUM6 PROC1..PROC6 SUMM1..SUMM6 проценты и суммы при расчете удержаний по сетке'; DESCRIBE FIELD SYSTEM_FLAG TABLE ZPLTDECR 'Признак особых удержаний 0 - типовое удержание 1 - признак подоходного налога 2 - признак аванса 3 - пенсионный фонд 4 - соцстрах по безработице 5 - соцстрах по временной нетрудоспособности (0.25%) 6 - соцстрах по временной нетрудоспособности (0.5%) 7 - перерасчет подоходного налога 8 - копейки прошлого месяца 9 - копейки текущего месяца 10- соцстрах по временной нетрудоспособности (1%) 11- единый социальный взнос 12- единый социальный взнос с больнычных листов 13- Военный сбор'; DESCRIBE FIELD PRIORITY TABLE ZPLTDECR 'Приоритет расчета удержания'; DESCRIBE FIELD GRIDTYP TABLE ZPLTDECR 'Методика расчета по сетке значений: 0 - расчет по алготитму подоходного налога (с разницами) 1 - расчет по диапазонам сумм'; DESCRIBE FIELD AVANS TABLE ZPLTDECR 'Включать ли данное удержание в расчет аванса 0 - нет 1 - да'; DESCRIBE FIELD ROUNDTYP TABLE ZPLTDECR 'Округление базы (суммы начислений) для расчета удержания: 0 - не округлять (! начисления при расчете округляются до копеек) 1 - округлять базу до гривен 2 - отбрасывать копейки'; DESCRIBE FIELD GRID1 TABLE ZPLTDECR 'GRID1...GRID6 Признаки - "Без учета льгот" для соотв. интервалов сумм'; DESCRIBE FIELD INCLBL TABLE ZPLTDECR 'Включать больничные в ФОТ (признак)'; DESCRIBE FIELD SYSTEM_FLAG TABLE ZPLTDECRFOT 'Категория: 0 - прочеее начисление на ФОТ 1 - Пенсионный Фонд 32% 2 - Пенсионный фонд 4% 3 - Соцстрах по безработице 4 - Соцстрах по временной нетрудоспособности 5 - Соцстрах - несчастный случай 6 - Единый социальный взнос 7 - Ед. соц. взнос (больничные)'; DESCRIBE FIELD ID TABLE ZPLTFOTGRP 'Уникальный код записи'; DESCRIBE FIELD NAME TABLE ZPLTFOTGRP 'Наименование группы начислений на ФОТ'; DESCRIBE FIELD ID TABLE ZPLTFOTGRPREF 'Уникальный код записи'; DESCRIBE FIELD GRPID TABLE ZPLTFOTGRPREF 'Ссылка на группу (на поле ID таблицы ZPLTFOTGRP)'; DESCRIBE FIELD FOTID TABLE ZPLTFOTGRPREF 'Ссылка на начисление на ФОТ (на поле ID таблицы ZPLTDECRFOT)'; DESCRIBE FIELD NAME TABLE ZPLTGRPPRSNMST 'Наименование бригады'; DESCRIBE FIELD PODRID TABLE ZPLTGRPPRSNMST 'Подразделение'; DESCRIBE FIELD INCR1ID TABLE ZPLTGRPPRSNMST 'Начисление (тарифная ставка)'; DESCRIBE FIELD INCR2ID TABLE ZPLTGRPPRSNMST 'Начисление (приработок)'; DESCRIBE FIELD INCR3ID TABLE ZPLTGRPPRSNMST 'Начисление (премия)'; DESCRIBE FIELD ZCALCTYP TABLE ZPLTGRPPRSNMST 'Вид оплаты (методика расчета нарядов) 0 - сдельная оплата 1 - сдельно-премиальная 2 - повременно-премиальная'; DESCRIBE FIELD MSTID TABLE ZPLTGRPPRSNSLV 'Ссылка на Бригаду (на поле ID таблицы ZPLTGRPPRSNMST)'; DESCRIBE FIELD PRSNID TABLE ZPLTGRPPRSNSLV 'Ссылка на Сотрудника (на поле ID таблицы PERSONAL)'; DESCRIBE FIELD POSTID TABLE ZPLTGRPPRSNSLV 'Должность (PRSNPOST)'; DESCRIBE FIELD CATEGORY TABLE ZPLTGRPPRSNSLV 'Разряд'; DESCRIBE FIELD TSUMM TABLE ZPLTGRPPRSNSLV 'Часовой тариф'; DESCRIBE FIELD KTU TABLE ZPLTGRPPRSNSLV 'КТУ (коэффициент трудового участия)'; DESCRIBE FIELD INCR1ID TABLE ZPLTGRPPRSNSLV 'Вид начисления (вид оплаты) для тарифной зарплаты'; DESCRIBE FIELD INCR2ID TABLE ZPLTGRPPRSNSLV 'Вид начисления (вид оплаты) для приработка'; DESCRIBE FIELD INCR3ID TABLE ZPLTGRPPRSNSLV 'Вид начисления (вид оплаты) для премии'; DESCRIBE FIELD ID TABLE ZPLTINCR 'Уникальный Код Записи'; DESCRIBE FIELD CODE TABLE ZPLTINCR 'Код начисления'; DESCRIBE FIELD COD TABLE ZPLTINCR 'Признак дохода (код)'; DESCRIBE FIELD SYSTEM_FLAG TABLE ZPLTINCR 'Категория начисления: 0 - Прочее начисление 1 - Оклад (расчет по табелю / среднечасовой) 2 - Аванс (начисленный) 3 - Больничные (первые 5 дн.) - за счет предприятия 4 - Материальная помощь 5 - Отпускные 6 - Перерасчет подоходного 7 - Индексация 8 - Больничные (за счет соцстраха) 9 - Больничный по уходу за ребенком 10 - Пособие по беременности и родам 11 - Пособие по уходу за ребенком(до 3-х лет) 12 - Пособие по рождению ребенка 13 - Пособие на похороны 14 - Процент от продаж 15 - Оклад (расчет по табелю / среднедневной) 16 - Разница между мин. з/п.'; DESCRIBE FIELD ID TABLE ZPLTINCRFOT 'Уникальный код записи'; DESCRIBE FIELD INCRID TABLE ZPLTINCRFOT 'Начисление (ссылка на поле ID таблицы ZPLTINCR)'; DESCRIBE FIELD FOTID TABLE ZPLTINCRFOT 'Ссылка на начисление на ФОТ (на поле ID таблицы ZPLTDECRFOT)'; DESCRIBE FIELD MINCRID TABLE ZPLTINCRINCR 'Рассчитываемое начисление'; DESCRIBE FIELD DINCRID TABLE ZPLTINCRINCR 'Начисление включаемое в базу для расчета'; DESCRIBE FIELD MSTID TABLE ZPLTJOBGRPJOB 'Ссылка на бригадный наряд'; DESCRIBE FIELD JOBID TABLE ZPLTJOBGRPJOB 'Вид выполненной работы'; DESCRIBE FIELD PRICE TABLE ZPLTJOBGRPJOB 'Расценка за выполненную работу (тариф)'; DESCRIBE FIELD QUANT TABLE ZPLTJOBGRPJOB 'Количество (объем) выполненной работы'; DESCRIBE FIELD TSUMMA TABLE ZPLTJOBGRPJOB 'Тарифная оплата'; DESCRIBE FIELD PPROC TABLE ZPLTJOBGRPJOB 'Процент премии'; DESCRIBE FIELD PSUMMA TABLE ZPLTJOBGRPJOB 'Сумма премии'; DESCRIBE FIELD NAME TABLE ZPLTJOBGRPMST 'Наименование наряда'; DESCRIBE FIELD MSTID TABLE ZPLTJOBGRPMST 'Ссылка на расчетную ведомость'; DESCRIBE FIELD BRIGADEID TABLE ZPLTJOBGRPMST 'Бригада (опцтонально)'; DESCRIBE FIELD ORGNINFOID TABLE ZPLTJOBGRPMST 'Договор'; DESCRIBE FIELD ORGNID TABLE ZPLTJOBGRPMST 'Организация'; DESCRIBE FIELD MSTID TABLE ZPLTJOBGRPPRSN 'Ссылка на бригадный наряд'; DESCRIBE FIELD PRSNSLVID TABLE ZPLTJOBGRPPRSN 'Ссылка на сотрудника в ведомости (работник)'; DESCRIBE FIELD KTU TABLE ZPLTJOBGRPPRSN 'КТУ'; DESCRIBE FIELD TSUMM TABLE ZPLTJOBGRPPRSN 'Тарифная ставка (оплата за час)'; DESCRIBE FIELD WTIME TABLE ZPLTJOBGRPPRSN 'Отработанное время (ч.)'; DESCRIBE FIELD TSUMMA TABLE ZPLTJOBGRPPRSN 'Тарифная оплата'; DESCRIBE FIELD DSUMMA TABLE ZPLTJOBGRPPRSN 'Сумма приработка'; DESCRIBE FIELD PSUMMA TABLE ZPLTJOBGRPPRSN 'Сумма премии'; DESCRIBE FIELD NAME TABLE ZPLTJOBPRSNMST 'Наименование индивидуального наряда'; DESCRIBE FIELD MSTID TABLE ZPLTJOBPRSNMST 'Расчетная ведомость'; DESCRIBE FIELD ORGNID TABLE ZPLTJOBPRSNMST 'Организация'; DESCRIBE FIELD ORGNINFOID TABLE ZPLTJOBPRSNMST 'Договор'; DESCRIBE FIELD MSTID TABLE ZPLTJOBPRSNSLV 'Ссылка на индивидуальный наряд'; DESCRIBE FIELD PRSNID TABLE ZPLTJOBPRSNSLV 'Работник (сотрудник)'; DESCRIBE FIELD JOBID TABLE ZPLTJOBPRSNSLV 'Вид работы'; DESCRIBE FIELD PRICE TABLE ZPLTJOBPRSNSLV 'Расценка за выполненную работу'; DESCRIBE FIELD QUANT TABLE ZPLTJOBPRSNSLV 'Количество (объем) выполненной работы'; DESCRIBE FIELD PPROC TABLE ZPLTJOBPRSNSLV 'Процент премии'; DESCRIBE FIELD NAME TABLE ZPLTJOBSLIST 'Наименование работы'; DESCRIBE FIELD PRICE TABLE ZPLTJOBSLIST 'Расценка'; DESCRIBE FIELD INCRID TABLE ZPLTJOBSLIST 'Вид начисления'; DESCRIBE FIELD NTIME TABLE ZPLTJOBSLIST 'Норма времени (мин.)'; DESCRIBE FIELD RND TABLE ZPLTJOBSLIST 'Степень округления стоимости, например: 0.01 - до одной коп. 1.00 - до 1 грн.'; DESCRIBE FIELD FIX_PRICE TABLE ZPLTJOBSLIST 'Признак: Не рассчитывать сумму работ по времени (СЦ)'; DESCRIBE FIELD TYP TABLE ZPLTSERTVACAT '0 - с сохранением з/п 1 - без сохранения з/п'; DESCRIBE FIELD TABELID TABLE ZPLTTABELPLAN 'Ссылка на вид табеля'; DESCRIBE FIELD BDATE TABLE ZPLTTABELPLAN 'Первый день месяца'; DESCRIBE FIELD EDATE TABLE ZPLTTABELPLAN 'Последний день месяца'; /******************************************************************************/ /*** Parameters descriptions ***/ /******************************************************************************/ DESCRIBE PARAMETER NBR PROCEDURE F_WEEK_DATASET 'Номер недели'; DESCRIBE PARAMETER REST_MODE PROCEDURE F_WEEK_DATASET '(Зарезервировано)'; DESCRIBE PARAMETER WEEK_START PROCEDURE F_WEEK_DATASET 'Начало недели: 0 - Пн. ... 6 - Вс.'; DESCRIBE PARAMETER CO_GOODS_CENTER_ID PROCEDURE SP_BDG_DO_CALC_ORDER_OPER 'BDG_CALC_ORDER.GOODS_CENTER_ID - ЦФУ расчетов'; DESCRIBE PARAMETER CO_ID PROCEDURE SP_BDG_DO_CALC_ORDER_OPER 'BDG_CALC_ORDER.ID - Шаг калькуляции'; DESCRIBE PARAMETER C_ID PROCEDURE SP_BDG_DO_CALC_ORDER_OPER 'BDG_CALC.ID - Калькуляция'; DESCRIBE PARAMETER SO_GROU_ PROCEDURE SP_BDG_DO_CALC_ORDER_OPER 'BDG_SCHEME_ORDER.GROU_ - Тип шага'; DESCRIBE PARAMETER SO_ID PROCEDURE SP_BDG_DO_CALC_ORDER_OPER 'BDG_SCHEME_ORDER.ID - Шаг схемы'; DESCRIBE PARAMETER NDS PROCEDURE SP_BDG_FACT_REG_SALE 'Брать стоимость с НДС'; DESCRIBE PARAMETER WORK_AS_GOODS PROCEDURE SP_BDG_FACT_REG_SALE 'Учитывать продукцию как товары'; DESCRIBE PARAMETER O_TYPE_PRG PROCEDURE SP_CRDS_MATCHING_DT '0 - Карточки, 1 - Склад'; DESCRIBE PARAMETER I_PRECISION PROCEDURE SP_CRDS_MATCHING_KT 'точность';