This commit is contained in:
che
2026-07-27 15:24:23 +05:00
parent 13362528cd
commit 2dd7d33c8b
29 changed files with 2796 additions and 353 deletions
@@ -52,10 +52,10 @@ static CONTRACT_FIELDS: &[Field] = &[
.required(false)
.nullable(),
Field::related("category_ref", "category_id", &CATEGORY_RELATION),
Field::related("counterparty", "company", &COUNTERPARTY_RELATION),
Field::related("project", "project", &PROJECT_RELATION),
Field::related("frc", "frc", &FRC_RELATION),
Field::related("employee", "get_employee", &EMPLOYEE_RELATION),
Field::related("counterparty", "counterparty_id", &COUNTERPARTY_RELATION),
Field::related("project", "project_id", &PROJECT_RELATION),
Field::related("frc", "frc_id", &FRC_RELATION),
Field::related("employee", "employee_id", &EMPLOYEE_RELATION),
];
static CONTRACT_CATEGORY_FIELDS: &[Field] = &[
+2
View File
@@ -1,6 +1,7 @@
pub mod frcapp;
pub mod personemanagment;
pub mod projectapp;
pub mod supplyapp;
pub mod users;
use che_tauri::InstalledApps;
@@ -12,5 +13,6 @@ pub fn installed_apps() -> InstalledApps {
.add(projectapp::module())
.add(personemanagment::module())
.add(contractapp::module())
.add(supplyapp::module())
}
pub mod contractapp;
@@ -14,6 +14,7 @@ static TASK_FILTERS: &[Filter] = &[
Filter::exact("id"),
Filter::contains("text"),
Filter::remote_only("contract"),
Filter::remote_only("bill"),
Filter::remote_only("doer"),
Filter::remote_only("author"),
Filter::exact("archive"),
+2 -1
View File
@@ -34,8 +34,9 @@ impl AppModule for TaskModule {
serializers::task_transfer_serializer(),
filters::task_transfer_filterset(),
);
ctx.resource::<models::Message>(
ctx.mapped_remote_resource::<models::Message>(
"message",
"/api/persone/messages/",
serializers::message_serializer(),
filters::message_filterset(),
);
@@ -101,6 +101,8 @@ pub struct Message {
pub employee_id: i64,
pub text: String,
pub status: String,
}
#[derive(Debug, Clone, Model)]
@@ -11,92 +11,271 @@ static EMPLOYEE_FIELDS: &[Field] = &[
static TASK_FIELDS: &[Field] = &[
Field::new("id").read_only(),
Field::json("project").required(false).nullable(),
Field::json("doer").required(false).nullable(),
Field::new("doer_name"),
Field::json("author").required(false).nullable(),
Field::json("memo_full").required(false).nullable(),
Field::json("bill_full").required(false).nullable(),
Field::json("contract_full").required(false).nullable(),
Field::json("project")
.ts_type("string")
.required(false)
.nullable()
.read_only(),
Field::json("doer")
.ts_type("Employee")
.input_ts_type("Employee")
.required(false)
.nullable(),
Field::new("doer_name").read_only(),
Field::json("author")
.ts_type("Employee")
.required(false)
.nullable()
.read_only(),
Field::json("memo_full")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("bill_full")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("contract_full")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("contract_application_full")
.ts_type("unknown")
.required(false)
.nullable(),
.nullable()
.read_only(),
Field::json("outgoing_letter_full")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("entry_letter_full").required(false).nullable(),
Field::json("protocolitem_full").required(false).nullable(),
Field::json("decree_full").required(false).nullable(),
Field::json("delivery_full").required(false).nullable(),
Field::new("get_status"),
Field::new("get_status_class"),
Field::new("get_scan_url").required(false).nullable(),
Field::new("get_last_day"),
Field::new("frc_icon"),
Field::json("uploadfile_set").required(false).nullable(),
.nullable()
.read_only(),
Field::json("entry_letter_full")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("protocolitem_full")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("decree_full")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("delivery_full")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::new("get_status").read_only(),
Field::new("get_status_class").read_only(),
Field::new("get_scan_url")
.required(false)
.nullable()
.read_only(),
Field::new("get_last_day").read_only(),
Field::new("frc_icon").read_only(),
Field::json("uploadfile_set")
.ts_type("unknown[]")
.required(false)
.nullable()
.read_only(),
Field::new("deadline"),
Field::new("request_new_deadline")
.required(false)
.nullable()
.read_only(),
Field::new("plan_date")
.required(false)
.nullable()
.read_only(),
Field::new("date").read_only(),
Field::json("message_set")
.ts_type("unknown[]")
.required(false)
.nullable()
.read_only(),
Field::json("responsible")
.ts_type("Employee")
.input_ts_type("Employee")
.required(false)
.nullable(),
Field::new("plan_date").required(false).nullable(),
Field::new("date"),
Field::json("message_set").required(false).nullable(),
Field::json("responsible").required(false).nullable(),
Field::json("counterparty").required(false).nullable(),
Field::json("counterparty")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("get_deadline_history")
.ts_type("unknown[]")
.required(false)
.nullable(),
Field::new("duration").required(false).nullable(),
Field::json("bid_full").required(false).nullable(),
.nullable()
.read_only(),
Field::new("duration")
.required(false)
.nullable()
.read_only(),
Field::json("bid_full")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("price_agreement_full")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("transfer").required(false).nullable(),
.nullable()
.read_only(),
Field::json("transfer")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::new("text"),
Field::new("status"),
Field::new("result"),
Field::new("complit_date").required(false).nullable(),
Field::new("comment"),
Field::new("note"),
Field::new("approve"),
Field::new("archive"),
Field::new("approve_date").required(false).nullable(),
Field::new("approve_required"),
Field::new("progress_status"),
Field::new("start_date").required(false).nullable(),
Field::new("end_date").required(false).nullable(),
Field::new("order_number").required(false).nullable(),
Field::new("priority").required(false).nullable(),
Field::new("typ"),
Field::json("stage").required(false).nullable(),
Field::json("contract").required(false).nullable(),
Field::json("questionnair").required(false).nullable(),
Field::json("contract_application")
Field::new("status").read_only(),
Field::new("result").read_only(),
Field::new("complit_date")
.required(false)
.nullable(),
Field::json("entry_letter").required(false).nullable(),
Field::json("outgoing_letter").required(false).nullable(),
Field::json("protocol").required(false).nullable(),
Field::json("bill").required(false).nullable(),
Field::json("decree").required(false).nullable(),
Field::json("court_case").required(false).nullable(),
Field::json("bill_register").required(false).nullable(),
Field::json("price_agreement").required(false).nullable(),
Field::json("bid").required(false).nullable(),
Field::json("delivery").required(false).nullable(),
Field::json("scheduled_task").required(false).nullable(),
Field::json("report").required(false).nullable(),
Field::json("memo").required(false).nullable(),
Field::json("protocolitem").required(false).nullable(),
Field::json("related_note").required(false).nullable(),
Field::json("task").required(false).nullable(),
.nullable()
.read_only(),
Field::new("comment").read_only(),
Field::new("note").read_only(),
Field::new("approve").read_only(),
Field::new("archive").read_only(),
Field::new("approve_date")
.required(false)
.nullable()
.read_only(),
Field::new("approve_required").read_only(),
Field::new("progress_status").read_only(),
Field::new("start_date")
.required(false)
.nullable()
.read_only(),
Field::new("end_date")
.required(false)
.nullable()
.read_only(),
Field::new("order_number")
.required(false)
.nullable()
.read_only(),
Field::new("priority")
.required(false)
.nullable()
.read_only(),
Field::new("typ").read_only(),
Field::json("stage")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("contract")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("questionnair")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("contract_application")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("entry_letter")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("outgoing_letter")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("protocol")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("bill")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("decree")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("court_case")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("bill_register")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("price_agreement")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("bid")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("delivery")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("scheduled_task")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("report")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("memo")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("protocolitem")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("related_note")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
Field::json("task")
.ts_type("unknown")
.required(false)
.nullable()
.read_only(),
];
static MESSAGE_FIELDS: &[Field] = &[
Field::new("id").read_only(),
Field::new("task_id"),
Field::new("employee_id"),
Field::new("task").source("task_id"),
Field::new("recipient").source("employee_id"),
Field::new("text"),
Field::new("status"),
];
static TASK_TRANSFER_FIELDS: &[Field] = &[
+26
View File
@@ -0,0 +1,26 @@
use che_tauri::{Filter, FilterSet};
use super::models::Bill;
static BILL_FILTERS: &[Filter] = &[
Filter::exact("id"),
Filter::exact("number"),
Filter::contains("number"),
Filter::exact("text"),
Filter::contains("text"),
Filter::exact("status"),
Filter::exact("status_name"),
Filter::contains("status_name"),
Filter::exact("date"),
Filter::exact("date_due"),
Filter::exact("date_bill"),
Filter::exact("contract_typ"),
Filter::remote_only("counterparty"),
Filter::remote_only("frc"),
Filter::remote_only("project"),
Filter::remote_only("category"),
];
pub fn bill_filterset() -> FilterSet<Bill> {
FilterSet::new(BILL_FILTERS).remote_ordering("order_by")
}
@@ -0,0 +1,33 @@
CREATE TABLE IF NOT EXISTS supply_bill (
id INTEGER PRIMARY KEY AUTOINCREMENT,
number TEXT NOT NULL,
text TEXT NOT NULL,
status TEXT NOT NULL,
status_name TEXT NOT NULL,
date TEXT NOT NULL,
date_due TEXT,
date_bill TEXT,
month_of_costs TEXT,
cost REAL NOT NULL,
to_payd REAL NOT NULL,
paid REAL NOT NULL,
nds_cost REAL NOT NULL,
scan TEXT,
comment TEXT NOT NULL,
absolute_url TEXT NOT NULL,
date_pay TEXT,
transaction_date TEXT,
date_applay TEXT,
archive_s BOOLEAN NOT NULL,
pp_maked BOOLEAN NOT NULL,
composit BOOLEAN NOT NULL,
contract_typ TEXT NOT NULL,
frc TEXT,
project TEXT,
counterparty TEXT,
contract TEXT,
responsible TEXT,
author TEXT,
category TEXT,
transferdocument_set TEXT
);
@@ -0,0 +1,350 @@
{
"models": [
{
"table": "supply_bill",
"fields": [
{
"name": "id",
"ty": "integer",
"primary_key": true,
"nullable": false,
"auto": true,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "number",
"ty": "text",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "text",
"ty": "text",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "status",
"ty": "text",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "status_name",
"ty": "text",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "date",
"ty": "text",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "date_due",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "date_bill",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "month_of_costs",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "cost",
"ty": "real",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "to_payd",
"ty": "real",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "paid",
"ty": "real",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "nds_cost",
"ty": "real",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "scan",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "comment",
"ty": "text",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "absolute_url",
"ty": "text",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "date_pay",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "transaction_date",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "date_applay",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "archive_s",
"ty": "boolean",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "pp_maked",
"ty": "boolean",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "composit",
"ty": "boolean",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "contract_typ",
"ty": "text",
"primary_key": false,
"nullable": false,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "frc",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "project",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "counterparty",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "contract",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "responsible",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "author",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "category",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
},
{
"name": "transferdocument_set",
"ty": "text",
"primary_key": false,
"nullable": true,
"auto": false,
"unique": false,
"max_length": null,
"default": null,
"foreign_key": null
}
]
}
]
}
+26
View File
@@ -0,0 +1,26 @@
pub mod filters;
pub mod models;
pub mod serializers;
use che_tauri::{AppModule, ModuleContext};
pub fn module() -> SupplyappModule {
SupplyappModule
}
pub struct SupplyappModule;
impl AppModule for SupplyappModule {
fn name(&self) -> &'static str {
"supplyapp"
}
fn init(&self, ctx: &mut ModuleContext) {
ctx.mapped_remote_resource::<models::Bill>(
"bill",
"/api/supply/bill/",
serializers::bill_serializer(),
filters::bill_filterset(),
);
}
}
+40
View File
@@ -0,0 +1,40 @@
use che_orm::Model;
#[derive(Debug, Clone, Model)]
#[model(table = "supply_bill")]
pub struct Bill {
#[field(primary_key)]
pub id: i64,
pub number: String,
pub text: String,
pub status: String,
pub status_name: String,
pub date: String,
pub date_due: Option<String>,
pub date_bill: Option<String>,
pub month_of_costs: Option<String>,
pub cost: f64,
pub to_payd: f64,
pub paid: f64,
pub nds_cost: f64,
pub scan: Option<String>,
pub comment: String,
pub absolute_url: String,
pub date_pay: Option<String>,
pub transaction_date: Option<String>,
pub date_applay: Option<String>,
pub archive_s: bool,
pub pp_maked: bool,
pub composit: bool,
pub contract_typ: String,
pub frc: Option<String>,
pub project: Option<String>,
pub counterparty: Option<String>,
pub contract: Option<String>,
pub responsible: Option<String>,
pub author: Option<String>,
pub category: Option<String>,
pub transferdocument_set: Option<String>,
}
@@ -0,0 +1,65 @@
use che_tauri::{Field, ModelSerializer};
use super::models::Bill;
static BILL_FIELDS: &[Field] = &[
Field::new("id").read_only(),
Field::new("number"),
Field::new("text"),
Field::new("status"),
Field::new("status_name").source("get_status_display"),
Field::new("date"),
Field::new("date_due").required(false).nullable(),
Field::new("date_bill").required(false).nullable(),
Field::new("month_of_costs").required(false).nullable(),
Field::new("cost"),
Field::new("to_payd"),
Field::new("paid"),
Field::new("nds_cost"),
Field::new("scan").required(false).nullable(),
Field::new("comment"),
Field::new("absolute_url").source("get_absolute_url"),
Field::new("date_pay").required(false).nullable(),
Field::new("transaction_date").required(false).nullable(),
Field::new("date_applay").required(false).nullable(),
Field::new("archive_s"),
Field::new("pp_maked"),
Field::new("composit"),
Field::new("contract_typ"),
Field::json("frc")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("project")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("counterparty")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("contract")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("responsible")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("author")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("category")
.ts_type("unknown")
.required(false)
.nullable(),
Field::json("transferdocument_set")
.ts_type("unknown[]")
.required(false)
.nullable(),
];
pub fn bill_serializer() -> ModelSerializer<Bill> {
ModelSerializer::new(BILL_FIELDS)
}