85 lines
3.0 KiB
Markdown
85 lines
3.0 KiB
Markdown
# Shayegan webservice notes (PDF + Sample_Shygun Postman)
|
|||
|
|
|
||
|
|
Do not store real credentials in this file or in Git.
|
||
|
|
|
||
|
|
## Known for boursecu (operator, 2026-10-05)
|
||
|
|
|
||
|
|
Store panel (`app.boursemes.com`) is the **Laravel API**, not Shayegan:
|
||
|
|
- Shop domain: `app.boursemes.com`
|
||
|
|
- `node_server`: `https://app.boursemes.com/server`
|
||
|
|
- Listed LAN IP on that panel: `192.168.70.189` — different from Shayegan host; do not use as WsServer unless confirmed.
|
||
|
|
|
||
|
|
Shayegan webservice hosts (operator):
|
||
|
|
- Public/static (Mashhad office): `2.180.4.172`
|
||
|
|
- Internal LAN: `192.168.109.222`
|
||
|
|
- Port: `2030`
|
||
|
|
- Candidate `shayegan_base_url` (no `/api` suffix):
|
||
|
|
- From internet / remote app server: `http://2.180.4.172:2030`
|
||
|
|
- From same LAN as حسابگر: `http://192.168.109.222:2030`
|
||
|
|
- If 404, retry with `/WsServer` appended (Postman samples).
|
||
|
|
|
||
|
|
SQL Config for Shayegan Put/Get (inside JSON `Config`, not HTTP host):
|
||
|
|
- `Server`: `P-SERVER`
|
||
|
|
- `DataBaseName`: `CYPRSD04`
|
||
|
|
- `DBUserName`: `sa`
|
||
|
|
- Password: set only in DB `settings.shayegan_db_password` (never commit).
|
||
|
|
|
||
|
|
Still useful from operator: Auth*, ItemNumber, STNumber, bank account, amount/weight scales, metal wallet mode.
|
||
|
|
|
||
|
|
## Base URL (PDF)
|
||
|
|
|
||
|
|
`http://{host}[:port]{optionalBasePath}/api/{Endpoint}`
|
||
|
|
|
||
|
|
PDF example: `http://192.168.1.1/api/Document/Put`
|
||
|
|
Postman often inserts `/WsServer` or `/WsServer-3.13` before `/api`.
|
||
|
|
Operator port hint: `2030`. SQL Server name is **not** the HTTP host.
|
||
|
|
|
||
|
|
## Request shape
|
||
|
|
|
||
|
|
Every call body includes `Config`.
|
||
|
|
Get calls also include `Domain` (+ `RowStart`/`RowCount` query).
|
||
|
|
Put calls include `PutObject` array at the **same level** as `Config` (raw HTTP / Postman). PDF C# wrapper is named `Put`.
|
||
|
|
|
||
|
|
### Config fields
|
||
|
|
|
||
|
|
`Server`, `AllowRowSecurity`, `Level`, `DBUserName`, `DBPassword`, `DataBaseName`, `AuthUser`, `AuthPassword`, `Language`
|
||
|
|
Auth: Shayegan cloud / Hesabgar / none (empty Auth*).
|
||
|
|
|
||
|
|
## Endpoints used
|
||
|
|
|
||
|
|
| Op | Method path |
|
||
|
|
|----|-------------|
|
||
|
|
| Health (read) | `POST .../api/Account/Get?RowStart=0&RowCount=1` |
|
||
|
|
| Trade | `POST .../api/Invoice/Put` |
|
||
|
|
| Rial ledger | `POST .../api/Document/Put` |
|
||
|
|
| Customer account | `POST .../api/Account/Put` |
|
||
|
|
|
||
|
|
## Put response (check even on HTTP 200)
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"Result": [{ "ErrorMessage": "", "Number": "6572", "GuId": "..." }],
|
||
|
|
"ErrorMessage": "",
|
||
|
|
"TokenString": ""
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Treat non-empty top-level or per-row `ErrorMessage` as failure.
|
||
|
|
|
||
|
|
## InvTyp (company)
|
||
|
|
|
||
|
|
1 تولید | 2 فروش | 3 خرید | 4 حواله | 5 رسید انبار | 6 برگشت فروش | 7 برگشت خرید | 8/9 تعدیل | 10 انتقال انبار | 11/12 سفارش | 13 پیشفاکتور
|
||
|
|
|
||
|
|
Customer **buy** copper → company **فروش** → `InvTyp=2`
|
||
|
|
Customer **sell** copper → company **خرید** → `InvTyp=3`
|
||
|
|
|
||
|
|
## Document body (PDF)
|
||
|
|
|
||
|
|
Prefer `AmountBed` / `AmountBes` (also `RialBed` / `RialBes` exist).
|
||
|
|
Header: `DocDescription`, `DocDate` (`yyyyMMdd`), `DocReference`, `GuId`.
|
||
|
|
|
||
|
|
## Invoice required (PDF)
|
||
|
|
|
||
|
|
`AccountNumber`, `InvTyp`, `InvDate`; line: item + `STNumber` + `Quan` + `Price`.
|
||
|
|
Ignore Postman keys with trailing spaces — PDF field names are authoritative.
|