accounting kernel2
This commit is contained in:
84
common/proto/accounting.proto
Normal file
84
common/proto/accounting.proto
Normal file
@@ -0,0 +1,84 @@
|
||||
syntax = "proto3";
|
||||
package komp_ac.accounting;
|
||||
|
||||
// Mutable informational journals. A journal may contain only debits, only
|
||||
// credits, or any non-zero balance. Balance is reported but never enforced.
|
||||
service Accounting {
|
||||
// Create an empty journal and return its generated journal_id.
|
||||
rpc CreateJournal(CreateJournalRequest) returns (Journal);
|
||||
|
||||
// Return journal lines and credits-minus-debits informational balance.
|
||||
rpc GetJournal(GetJournalRequest) returns (Journal);
|
||||
|
||||
// Append one manual debit or credit line to an existing journal.
|
||||
rpc AddJournalLine(AddJournalLineRequest) returns (Journal);
|
||||
|
||||
// Soft-delete one line while retaining it for audit display.
|
||||
rpc SoftDeleteJournalLine(SoftDeleteJournalLineRequest) returns (Journal);
|
||||
}
|
||||
|
||||
// Tables with an active posting script accept journal_id as a reserved key in
|
||||
// PostTableDataRequest.data. It selects the journal receiving generated lines
|
||||
// and is removed before the source row is validated or stored.
|
||||
|
||||
enum JournalSide {
|
||||
JOURNAL_SIDE_UNSPECIFIED = 0;
|
||||
JOURNAL_SIDE_DEBIT = 1;
|
||||
JOURNAL_SIDE_CREDIT = 2;
|
||||
}
|
||||
|
||||
message CreateJournalRequest {
|
||||
string profile_name = 1;
|
||||
string currency = 2;
|
||||
string description = 3;
|
||||
}
|
||||
|
||||
message GetJournalRequest {
|
||||
string profile_name = 1;
|
||||
int64 journal_id = 2;
|
||||
bool include_deleted = 3;
|
||||
}
|
||||
|
||||
message AddJournalLineRequest {
|
||||
string profile_name = 1;
|
||||
int64 journal_id = 2;
|
||||
JournalSide side = 3;
|
||||
string account_code = 4;
|
||||
string amount = 5;
|
||||
string description = 6;
|
||||
}
|
||||
|
||||
message SoftDeleteJournalLineRequest {
|
||||
string profile_name = 1;
|
||||
int64 journal_id = 2;
|
||||
int64 journal_line_id = 3;
|
||||
}
|
||||
|
||||
message JournalLine {
|
||||
int64 id = 1;
|
||||
int32 line_number = 2;
|
||||
JournalSide side = 3;
|
||||
string account_code = 4;
|
||||
string amount = 5;
|
||||
string description = 6;
|
||||
bool deleted = 7;
|
||||
string created_at = 8;
|
||||
string deleted_at = 9;
|
||||
string source_table_name = 10;
|
||||
int64 source_record_id = 11;
|
||||
int64 source_row_revision = 12;
|
||||
int64 posting_script_id = 13;
|
||||
}
|
||||
|
||||
message Journal {
|
||||
int64 id = 1;
|
||||
string profile_name = 2;
|
||||
string currency = 3;
|
||||
string description = 4;
|
||||
string created_at = 5;
|
||||
repeated JournalLine lines = 6;
|
||||
string total_debit = 7;
|
||||
string total_credit = 8;
|
||||
// Informational difference calculated as credits minus debits.
|
||||
string balance = 9;
|
||||
}
|
||||
@@ -117,10 +117,10 @@ message PostTableDataRequest {
|
||||
// comparison, e.g., decimals are compared numerically).
|
||||
//
|
||||
// Notes:
|
||||
// - Unknown/invalid column names are rejected
|
||||
// - Some application-specific validations may apply (e.g., max length for
|
||||
// certain fields like "telefon")
|
||||
map<string, google.protobuf.Value> data = 3;
|
||||
// - Unknown/invalid column names are rejected
|
||||
// - Some application-specific validations may apply (e.g., max length for
|
||||
// certain fields like "telefon")
|
||||
map<string, google.protobuf.Value> data = 3;
|
||||
}
|
||||
|
||||
// Insert response.
|
||||
|
||||
Reference in New Issue
Block a user