Bump version to 0.31.0
This commit is contained in:
+126
@@ -4,6 +4,132 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## [0.31.0] - 2026-10-01
|
||||
### Added
|
||||
- A "Create voucher" button on Carrier Vouchers, for a parcel that isn't a
|
||||
shop order. The form follows the carrier:
|
||||
- **ELTA:** recipient address and phones, envelope or parcel, packages,
|
||||
weight, dimensions (sent as volumetric weight), cash on delivery,
|
||||
extra services, remarks and our reference.
|
||||
- **Box Now:** the locker, one size per box, the recipient's mobile and
|
||||
email, cash on delivery, parcel value and reference.
|
||||
|
||||
The voucher has no order. An ELTA one waits on Pending Vouchers, which
|
||||
now lists vouchers without an order, until it's printed. It can be
|
||||
linked to an order later. Carriers opt in with the new
|
||||
`CreatesStandaloneVouchers` contract.
|
||||
- Carrier Vouchers:
|
||||
- a **Carrier** column;
|
||||
- a **Print** button, in the list and on a voucher's page, for vouchers
|
||||
created here (from an order or with "Create voucher");
|
||||
- vouchers created here that are still waiting for their number (ELTA
|
||||
issues it on print) are listed too, as "Not issued yet".
|
||||
|
||||
Empty Status and Order cells now read "None yet" and "None".
|
||||
- An order's "Create Shipment" for ELTA and Box Now opens the same voucher
|
||||
form (`VoucherForm`), prefilled from the order:
|
||||
- recipient, phones, email and delivery instructions from the shipping
|
||||
address;
|
||||
- weight from the order lines, and Box Now's locker from the checkout;
|
||||
- insurance defaulting to the order total;
|
||||
- cash on delivery shown read-only, from the payment method.
|
||||
|
||||
Staff can correct the recipient before it's sent. The correction goes
|
||||
to the carrier and is saved on the voucher (`ShipmentRequest::$recipient`),
|
||||
while the order keeps what the customer entered. Envelope and dimensions
|
||||
are now available for orders' ELTA vouchers too. Manual carriers and ACS
|
||||
keep their forms.
|
||||
- Vouchers save their recipient when they're created (`meta.recipient`,
|
||||
the new `VoucherRecipient` DTO), orders' vouchers included.
|
||||
`Shipment::recipient()` and `Shipment::reference()` return them. ELTA
|
||||
labels are rendered from these alone, not from the order. Vouchers
|
||||
created before this fall back to their order's shipping address.
|
||||
- ELTA vouchers can be envelopes and can carry dimensions: the parcel
|
||||
flag becomes `1`, and `pel_x`/`pel_y`/`pel_z` plus the volumetric
|
||||
weight are sent and printed. So far only through "Create voucher".
|
||||
- ELTA return vouchers ("RETOUR"). With special handling, the voucher is
|
||||
sent with us as the return-to party, as ELTA's client does. ELTA then
|
||||
issues a return voucher with it. Printing prints it after the voucher
|
||||
and its parcels: parties swapped, service 461/462, charged to the
|
||||
recipient. Its number shows on the order page and on the Carrier
|
||||
Vouchers view.
|
||||
- ELTA PostBox delivery, as a new "PostBox delivery" extra service. The
|
||||
postcode goes through ELTA's PostBox lookup (`PELTKBOX`), and the
|
||||
voucher carries surcharge `917`. The label prints ELTA's
|
||||
"* ΠΡΟΣΟΧΗ PostBox *" warnings. ELTA's rules are checked when the
|
||||
shipment is created:
|
||||
- no special handling;
|
||||
- no cash on delivery;
|
||||
- a 69… mobile;
|
||||
- a postcode that has a PostBox.
|
||||
- ELTA tracking now stores who received the parcel and when, and the COD
|
||||
amount ELTA paid back to us. These show on the order page and in a new
|
||||
Delivery section on the Carrier Vouchers view.
|
||||
|
||||
### Changed
|
||||
- ELTA's default endpoint is now `https://clients.elta-courier.gr`. The old
|
||||
`http://212.205.47.226:9003` only speaks plain HTTP. Apps that set
|
||||
`ELTA_SERVICE_LOCATION` should update it. Calls are retried twice on a
|
||||
connection error or a 5xx.
|
||||
- ELTA vouchers are sent with the service and locality that ELTA's
|
||||
`PELTKNEW` gives for the postcode (sender station included): 101/201 for
|
||||
the city, 211 for islands, 231 for hard-to-reach localities. When
|
||||
several localities share a postcode, the one matching the address's city
|
||||
is used. When none matches, ELTA picks the service and the order page
|
||||
says so. Before this the service was blank and the area was the city
|
||||
text.
|
||||
- ELTA extra services go in ELTA's fixed slots: special handling / PostBox
|
||||
in `pel_sur_1`, timed delivery in `pel_sur_2`, Saturday delivery in
|
||||
`pel_sur_3`.
|
||||
- ELTA remarks carry the parcel flag, as ELTA's own client sends them:
|
||||
the remarks are right-aligned in 99 characters, followed by `2`.
|
||||
- ELTA labels print ELTA's current company details (Λεωφ. Ιωνίας 200,
|
||||
Γ.Ε.ΜΗ) on the A4 copies, the payment stub, the A4 child label and the
|
||||
A6. The payment stub's ΠΟΡΤΑ-ΠΟΡΤΑ block is gone.
|
||||
|
||||
### Fixed
|
||||
- Creating an ELTA shipment now fails with a clear message:
|
||||
- with no recipient phone;
|
||||
- with more than 20 pieces;
|
||||
- with a postcode ELTA doesn't serve.
|
||||
|
||||
Before, ELTA accepted the pending voucher and it failed later.
|
||||
- Phone numbers sent to ELTA drop the `30` / `0030` prefix. Mobiles
|
||||
(`69…`) go in the mobile field.
|
||||
- "Απόδειξη Είσπραξης" is now spelled correctly on the ELTA sender's
|
||||
copy.
|
||||
- ELTA labels left the deposit station (Γρ.Κατάθεσης) blank when
|
||||
`ELTA_ORIGIN_STATION_CODE` isn't set. They now use the station ELTA's
|
||||
login reports, as issuing already did.
|
||||
- The ELTA A4 voucher no longer has overlapping parts:
|
||||
- **Payment stub:** laid out again on a clean grid, with the same
|
||||
fields. It now carries ELTA's "Hellenic Post" logo and "Αποστολή μας
|
||||
εσείς!" (`resources/logos/elta-logo.png`), as ELTA's own stub does.
|
||||
The remarks fit on one line.
|
||||
- **Header box:** the title no longer runs into the barcode, the
|
||||
barcode fits inside the box, and the voucher number sits within its
|
||||
border.
|
||||
- **Copy 1:** the tear-strip line runs beside the boxes, not through
|
||||
them.
|
||||
- **Copy 2:** it starts clear of the cut line, and the print date stays
|
||||
inside its box.
|
||||
- **REFERENCE / ΠΑΡΑΤΗΡΗΣΕΙΣ:** the boxes have no more gaps in their
|
||||
borders.
|
||||
- On the A6, "ΧΡΕΩΣΗ … ΠΙΣΤΩΣΗ" no longer wraps out of its cell.
|
||||
- A Box Now shipment with several boxes got only one voucher. Box Now
|
||||
merges the items of one delivery request into a single parcel at the
|
||||
largest size (verified on staging, with our payload and with the
|
||||
official plugin's), although its manual says each item becomes a
|
||||
parcel. Each box is now its own delivery request, so each gets its own
|
||||
voucher, label and compartment:
|
||||
- order numbers `…-b1`, `…-b2`;
|
||||
- "Box 1 of 2" on the order page;
|
||||
- the order's value and any cash on delivery on box 1;
|
||||
- if a later box fails, the boxes already created are cancelled.
|
||||
- Creating a Box Now shipment without the recipient's mobile or email now
|
||||
fails with a clear message, instead of sending Box Now an empty
|
||||
contact. The locker pickup code goes to both.
|
||||
|
||||
## [0.30.0] - 2026-09-30
|
||||
### Added
|
||||
- Manual vouchers (an integrated carrier's voucher typed in by hand) can be
|
||||
|
||||
Reference in New Issue
Block a user