11# Copyright 2020 Quartile (https://www.quartile.co)
22# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
33
4+ from datetime import date , datetime
5+
6+ from odoo .exceptions import ValidationError
47from odoo .tests import TransactionCase , tagged
58
69
@@ -12,11 +15,15 @@ def setUpClass(cls):
1215 cls .partner = cls .env ["res.partner" ].create (
1316 {
1417 "name" : "Test Partner" ,
18+ "zip" : "123-4567" ,
1519 "state_id" : cls .env .ref ("base.state_jp_jp-02" ).id ,
1620 "city" : "City" ,
1721 "street" : "Street" ,
1822 "street2" : "Street2" ,
23+ # 16 characters to test truncation to 12
24+ "phone" : "03-1234-5678-999" ,
1925 "delivery_time" : "test" ,
26+ "ref" : "CUST001" ,
2027 }
2128 )
2229 cls .env .ref ("delivery.free_delivery_carrier" ).write ({"shipping_mode" : "10" })
@@ -51,17 +58,20 @@ def setUpClass(cls):
5158 cls .sale_order .action_confirm ()
5259 cls .pickings = cls .sale_order .picking_ids
5360
54- def test_01_get_shipping_address (self ):
55- self .assertEqual (
56- self .partner ._get_shipping_address (), "AomoriCityStreetStreet2"
57- )
61+ def test_partner_get_shipment_report_vals (self ):
62+ vals = self .partner ._get_shipment_report_vals ()
63+ self .assertEqual (vals ["partner_ref" ], "CUST001" )
64+ self .assertEqual (vals ["partner_zip" ], "123-4567" )
65+ self .assertEqual (vals ["partner_address" ], "AomoriCityStreetStreet2" )
66+ # Truncated to 12 characters
67+ self .assertEqual (vals ["partner_phone" ], "03-1234-5678" )
68+ self .assertEqual (vals ["customer_delivery_note" ], "test" )
5869
59- def test_02_generate_stock_outgoing_shipment_report (self ):
70+ def test_generate_stock_outgoing_shipment_report (self ):
6071 self .pickings .generate_stock_outgoing_shipment_report ()
6172 report_lines = self .env ["stock.outgoing.shipment.report" ].search ([])
6273 self .assertEqual (len (report_lines ), 2 )
6374 test_line = report_lines [0 ]
64-
6575 self .assertEqual (test_line .shipping_mode , "10" )
6676 self .assertEqual (
6777 test_line .carrier_name ,
@@ -71,3 +81,27 @@ def test_02_generate_stock_outgoing_shipment_report(self):
7181 self .assertEqual (test_line .product_name , self .product .name )
7282 self .assertEqual (test_line .client_order_ref , "ref0001" )
7383 self .assertEqual (test_line .memo , "Test Note" )
84+
85+ def test_lot_num_constraint (self ):
86+ report = self .env ["stock.outgoing.shipment.report" ].create ({})
87+ report .lot_num = "ABC123" # ASCII - should pass
88+ with self .assertRaises (ValidationError ):
89+ report .lot_num = "あ123" # Non-ASCII - should fail
90+
91+ def test_compute_date_fields (self ):
92+ move = self .pickings .move_ids [0 ]
93+ move .write (
94+ {
95+ "date" : datetime (2025 , 1 , 15 , 10 , 0 , 0 ),
96+ "date_deadline" : datetime (2025 , 1 , 20 , 10 , 0 , 0 ),
97+ }
98+ )
99+ report = self .env ["stock.outgoing.shipment.report" ].create (
100+ {
101+ "move_id" : move .id ,
102+ "expiry_date_edit" : date (2025 , 2 , 28 ),
103+ }
104+ )
105+ self .assertEqual (report .dispatch_date , "2025/01/15" )
106+ self .assertEqual (report .delivery_date , "2025/01/20" )
107+ self .assertEqual (report .expiry_date , "2025/02/28" )
0 commit comments