KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > knowgate > hipergate > DespatchAdvice


1 /*
2   Copyright (C) 2003-2005 Know Gate S.L. All rights reserved.
3                            C/Oņa, 107 1š2 28050 Madrid (Spain)
4
5   Redistribution and use in source and binary forms, with or without
6   modification, are permitted provided that the following conditions
7   are met:
8
9   1. Redistributions of source code must retain the above copyright
10      notice, this list of conditions and the following disclaimer.
11
12   2. The end-user documentation included with the redistribution,
13      if any, must include the following acknowledgment:
14      "This product includes software parts from hipergate
15      (http://www.hipergate.org/)."
16      Alternately, this acknowledgment may appear in the software itself,
17      if and wherever such third-party acknowledgments normally appear.
18
19   3. The name hipergate must not be used to endorse or promote products
20      derived from this software without prior written permission.
21      Products derived from this software may not be called hipergate,
22      nor may hipergate appear in their name, without prior written
23      permission.
24
25   This library is distributed in the hope that it will be useful,
26   but WITHOUT ANY WARRANTY; without even the implied warranty of
27   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
28
29   You should have received a copy of hipergate License with this code;
30   if not, visit http://www.hipergate.org or mail to info@hipergate.org
31 */

32
33 package com.knowgate.hipergate;
34
35 import java.sql.SQLException JavaDoc;
36 import java.sql.Types JavaDoc;
37 import java.sql.PreparedStatement JavaDoc;
38 import java.sql.ResultSet JavaDoc;
39
40 import com.knowgate.dataobjs.DB;
41 import com.knowgate.jdc.JDCConnection;
42 import com.knowgate.dataobjs.DBSubset;
43 import com.knowgate.debug.DebugFile;
44 import com.knowgate.misc.Gadgets;
45 import com.knowgate.dataobjs.DBBind;
46 import java.sql.Statement JavaDoc;
47
48 /**
49  * Despatch Advice
50  * @author Sergio Montoro Ten
51  * @version 3.0
52  */

53 public class DespatchAdvice extends AbstractOrder {
54
55   private DBSubset oOrders;
56   private Address oShipAddr;
57   private Address oBillAddr;
58
59   // ---------------------------------------------------------------------------
60

61   public DespatchAdvice() {
62     super(DB.k_despatch_advices,DB.k_despatch_lines,DB.gu_despatch,"DespatchAdvice");
63     oBillAddr=oShipAddr=null;
64   }
65
66   // ---------------------------------------------------------------------------
67

68   public DespatchAdvice(String JavaDoc sDespacthAdviceId) {
69     super(DB.k_despatch_advices,DB.k_despatch_lines,DB.gu_despatch,"DespatchAdvice");
70     put(DB.gu_despatch, sDespacthAdviceId);
71     oBillAddr=oShipAddr=null;
72   }
73
74   // ---------------------------------------------------------------------------
75

76   /**
77    * Get a DBSubset with all lines of this Dispatch Note
78    * @param oConn JDCConnection
79    * @return DBSubset with columns gu_dispacth,pg_line,pr_sale,nu_quantity,id_unit,pr_total,pct_tax_rate,is_tax_included,nm_product,gu_product,gu_item,tx_promotion,tx_options
80    * @throws SQLException
81    */

82    public DBSubset getLines(JDCConnection oConn) throws SQLException JavaDoc {
83
84      oLines = new DBSubset(DB.k_despatch_lines,
85                            DB.gu_despatch+","+DB.pg_line+","+DB.pr_sale+","+
86                            DB.nu_quantity+","+DB.id_unit+","+DB.pr_total+","+
87                            DB.pct_tax_rate+","+DB.is_tax_included+","+
88                            DB.nm_product+","+ DB.gu_product+","+
89                            DB.gu_item+","+DB.tx_promotion+","+DB.tx_options,
90                            DB.gu_despatch + "=? ORDER BY 2", 10);
91
92      oLines.load(oConn, new Object JavaDoc[]{getString(DB.gu_despatch)});
93
94      return oLines;
95   } // getLines()
96

97   // ---------------------------------------------------------------------------
98

99   /**
100    * <p>Get Orders for this Invoice</p>
101    * Orders can only be get if Invoice has been previously loaded,
102    * else this method will return <b>null</b>
103    * @return String[]
104    */

105   public String JavaDoc[] getOrders() {
106     if (oOrders==null)
107       return null;
108     else {
109       String JavaDoc [] aRetVal = new String JavaDoc[oOrders.getRowCount()];
110       for (int o=0; o<oOrders.getRowCount(); o++)
111         aRetVal[o] = oOrders.getString(0,o);
112       return aRetVal;
113     }
114   }
115   // ---------------------------------------------------------------------------
116

117   /**
118    * Load Despatch Advice with its associated Addresses
119    * @param oConn JDCConnection
120    * @param PKVals Array with a single element Object[1]{(String)gu_despacth}
121    * @return boolean <b>true</b> is Despacth Advice was found, <b>false</b> otherwise
122    * @throws SQLException
123    */

124   public boolean load(JDCConnection oConn, Object JavaDoc[] PKVals) throws SQLException JavaDoc {
125     boolean bRetVal = super.load(oConn, PKVals);
126     if (bRetVal) {
127       oOrders = new DBSubset (DB.k_x_orders_despatch, DB.gu_order, DB.gu_despatch+"=?", 1);
128       oOrders.load(oConn, PKVals);
129       if (!isNull(DB.gu_ship_addr))
130         oShipAddr = new Address(oConn, getString(DB.gu_ship_addr));
131       if (!isNull(DB.gu_bill_addr))
132         oShipAddr = new Address(oConn, getString(DB.gu_bill_addr));
133       else
134         oShipAddr = null;
135       if (!isNull(DB.gu_bill_addr))
136         oBillAddr = new Address(oConn, getString(DB.gu_bill_addr));
137       if (!isNull(DB.gu_ship_addr))
138         oShipAddr = new Address(oConn, getString(DB.gu_ship_addr));
139       else
140         oBillAddr = null;
141     }
142     return bRetVal;
143   } // load
144

145   // ---------------------------------------------------------------------------
146

147   /**
148    * <p>Store despatch note</p>
149    * If no value for gu_despatch is specified then a new one is automatically assigned.<br>
150    * If no value for pg_despatch is specified then a new one is automatically assigned by looking at k_despatch_next table and updating it afterwards.<br>
151    * This method updates dt_modified to current datetime as a side effect iif Dispatch Note did not previously exist at the database.<br>
152    * @param oConn JDCConnection
153    * @return boolean
154    * @throws SQLException
155    */

156   public boolean store(JDCConnection oConn) throws SQLException JavaDoc {
157     java.sql.Timestamp JavaDoc dtNow = new java.sql.Timestamp JavaDoc(DBBind.getTime());
158
159     if (DebugFile.trace) {
160       DebugFile.writeln("Begin DespatchAdvice.store([JDCConnection])");
161       DebugFile.incIdent();
162     }
163
164     if (!AllVals.containsKey(DB.gu_despatch))
165       AllVals.put(DB.gu_despatch,Gadgets.generateUUID());
166     else
167       replace(DB.dt_modified, dtNow);
168
169     if (!AllVals.containsKey(DB.pg_despatch) && AllVals.containsKey(DB.gu_workarea)) {
170       AllVals.put(DB.pg_despatch, new Integer JavaDoc(nextVal(oConn, (String JavaDoc) AllVals.get(DB.gu_workarea))));
171     } // fi (gu_workarea AND NOT pg_despatch)
172

173     boolean bRetVal = super.store(oConn);
174
175     if (DebugFile.trace) {
176       DebugFile.decIdent();
177       DebugFile.writeln("End DespatchAdvice.store() : " + String.valueOf(bRetVal));
178     }
179     return bRetVal;
180   } // store
181

182   //----------------------------------------------------------------------------
183

184   /**
185    * <p>Delete Dispatch Note</p>
186    * @param oConn Database Connection
187    * @throws SQLException
188    */

189   public boolean delete (JDCConnection oConn) throws SQLException JavaDoc {
190     boolean bRetVal;
191     Statement JavaDoc oStmt;
192
193     if (DebugFile.trace) {
194       DebugFile.writeln("Begin DespatchAdvice.delete([Connection])");
195       DebugFile.incIdent();
196     }
197
198     oStmt = oConn.createStatement();
199     oStmt.executeUpdate("DELETE FROM " + DB.k_despatch_lines + " WHERE " + DB.gu_despatch + "='" + getString(DB.gu_despatch) + "'");
200     oStmt.executeUpdate("DELETE FROM " + DB.k_x_orders_despatch + " WHERE " + DB.gu_despatch + "='" + getString(DB.gu_despatch) + "'");
201     oStmt.close();
202
203     bRetVal = super.delete(oConn);
204
205     if (DebugFile.trace) {
206       DebugFile.decIdent();
207       DebugFile.writeln("End DespatchAdvice.delete() : " + String.valueOf(bRetVal));
208     }
209
210     return bRetVal;
211   } // delete
212

213   // ---------------------------------------------------------------------------
214

215   /**
216    * <p>Get despatch advice as an XML document</p>
217    * Character encoding is set to UTF-8
218    * @return An XML String formatted according to OASIS Universal Universal Business Language Specification
219    * @throws IllegalStateException if despatch advice lines are not loaded or buyer is not set or seller is not set
220    * @see <a HREF="http://docs.oasis-open.org/ubl/cd-UBL-1.0/">OASIS Universal Business Language 1.0</a>
221    */

222
223   public String JavaDoc toXML() throws IllegalStateException JavaDoc {
224     JDCConnection oConn = null;
225     return toXML (oConn, null);
226   }
227
228   // ---------------------------------------------------------------------------
229

230   /**
231    * <p>Get despatch advice as an XML document</p>
232    * Character encoding is set to UTF-8
233    * @return An XML String formatted according to OASIS Universal Universal Business Language Specification
234    * @throws IllegalStateException if despatch advice lines are not loaded or buyer is not set or seller is not set
235    * @see <a HREF="http://docs.oasis-open.org/ubl/cd-UBL-1.0/">OASIS Universal Business Language 1.0</a>
236    */

237
238   public String JavaDoc toXML(String JavaDoc sIdent, String JavaDoc sDelim) throws IllegalStateException JavaDoc {
239     JDCConnection oConn = null;
240     return toXML (oConn, null);
241   }
242
243   // ---------------------------------------------------------------------------
244

245   /**
246    * <p>Get despatch advice as an XML document</p>
247    * Character encoding is set to UTF-8
248    * @return An XML String formatted according to OASIS Universal Universal Business Language Specification
249    * @throws IllegalStateException if despatch advice lines are not loaded or buyer is not set or seller is not set
250    * @see <a HREF="http://docs.oasis-open.org/ubl/cd-UBL-1.0/">OASIS Universal Business Language 1.0</a>
251    */

252
253   public String JavaDoc toXML(String JavaDoc sIdent) throws IllegalStateException JavaDoc {
254     JDCConnection oConn = null;
255     return toXML (oConn, null);
256   }
257
258   // ---------------------------------------------------------------------------
259

260   /**
261    * <p>Get despatch advice as an XML document</p>
262    * Character encoding is set to UTF-8
263    * @param oConn JDCConnection Openend JDBC database connection
264    * @param sLocale String Locale for output formatting
265    * @return An XML String formatted according to OASIS Universal Universal Business Language Specification<br>
266    * <b>Sample output</b>
267    * &lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br>
268    * &lt;DespatchAdvice&nbsp;xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-1.0"&nbsp;xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-1.0"&nbsp;xmlns:cur="urn:oasis:names:specification:ubl:schema:xsd:CurrencyCode-1.0"&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;<br>
269    * &nbsp;&nbsp;&lt;ID&gt;2&lt;/ID&gt;<br>
270    * &nbsp;&nbsp;&lt;GUID&gt;7f000001106a7669d5a100001e7bc8ca&lt;/GUID&gt;<br>
271    * &nbsp;&nbsp;&lt;cbc:IssueDate/&gt;<br>
272    * &nbsp;&nbsp;&lt;DocumentStatusCode&gt;SHIPPED&lt;/DocumentStatusCode&gt;<br>
273    * &nbsp;&nbsp;&lt;cbc:Note&gt;&lt;![CDATA[Deliver&nbsp;before&nbsp;6&nbsp;P.M.]]&gt;&lt;/cbc:Note&gt;<br>
274    * &nbsp;&nbsp;&lt;LineItemCountNumeric&gt;2&lt;/LineItemCountNumeric&gt;<br>
275    * &nbsp;&nbsp;&lt;cac:OrderReference&gt;<br>
276    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:BuyersID&gt;&lt;![CDATA[51409272]]&gt;&lt;/cac:BuyersID&gt;<br>
277    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:SellerID&gt;&lt;![CDATA[B82568718]]&gt;&lt;/cac:SellerID&gt;<br>
278    * &nbsp;&nbsp;&lt;/cac:OrderReference&gt;<br>
279    * &nbsp;&nbsp;&lt;cac:BuyerParty&gt;<br>
280    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:Party&gt;<br>
281    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:PartyName&gt;&lt;cbc:Name&gt;&lt;![CDATA[Paul&nbsp;Klein]]&gt;&lt;/cbc:Name&gt;&lt;/cac:PartyName&gt;<br>
282    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:Address&gt;<br>
283    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ID&gt;7f000001106709e1bda10000ec419d26&lt;/ID&gt;<br>
284    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:PostBox&gt;&lt;/cbc:PostBox&gt;<br>
285    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:StreetName&gt;&lt;![CDATA[Bulbury]]&gt;&lt;/cbc:StreetName&gt;<br>
286    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:AdditionalStreetName&gt;&lt;![CDATA[ST]]&gt;&lt;/cbc:AdditionalStreetName&gt;<br>
287    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:BuildingName&gt;&lt;![CDATA[]]&gt;&lt;/cbc:BuildingName&gt;<br>
288    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:BuildingNumber&gt;&lt;![CDATA[80]]&gt;&lt;/cbc:BuildingNumber&gt;<br>
289    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CityName&gt;&lt;![CDATA[]]&gt;&lt;/cbc:CityName&gt;<br>
290    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:PostalZone&gt;&lt;/cbc:PostalZone&gt;<br>
291    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CountrySubentity&gt;&lt;![CDATA[]]&gt;&lt;/cbc:CountrySubentity&gt;<br>
292    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CountrySubentityCode&gt;&lt;/cbc:CountrySubentityCode&gt;<br>
293    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:AddressLine&gt;&lt;![CDATA[]]&gt;&lt;/cbc:AddressLine&gt;<br>
294    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Country&gt;&lt;![CDATA[]]&gt;&lt;/Country&gt;<br>
295    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:Address&gt;<br>
296    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:Party&gt;<br>
297    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:AccountsContact&gt;<br>
298    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:Name&gt;&lt;![CDATA[]]&gt;&lt;/cbc:Name&gt;<br>
299    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:Telephone&gt;&lt;![CDATA[]]&gt;&lt;/cbc:Telephone&gt;<br>
300    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:AccountsContact&gt;<br>
301    * &nbsp;&nbsp;&lt;/cac:BuyerParty&gt;<br>
302    * &nbsp;&nbsp;&lt;cac:SellerParty&gt;<br>
303    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:Party&gt;<br>
304    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:PartyName&gt;&lt;cbc:Name&gt;&lt;![CDATA[Know&nbsp;Gate&nbsp;Ltd.]]&gt;&lt;/cbc:Name&gt;&lt;/cac:PartyName&gt;<br>
305    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:Address&gt;<br>
306    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ID&gt;7f0000011067057c4ef100008c688128&lt;/ID&gt;<br>
307    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:StreetName&gt;&lt;![CDATA[Wesleyan]]&gt;&lt;/cbc:StreetName&gt;<br>
308    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:AdditionalStreetName&gt;&lt;![CDATA[ST]]&gt;&lt;/cbc:AdditionalStreetName&gt;<br>
309    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:BuildingName&gt;&lt;![CDATA[]]&gt;&lt;/cbc:BuildingName&gt;<br>
310    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:BuildingNumber&gt;&lt;![CDATA[107]]&gt;&lt;/cbc:BuildingNumber&gt;<br>
311    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CityName&gt;&lt;![CDATA[Boston]]&gt;&lt;/cbc:CityName&gt;<br>
312    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:PostalZone&gt;&lt;/cbc:PostalZone&gt;<br>
313    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CountrySubentity&gt;&lt;![CDATA[MA]]&gt;&lt;/cbc:CountrySubentity&gt;<br>
314    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CountrySubentityCode&gt;&lt;/cbc:CountrySubentityCode&gt;<br>
315    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:AddressLine&gt;&lt;![CDATA[]]&gt;&lt;/cbc:AddressLine&gt;<br>
316    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Country&gt;&lt;![CDATA[United&nbsp;States]]&gt;&lt;/Country&gt;<br>
317    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:Address&gt;<br>
318    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:Party&gt;<br>
319    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:AccountsContact&gt;<br>
320    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:Name&gt;&lt;![CDATA[Charles&nbsp;Robertson]]&gt;&lt;/cbc:Name&gt;<br>
321    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:Telephone&gt;&lt;![CDATA[1-800callcharles]]&gt;&lt;/cbc:Telephone&gt;<br>
322    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:AccountsContact&gt;<br>
323    * &nbsp;&nbsp;&lt;/cac:SellerParty&gt;<br>
324    * &nbsp;&nbsp;&lt;cac:Delivey&gt;<br>
325    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:DeliveyAddress&gt;<br>
326    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ID&gt;7f00000110670211e12100002a4874df&lt;/ID&gt;<br>
327    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:StreetName&gt;&lt;![CDATA[Yokohama]]&gt;&lt;/cbc:StreetName&gt;<br>
328    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:AdditionalStreetName&gt;&lt;![CDATA[ST]]&gt;&lt;/cbc:AdditionalStreetName&gt;<br>
329    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:BuildingName&gt;&lt;![CDATA[]]&gt;&lt;/cbc:BuildingName&gt;<br>
330    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:BuildingNumber&gt;&lt;![CDATA[1310]]&gt;&lt;/cbc:BuildingNumber&gt;<br>
331    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CityName&gt;&lt;![CDATA[]]&gt;&lt;/cbc:CityName&gt;<br>
332    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:PostalZone&gt;&lt;/cbc:PostalZone&gt;<br>
333    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CountrySubentity&gt;&lt;![CDATA[]]&gt;&lt;/cbc:CountrySubentity&gt;<br>
334    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:CountrySubentityCode&gt;&lt;/cbc:CountrySubentityCode&gt;<br>
335    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:AddressLine&gt;&lt;![CDATA[]]&gt;&lt;/cbc:AddressLine&gt;<br>
336    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Country&gt;&lt;![CDATA[us]]&gt;&lt;/Country&gt;<br>
337    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:DeliveyAddress&gt;<br>
338    * &nbsp;&nbsp;&lt;/cac:Delivey&gt;<br>
339    * &nbsp;&nbsp;&lt;cac:DespatchLine&gt;<br>
340    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;ID&gt;1&lt;/ID&gt;<br>
341    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:DeliveredQuantity&gt;1&lt;/cbc:DeliveredQuantity&gt;<br>
342    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:Item&gt;<br>
343    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:Description&gt;&lt;![CDATA[Tux&nbsp;Earrings]]&gt;&lt;/cbc:Description&gt;<br>
344    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:Item&gt;<br>
345    * &nbsp;&nbsp;&lt;/cac:DespatchLine&gt;<br>
346    * &nbsp;&nbsp;&lt;cac:DespatchLine&gt;<br>
347    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;ID&gt;2&lt;/ID&gt;<br>
348    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:DeliveredQuantity&gt;1&lt;/cbc:DeliveredQuantity&gt;<br>
349    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;cac:Item&gt;<br>
350    * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cbc:Description&gt;&lt;![CDATA[Tux&nbsp;Pendant]]&gt;&lt;/cbc:Description&gt;<br>
351    * &nbsp;&nbsp;&nbsp;&nbsp;&lt;/cac:Item&gt;<br>
352    * &nbsp;&nbsp;&lt;/cac:DespatchLine&gt;<br>
353    * &lt;/DespatchAdvice&gt;
354    * @throws IllegalStateException if invoice lines are not loaded or buyer is not set or seller is not set
355    * @see <a HREF="http://docs.oasis-open.org/ubl/cd-UBL-1.0/">OASIS Universal Business Language 1.0</a>
356    */

357   public String JavaDoc toXML(JDCConnection oConn, String JavaDoc sLocale) throws IllegalStateException JavaDoc {
358
359     if (oLines==null) throw new IllegalStateException JavaDoc("DespacthAdvice.toXML() Invoice lines not loaded");
360     if (oBuyer==null) throw new IllegalStateException JavaDoc("DespacthAdvice.toXML() Buyer party not set");
361     if (oSeller==null) throw new IllegalStateException JavaDoc("DespacthAdvice.toXML() Seller party not set");
362
363     if (DebugFile.trace) {
364       DebugFile.writeln("Begin DespatchAdvice.toXML()");
365       DebugFile.incIdent();
366     }
367
368     final int iLineCount = oLines.getRowCount();
369     StringBuffer JavaDoc oBfr = new StringBuffer JavaDoc();
370
371     oBfr.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
372     oBfr.append("<DespatchAdvice xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-1.0\" xmlns:cac=\"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-1.0\" xmlns:cur=\"urn:oasis:names:specification:ubl:schema:xsd:CurrencyCode-1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n");
373     // xmlns=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-1.0\" xsi:schemaLocation=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-1.0 http://docs.oasis-open.org/ubl/cd-UBL-1.0/xsd/maindoc/UBL-Invoice-1.0.xsd\"
374
oBfr.append(" <ID>"+String.valueOf(getInt(DB.pg_despatch))+"</ID>\n");
375     oBfr.append(" <GUID>"+getString(DB.gu_despatch)+"</GUID>\n");
376     if (isNull(DB.dt_delivered))
377       oBfr.append(" <cbc:IssueDate/>\n");
378     else
379       oBfr.append(" <cbc:IssueDate>"+getDateShort(DB.dt_delivered)+"</cbc:IssueDate>\n");
380     oBfr.append(" <DocumentStatusCode>"+getStringNull(DB.id_status,"")+"</DocumentStatusCode>\n");
381     oBfr.append(" <cbc:Note><![CDATA["+getStringNull(DB.tx_ship_notes,"")+"]]></cbc:Note>\n");
382     oBfr.append(" <LineItemCountNumeric>"+String.valueOf(iLineCount)+"</LineItemCountNumeric>\n");
383
384     oBfr.append(" <cac:OrderReference>\n");
385     oBfr.append(" <cac:BuyersID><![CDATA["+getStringNull(DB.id_legal,oBuyer.getStringNull(DB.id_legal,oBuyer.getStringNull(DB.sn_passport,"")))+"]]></cac:BuyersID>\n");
386     oBfr.append(" <cac:SellerID><![CDATA["+oSeller.getStringNull(DB.id_legal,oSeller.getStringNull(DB.sn_passport,""))+"]]></cac:SellerID>\n");
387     String JavaDoc[] aOrders = getOrders();
388     Order oOrdr;
389     if (aOrders!=null) {
390       try {
391         oOrdr = new Order(oConn, aOrders[0]);
392         if (oOrdr.isNull(DB.dt_invoiced))
393           oBfr.append(" <cbc:IssueDate/>\n");
394         else
395           oBfr.append(" <cbc:IssueDate>"+oOrdr.getDateShort(DB.dt_invoiced)+"</cbc:IssueDate>\n");
396         oBfr.append(" <GUID>"+oOrdr.getString(DB.gu_order)+"</GUID>\n");
397       } catch (Exception JavaDoc ignore) {}
398     } // fi
399
oBfr.append(" </cac:OrderReference>\n");
400     if (DebugFile.trace) DebugFile.writeln("Writting BuyerParty...");
401     oBfr.append(" <cac:BuyerParty>\n");
402     oBfr.append(" <cac:Party>\n");
403     if (oBuyer.isNull(DB.gu_contact))
404       oBfr.append(" <cac:PartyName><cbc:Name><![CDATA["+oBuyer.getString(DB.nm_legal)+"]]></cbc:Name></cac:PartyName>\n");
405     else
406       oBfr.append(" <cac:PartyName><cbc:Name><![CDATA["+oBuyer.getStringNull(DB.tx_name,"")+" "+oBuyer.getStringNull(DB.tx_surname,"")+"]]></cbc:Name></cac:PartyName>\n");
407     oBfr.append(" <cac:Address>\n");
408     if (oBillAddr==null) {
409       oBfr.append(" <ID/>\n");
410       oBfr.append(" <cbc:PostBox/>\n");
411       oBfr.append(" <cbc:StreetName/>\n");
412       oBfr.append(" <cbc:AdditionalStreetName/>\n");
413       oBfr.append(" <cbc:BuildingName/>\n");
414       oBfr.append(" <cbc:BuildingNumber/>\n");
415       oBfr.append(" <cbc:CityName/>\n");
416       oBfr.append(" <cbc:PostalZone/>\n");
417       oBfr.append(" <cbc:CountrySubentity/>\n");
418       oBfr.append(" <cbc:CountrySubentityCode/>\n");
419       oBfr.append(" <cbc:AddressLine/>\n");
420       oBfr.append(" <Country/>\n");
421     } else {
422       oBfr.append(" <ID>"+oBillAddr.getString(DB.gu_address)+"</ID>\n");
423       oBfr.append(" <cbc:PostBox>"+oBillAddr.getStringNull(DB.po_box,"")+"</cbc:PostBox>\n");
424       oBfr.append(" <cbc:StreetName><![CDATA["+oBillAddr.getStringNull(DB.nm_street,"")+"]]></cbc:StreetName>\n");
425       oBfr.append(" <cbc:AdditionalStreetName><![CDATA["+oBillAddr.getStringNull(DB.tp_street,"")+"]]></cbc:AdditionalStreetName>\n");
426       oBfr.append(" <cbc:BuildingName><![CDATA["+oBillAddr.getStringNull(DB.tx_addr2,"")+"]]></cbc:BuildingName>\n");
427       oBfr.append(" <cbc:BuildingNumber><![CDATA["+oBillAddr.getStringNull(DB.nu_street,"")+"]]></cbc:BuildingNumber>\n");
428       oBfr.append(" <cbc:CityName><![CDATA["+oBillAddr.getStringNull(DB.mn_city,"")+"]]></cbc:CityName>\n");
429       oBfr.append(" <cbc:PostalZone>"+oBillAddr.getStringNull(DB.zipcode,"")+"</cbc:PostalZone>\n");
430       oBfr.append(" <cbc:CountrySubentity><![CDATA["+oBillAddr.getStringNull(DB.nm_state,"")+"]]></cbc:CountrySubentity>\n");
431       oBfr.append(" <cbc:CountrySubentityCode>"+oBillAddr.getStringNull(DB.id_state,"")+"</cbc:CountrySubentityCode>\n");
432       oBfr.append(" <cbc:AddressLine><![CDATA["+oBillAddr.getStringNull(DB.tx_addr1,"")+"]]></cbc:AddressLine>\n");
433       oBfr.append(" <Country><![CDATA["+oBillAddr.getStringNull(DB.nm_country,"").trim()+"]]></Country>\n");
434     }
435     oBfr.append(" </cac:Address>\n");
436     oBfr.append(" </cac:Party>\n");
437     oBfr.append(" <cac:AccountsContact>\n");
438     if (oBillAddr==null) {
439       oBfr.append(" <cbc:Name/>\n");
440       oBfr.append(" <cbc:Telephone/>\n");
441     } else {
442       oBfr.append(" <cbc:Name><![CDATA["+oBuyer.getStringNull(DB.contact_person,"")+"]]></cbc:Name>\n");
443       oBfr.append(" <cbc:Telephone><![CDATA["+oBuyer.getStringNull(DB.direct_phone,oBuyer.getStringNull(DB.work_phone,""))+"]]></cbc:Telephone>\n");
444     }
445     oBfr.append(" </cac:AccountsContact>\n");
446     oBfr.append(" </cac:BuyerParty>\n");
447     if (DebugFile.trace) DebugFile.writeln("Writting SellerParty...");
448     oBfr.append(" <cac:SellerParty>\n");
449     oBfr.append(" <cac:Party>\n");
450     oBfr.append(" <cac:PartyName><cbc:Name><![CDATA["+oSeller.getStringNull(DB.nm_company,oSeller.getStringNull(DB.nm_shop,""))+"]]></cbc:Name></cac:PartyName>\n");
451     oBfr.append(" <cac:Address>\n");
452     if (oBillAddr==null) {
453       oBfr.append(" <ID/>\n");
454       oBfr.append(" <cbc:PostBox/>\n");
455       oBfr.append(" <cbc:StreetName/>\n");
456       oBfr.append(" <cbc:AdditionalStreetName/>\n");
457       oBfr.append(" <cbc:BuildingName/>\n");
458       oBfr.append(" <cbc:BuildingNumber/>\n");
459       oBfr.append(" <cbc:CityName/>\n");
460       oBfr.append(" <cbc:PostalZone/>\n");
461       oBfr.append(" <cbc:CountrySubentity/>\n");
462       oBfr.append(" <cbc:CountrySubentityCode/>\n");
463       oBfr.append(" <cbc:AddressLine/>\n");
464       oBfr.append(" <Country/>\n");
465     } else {
466       oBfr.append(" <ID>"+oSeller.getStringNull(DB.gu_shop, oSeller.getStringNull(DB.gu_address, ""))+"</ID>\n");
467       oBfr.append(" <cbc:StreetName><![CDATA["+oSeller.getStringNull(DB.nm_street,"")+"]]></cbc:StreetName>\n");
468       oBfr.append(" <cbc:AdditionalStreetName><![CDATA["+oSeller.getStringNull(DB.tp_street,"")+"]]></cbc:AdditionalStreetName>\n");
469       oBfr.append(" <cbc:BuildingName><![CDATA["+oSeller.getStringNull(DB.tx_addr2,"")+"]]></cbc:BuildingName>\n");
470       oBfr.append(" <cbc:BuildingNumber><![CDATA["+oSeller.getStringNull(DB.nu_street,"")+"]]></cbc:BuildingNumber>\n");
471       oBfr.append(" <cbc:CityName><![CDATA["+oSeller.getStringNull(DB.mn_city,"")+"]]></cbc:CityName>\n");
472       oBfr.append(" <cbc:PostalZone>"+oSeller.getStringNull(DB.zipcode,"")+"</cbc:PostalZone>\n");
473       oBfr.append(" <cbc:CountrySubentity><![CDATA["+oSeller.getStringNull(DB.nm_state,"")+"]]></cbc:CountrySubentity>\n");
474       oBfr.append(" <cbc:CountrySubentityCode>"+oSeller.getStringNull(DB.id_state,"")+"</cbc:CountrySubentityCode>\n");
475       oBfr.append(" <cbc:AddressLine><![CDATA["+oSeller.getStringNull(DB.tx_addr1,"")+"]]></cbc:AddressLine>\n");
476       oBfr.append(" <Country><![CDATA["+oSeller.getStringNull(DB.nm_country,"").trim()+"]]></Country>\n");
477     }
478     oBfr.append(" </cac:Address>\n");
479     oBfr.append(" </cac:Party>\n");
480     oBfr.append(" <cac:AccountsContact>\n");
481     oBfr.append(" <cbc:Name><![CDATA["+oSeller.getStringNull(DB.contact_person,"")+"]]></cbc:Name>\n");
482     oBfr.append(" <cbc:Telephone><![CDATA["+oSeller.getStringNull(DB.direct_phone,oSeller.getStringNull(DB.work_phone,""))+"]]></cbc:Telephone>\n");
483     oBfr.append(" </cac:AccountsContact>\n");
484     oBfr.append(" </cac:SellerParty>\n");
485     if (DebugFile.trace) DebugFile.writeln("Writting Delivery...");
486     oBfr.append(" <cac:Delivey>\n");
487     if (!isNull(DB.dt_promised))
488       oBfr.append(" <cbc:RequestedDeliveyDateTime>"+getDateShort(DB.dt_promised)+"T"+getTime(DB.dt_promised)+"</cbc:RequestedDeliveyDateTime>\n");
489     if (oShipAddr!=null) {
490       oBfr.append(" <cac:DeliveryAddress>\n");
491       oBfr.append(" <ID>"+oShipAddr.getString(DB.gu_address)+"</ID>\n");
492       oBfr.append(" <cbc:StreetName><![CDATA["+oShipAddr.getStringNull(DB.nm_street,"")+"]]></cbc:StreetName>\n");
493       oBfr.append(" <cbc:AdditionalStreetName><![CDATA["+oShipAddr.getStringNull(DB.tp_street,"")+"]]></cbc:AdditionalStreetName>\n");
494       oBfr.append(" <cbc:BuildingName><![CDATA["+oShipAddr.getStringNull(DB.tx_addr2,"")+"]]></cbc:BuildingName>\n");
495       oBfr.append(" <cbc:BuildingNumber><![CDATA["+oShipAddr.getStringNull(DB.nu_street,"")+"]]></cbc:BuildingNumber>\n");
496       oBfr.append(" <cbc:CityName><![CDATA["+oShipAddr.getStringNull(DB.mn_city,"")+"]]></cbc:CityName>\n");
497       oBfr.append(" <cbc:PostalZone>"+oShipAddr.getStringNull(DB.zipcode,"")+"</cbc:PostalZone>\n");
498       oBfr.append(" <cbc:CountrySubentity><![CDATA["+oShipAddr.getStringNull(DB.nm_state,"")+"]]></cbc:CountrySubentity>\n");
499       oBfr.append(" <cbc:CountrySubentityCode>"+oShipAddr.getStringNull(DB.id_state,"")+"</cbc:CountrySubentityCode>\n");
500       oBfr.append(" <cbc:AddressLine><![CDATA["+oShipAddr.getStringNull(DB.tx_addr1,"")+"]]></cbc:AddressLine>\n");
501       oBfr.append(" <Country><![CDATA["+oShipAddr.getStringNull(DB.id_country,"").trim()+"]]></Country>\n");
502       oBfr.append(" </cac:DeliveryAddress>\n");
503     }
504     oBfr.append(" </cac:Delivey>\n");
505     for (int l=0; l<iLineCount; l++) {
506       if (DebugFile.trace) DebugFile.writeln("Writting DespatchLine "+String.valueOf(l+1)+"...");
507       oBfr.append(" <cac:DespatchLine>\n");
508       oBfr.append(" <ID>"+String.valueOf(l+1)+"</ID>\n");
509       float fQuantity = oLines.getFloat(DB.nu_quantity,l);
510       if (fQuantity == (long) fQuantity)
511         oBfr.append(" <cbc:DeliveredQuantity>"+String.valueOf((long)fQuantity)+"</cbc:DeliveredQuantity>\n");
512       else
513         oBfr.append(" <cbc:DeliveredQuantity>"+String.valueOf(fQuantity)+"</cbc:DeliveredQuantity>\n");
514       oBfr.append(" <cac:Item>\n");
515       oBfr.append(" <cbc:Description><![CDATA["+oLines.getString(DB.nm_product,l)+"]]></cbc:Description>\n");
516       oBfr.append(" </cac:Item>\n");
517       oBfr.append(" </cac:DespatchLine>\n");
518     }
519     oBfr.append(" </DespatchAdvice>\n");
520
521     if (DebugFile.trace) {
522       DebugFile.decIdent();
523       DebugFile.writeln("End DespatchAdvice.toXML()");
524     }
525
526     return oBfr.toString();
527   } // toXML()
528

529   //----------------------------------------------------------------------------
530

531   /**
532    * Get next value for field pg_despatch in a given WorkArea
533    * @param oConn JDCConnection JDBC Connection
534    * @param sGuWorkArea String WorkArea GUID
535    * @return int Next unused despatch note number
536    * @throws SQLException
537    */

538   public static int nextVal(JDCConnection oConn, String JavaDoc sGuWorkArea)
539     throws SQLException JavaDoc {
540     boolean bNext;
541     int iNextDispatch = 1;
542     String JavaDoc sSQL = "";
543     PreparedStatement JavaDoc oSnxt = null;
544     ResultSet JavaDoc oRnxt = null;
545
546     sSQL = "SELECT "+DB.pg_despatch+" FROM "+DB.k_despatch_next+ " WHERE "+DB.gu_workarea+"=? ";
547     if (oConn.getDataBaseProduct()==JDCConnection.DBMS_POSTGRESQL) {
548       sSQL += "FOR UPDATE OF "+DB.k_despatch_next;
549     } if (oConn.getDataBaseProduct()==JDCConnection.DBMS_ORACLE) {
550       sSQL += "FOR UPDATE OF "+DB.pg_despatch;
551     }
552
553     try {
554       if (DebugFile.trace) DebugFile.writeln("Connection.prepareStatement("+sSQL+",ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE)");
555       oSnxt = oConn.prepareStatement(sSQL,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
556       oSnxt.setObject(1, sGuWorkArea, Types.CHAR);
557       oRnxt = oSnxt.executeQuery();
558       bNext = oRnxt.next();
559       if (bNext) {
560         iNextDispatch = oRnxt.getInt(1);
561         oRnxt.updateInt(DB.pg_despatch, ++iNextDispatch);
562         oRnxt.updateRow();
563       }
564       oRnxt.close();
565       oRnxt=null;
566       oSnxt.close();
567       oSnxt=null;
568       if (!bNext) {
569         if (DebugFile.trace) DebugFile.writeln("Connection.prepareStatement("+sSQL+",ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE)");
570         sSQL = "INSERT INTO "+DB.k_despatch_next+" ("+DB.gu_workarea+","+DB.pg_despatch+") VALUES (?,?)";
571         oSnxt = oConn.prepareStatement(sSQL);
572         oSnxt.setObject(1, sGuWorkArea, Types.CHAR);
573         oSnxt.setInt(2, iNextDispatch);
574         oSnxt.executeUpdate();
575         oSnxt.close();
576       }
577     } catch (SQLException JavaDoc sqle) {
578       if (oRnxt!=null) oRnxt.close();
579       if (oSnxt!=null) oSnxt.close();
580       throw new SQLException JavaDoc (sqle.getMessage()+" "+sSQL,sqle.getSQLState(),sqle.getErrorCode());
581     }
582     return iNextDispatch;
583   } // nextVal
584

585   // **********************************************************
586
// Public Constants
587

588   public static final short ClassId = 42;
589
590 }
591
Popular Tags