Index: openacs-4/packages/invoices/catalog/invoices.de_DE.ISO-8859-1.xml
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/invoices/catalog/invoices.de_DE.ISO-8859-1.xml,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/invoices/catalog/invoices.de_DE.ISO-8859-1.xml	17 Sep 2005 11:23:11 -0000	1.3
+++ openacs-4/packages/invoices/catalog/invoices.de_DE.ISO-8859-1.xml	28 Sep 2005 17:19:11 -0000	1.4
@@ -10,20 +10,25 @@
   <msg key="Amount_total">Gesamtsumme</msg>
   <msg key="Apply_VAT">Mehrwertsteuer?</msg>
   <msg key="back_to_project">Zurueck zum projekt</msg>
+  <msg key="back_to_year">Zur�ck zu %year%</msg>
+  <msg key="back_to_years">Zur�ck zu den Jahren</msg>
   <msg key="Billable_Projects">Abzurechnende Projekte</msg>
   <msg key="Cancel">Abbrechen</msg>
   <msg key="cancel_and_return">Abbrechen und zur�ck</msg>
   <msg key="Cancelled">Abgebrochen?</msg>
+  <msg key="Client_Account_Man">Kundenbetreuer des Kunden</msg>
   <msg key="continue_with_accept">Fortfahren mit Angebot akzeptieren</msg>
   <msg key="continue_with_delete">Fortfahren mit l�schen</msg>
   <msg key="Cost">Kosten</msg>
   <msg key="Cost_cause">Kostengrund</msg>
   <msg key="Cost_item">Kosteneintrag</msg>
   <msg key="Cost_number">Kostennummer</msg>
   <msg key="Costs">Kosten</msg>
+  <msg key="count">Z�hlung</msg>
   <msg key="Currency">W�hrung</msg>
   <msg key="Currency_paid">bezahlte W�hrung</msg>
   <msg key="Customer">Kunde</msg>
+  <msg key="day">Tag</msg>
   <msg key="Delete">L�schen</msg>
   <msg key="Due_date">F�lligkeit</msg>
   <msg key="Edit">�ndern</msg>
@@ -57,6 +62,7 @@
   <msg key="iv_cost_variable_cost_p">Fixed cost?</msg>
   <msg key="iv_cost_View">View Cost</msg>
   <msg key="iv_display_price_list">Preisliste anzeigen</msg>
+  <msg key="iv_from_last_years">Rechnungen der letzten %last_years% years Jahre:</msg>
   <msg key="iv_invoice_1">Rechnung</msg>
   <msg key="iv_invoice_2">Rechnungen</msg>
   <msg key="iv_invoice_Add">Rechnung &quot;%organization_name%&quot;</msg>
@@ -123,6 +129,8 @@
   <msg key="iv_invoice_vat">Mehrwertsteuer</msg>
   <msg key="iv_invoice_vat_percent">Mehrwertsteuersatz</msg>
   <msg key="iv_invoice_View">Rechnung ansehen</msg>
+  <msg key="iv_of_month_year">Rechnungen von %long_month% %year%:</msg>
+  <msg key="iv_of_year">Rechnungen des Jahres %year%:</msg>
   <msg key="iv_offer_1">Projektaufstellung</msg>
   <msg key="iv_offer_2">Projektaufstellungen</msg>
   <msg key="iv_offer_accept">Angebot akzeptieren</msg>
@@ -132,44 +140,59 @@
   <msg key="iv_offer_Add2">Neue Projektaufstellung hinzuf�gen</msg>
   <msg key="iv_offer_amount_diff">Rabatt</msg>
   <msg key="iv_offer_amount_sum">Summe</msg>
+  <msg key="iv_offer_amount_sum_help">Automatisch errechnete Summe aus der Summation der angebotenen Positionen</msg>
   <msg key="iv_offer_amount_total">Gesamtsumme</msg>
+  <msg key="iv_offer_amount_total_help">Gesmatsumme der Rechnung. Diese kann von der Summe der einzelnen angebotenen Positionen abweichen.</msg>
   <msg key="iv_offer_comment">&lt;b&gt;Interner Kommentar&lt;/b&gt;</msg>
   <msg key="iv_offer_count_total">Anzahl Positionen</msg>
   <msg key="iv_offer_creation_date">erstellt am</msg>
   <msg key="iv_offer_creation_user">erstellt von</msg>
   <msg key="iv_offer_currency">W�hrung</msg>
   <msg key="iv_offer_date_comment">Teillieferung</msg>
+  <msg key="iv_offer_date_comment_help">Interne Notizen, welche den Abgabetermin, welcher dem Kunden kommuniziert wurde, erl�utern.</msg>
   <msg key="iv_offer_Delete">Kostenaufstellung l�schen</msg>
   <msg key="iv_offer_Description">Beschreibung</msg>
   <msg key="iv_offer_Description_help">Beschreibung der Kostenaufstellung</msg>
   <msg key="iv_offer_Edit">Projektaufstellung �ndern</msg>
   <msg key="iv_offer_edit_error">Sie d�rfen keine akzeptierte oder berechnete Kostenaufstellung �ndern.</msg>
   <msg key="iv_offer_email">&lt;html&gt;&lt;body&gt;&lt;h3&gt;Angebot&lt;/h3&gt;%offer_text%&lt;/html&gt;&lt;/body&gt;</msg>
   <msg key="iv_offer_finish_date">Timing Datum</msg>
+  <msg key="iv_offer_finish_date_help">Abgabetermin zu dem das Projekt an den Kunden ausgeliefert werden muss</msg>
   <msg key="iv_offer_finish_time">Timing Uhrzeit</msg>
+  <msg key="iv_offer_finish_time_help">Uhrzeit des Abgabetermins f�r die Auslieferung des Projekts</msg>
   <msg key="iv_offer_item_1">Kostenposition</msg>
   <msg key="iv_offer_item_2">Kostenpositionen</msg>
   <msg key="iv_offer_item_Add">Kostenposition hinzuf�gen</msg>
   <msg key="iv_offer_item_amount">Betrag</msg>
+  <msg key="iv_offer_item_amount_help">Errechneter Gesamtbetrag (multiplizierte Einheiten und Preise pro Einheit)</msg>
   <msg key="iv_offer_item_category">Typ</msg>
+  <msg key="iv_offer_item_category_help">Art der erbrachten Arbeit</msg>
   <msg key="iv_offer_item_comment">Kommentar</msg>
+  <msg key="iv_offer_item_comment_help">Interner Kommentar f�r die Position des Angebots/der Rechnung</msg>
   <msg key="iv_offer_item_Delete">Kostenposition l�schen</msg>
   <msg key="iv_offer_item_Description">Beschreibung</msg>
+  <msg key="iv_offer_item_Description_help">Beschreibung, die auch in dem Angebot/der Rechnung angezeigt wird</msg>
   <msg key="iv_offer_item_Edit">Kostenposition �ndern</msg>
   <msg key="iv_offer_item_file_count">Dateianzahl</msg>
+  <msg key="iv_offer_item_file_count_help">Anzahl der Dateien, die f�r dieses Angebot/diese Rechnung relevant sind</msg>
   <msg key="iv_offer_item_files">Dateien</msg>
   <msg key="iv_offer_item_invoice_id">Kostenaufstellung</msg>
   <msg key="iv_offer_item_item_units">Anzahl Stunden</msg>
+  <msg key="iv_offer_item_item_units_help">Anzahl an Einheiten (z.B. Stunden oder Zeilen)</msg>
   <msg key="iv_offer_item_New">Neue Kostenposition</msg>
   <msg key="iv_offer_item_New2">Neue Kostenposition erstellen</msg>
   <msg key="iv_offer_item_nr">Positionsnummer</msg>
   <msg key="iv_offer_item_page_count">Seitenzahl</msg>
+  <msg key="iv_offer_item_page_count_help">Anzahl an Seiten, die f�r diese Rechnungsposition relevant sind</msg>
   <msg key="iv_offer_item_pages">Seiten</msg>
   <msg key="iv_offer_item_parent_id">Bezug auf Kostenposition</msg>
   <msg key="iv_offer_item_price_per_unit">Stundenpreis</msg>
+  <msg key="iv_offer_item_price_per_unit_help">Preis pro Einheit. Wird auf Basis der Preisliste vorausgef�llt, wobei die Art der Arbeit aus der Preisliste mit dem angebotenen/berechneten Position verkn�pft wird. </msg>
   <msg key="iv_offer_item_rebate">Rabatt</msg>
+  <msg key="iv_offer_item_rebate_help">Rabatt, der auf dieses Angebot/diese Rechnung gegeben wird (in Prozent)</msg>
   <msg key="iv_offer_item_sort_order">Nummer</msg>
   <msg key="iv_offer_item_Title">Titel</msg>
+  <msg key="iv_offer_item_Title_help">Titel, der in dem Angebot/der Rechnung angezeigt wird</msg>
   <msg key="iv_offer_item_vat">Mehrwertsteuer</msg>
   <msg key="iv_offer_item_View">Kostenposition ansehen</msg>
   <msg key="iv_offer_list">Projektaufstellungen</msg>
@@ -180,8 +203,10 @@
   <msg key="iv_offer_organization">Kunde</msg>
   <msg key="iv_offer_organization_help">Name des Kunden</msg>
   <msg key="iv_offer_payment_days">Zahlungsziel (Tage)</msg>
+  <msg key="iv_offer_payment_days_help">Wie viele Tage hat der Kunde, bis die Rechnung gezahlt werden muss</msg>
   <msg key="iv_offer_project">Projekt</msg>
   <msg key="iv_offer_project_descr">Beschreibung</msg>
+  <msg key="iv_offer_project_help">Projektname</msg>
   <msg key="iv_offer_project_id">Projekt Nummer</msg>
   <msg key="iv_offer_project_title">Titel</msg>
   <msg key="iv_offer_send">Angebot schicken</msg>
@@ -191,6 +216,7 @@
   <msg key="iv_offer_Title_help">Titel des Angebots</msg>
   <msg key="iv_offer_vat">Mehrwertsteuer</msg>
   <msg key="iv_offer_vat_percent">Mehrwertsteuersatz</msg>
+  <msg key="iv_offer_vat_percent_help">Wie hoch ist die MwSt, die dem Kunden berechnet wird</msg>
   <msg key="iv_offer_View">Projektaufstellung ansehen</msg>
   <msg key="iv_payment_1">Zahlung</msg>
   <msg key="iv_payment_2">Zahlungen</msg>
@@ -226,7 +252,12 @@
   <msg key="iv_price_list_Title">Titel</msg>
   <msg key="iv_price_list_View">Preisliste ansehen</msg>
   <msg key="iv_price_View">Preis ansehen</msg>
+  <msg key="iv_reports">Rechnungs Report</msg>
+  <msg key="last_years">Letztes Jahr</msg>
   <msg key="Link_instances">Anwendungen verlinken</msg>
+  <msg key="month">Monat</msg>
+  <msg key="New">Neu</msg>
+  <msg key="New_clients">Neue Kunden</msg>
   <msg key="no">Nein</msg>
   <msg key="None">Keine</msg>
   <msg key="Number_of_units">Anzahl Stunden</msg>
@@ -260,5 +291,6 @@
   <msg key="Unmounted">Unmounted</msg>
   <msg key="VAT">Mehrwertsteuersatz</msg>
   <msg key="VAT_amount">Mehrwertsteuer</msg>
+  <msg key="year">Jahr</msg>
   <msg key="yes">Ja</msg>
 </message_catalog>
Index: openacs-4/packages/invoices/tcl/invoices-callback-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/invoices/tcl/invoices-callback-procs.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/invoices/tcl/invoices-callback-procs.tcl	6 Sep 2005 22:59:05 -0000	1.2
+++ openacs-4/packages/invoices/tcl/invoices-callback-procs.tcl	28 Sep 2005 17:19:12 -0000	1.3
@@ -98,23 +98,25 @@
     {-project_id:required}
 } {
 } {
-    upvar project_links project_links
-    set invoice_base_url [site_node::get_package_url -package_key invoices]
-    set offer_id [lindex [application_data_link::get_linked -from_object_id $project_id -to_object_type content_item] 0]
+    if {![apm_package_installed_p translation]} {
+	upvar project_links project_links
+	set invoice_base_url [site_node::get_package_url -package_key invoices]
+	set offer_id [lindex [application_data_link::get_linked -from_object_id $project_id -to_object_type content_item] 0]
 
-    if {![empty_string_p $offer_id]} {
-	# link to linked offer
-	append project_links "<li> <a href=\"[export_vars -base "${invoice_base_url}offer-ae" {offer_id {mode display}}]\">[_ invoices.iv_offer_View]</a></li>"
-    } else {
-	# link to offer-list
-	db_1row get_project_organization {
-	    select p.customer_id as organization_id
-	    from pm_projects p, cr_items i
-	    where i.item_id = :project_id
-	    and p.project_id = i.latest_revision
-	}
+	if {![empty_string_p $offer_id]} {
+	    # link to linked offer
+	    append project_links "<li> <a href=\"[export_vars -base "${invoice_base_url}offer-ae" {offer_id {mode display}}]\">[_ invoices.iv_offer_View]</a></li>"
+	} else {
+	    # link to offer-list
+	    db_1row get_project_organization {
+		select p.customer_id as organization_id
+		from pm_projects p, cr_items i
+		where i.item_id = :project_id
+		and p.project_id = i.latest_revision
+	    }
 
-	append project_links "<li> <a href=\"[export_vars -base "${invoice_base_url}offer-list" {organization_id}]\">[_ invoices.iv_offer_list]</a></li>"
+	    append project_links "<li> <a href=\"[export_vars -base "${invoice_base_url}offer-list" {organization_id}]\">[_ invoices.iv_offer_list]</a></li>"
+	}
     }
 }
 
Index: openacs-4/packages/invoices/www/invoice-ae.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/invoices/www/invoice-ae.tcl,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/invoices/www/invoice-ae.tcl	15 Sep 2005 11:11:27 -0000	1.4
+++ openacs-4/packages/invoices/www/invoice-ae.tcl	28 Sep 2005 17:19:12 -0000	1.5
@@ -29,6 +29,7 @@
 } else {
     db_1row get_organization_and_currencies {}
     set cur_vat_percent [format "%.1f" $cur_vat_percent]
+    set cur_invoice_rebate [expr $cur_amount_sum - $cur_total_amount]
     if {$cancelled_p == "t"} {
 	set has_edit 1
     }
@@ -72,7 +73,8 @@
     set recipient_options [db_list_of_lists credit_recipients {}]
 } else {
     # normal invoice: get recipients from projects
-    set recipient_options [db_list_of_lists recipients {}]
+    # set recipient_options [db_list_of_lists recipients {}]
+    set recipient_options [translation::get_recipients -customer_id $organization_id]
 }
 
 
@@ -94,8 +96,13 @@
 
 if {$has_submit} {
     # we are just displaying an invoice
+    if {$cur_invoice_rebate > 0} {
+	ad_form -extend -name iv_invoice_form -form {
+	    {invoice_rebate:float {label "[_ invoices.iv_invoice_rebate]"} {html {size 5 maxlength 10}} {help_text "[_ invoices.iv_invoice_rebate_help2]"} {after_html $currency}}
+	}
+    }
+
     ad_form -extend -name iv_invoice_form -form {
-	{invoice_rebate:float {label "[_ invoices.iv_invoice_rebate]"} {html {size 5 maxlength 10}} {help_text "[_ invoices.iv_invoice_rebate_help2]"} {after_html $currency}}
 	{total_amount:integer,optional {label "[_ invoices.iv_invoice_total_amount]"} {html {size 10 maxlength 10}} {help_text "[_ invoices.iv_invoice_total_amount_help]"} {after_html $currency}}
 	{vat:float {label "[_ invoices.iv_invoice_vat]"} {html {size 10 maxlength 10}} {help_text "[_ invoices.iv_invoice_vat_help]"} {after_html "$currency ($cur_vat_percent%)"}}
     }
@@ -131,11 +138,13 @@
 	{vat_percent:float {label "[_ invoices.iv_invoice_vat_percent]"} {html {size 5 maxlength 10}} {help_text "[_ invoices.iv_invoice_vat_percent_help]"} {after_html {%}}}
     }
 
-    db_1row get_open_rebate {}
-    if {$open_rebate > 0} {
-	set open_rebate [format "%.2f" $open_rebate]
-	ad_form -extend -name iv_invoice_form -form {
-	    {invoice_rebate:float {label "[_ invoices.iv_invoice_rebate]"} {html {size 5 maxlength 10}} {help_text "[_ invoices.iv_invoice_rebate_help]"} {after_html $currency}}
+    if {![empty_string_p $project_id]} {
+	db_1row get_open_rebate {}
+	if {$open_rebate > 0} {
+	    set open_rebate [format "%.2f" $open_rebate]
+	    ad_form -extend -name iv_invoice_form -form {
+		{invoice_rebate:float {label "[_ invoices.iv_invoice_rebate]"} {html {size 5 maxlength 10}} {help_text "[_ invoices.iv_invoice_rebate_help]"} {after_html $currency}}
+	    }
 	}
     }
 }
@@ -238,21 +247,21 @@
     }
 } -on_submit {
     set category_ids [category::ad_form::get_categories -container_object_id $container_objects(invoice_id)]
+
+    set total_amount 0.
+    foreach offer_item_id [array names offer_item_ids] {
+	array set offer $offers($offer_item_id)
+	set total_amount [expr $total_amount + $offer(amount)]
+    }
+    set total_amount [format "%.2f" $total_amount]
+    set amount_sum $total_amount
+    if {[exists_and_not_null invoice_rebate]} {
+	set total_amount [expr $total_amount - $invoice_rebate]
+    }
+    set total_amount [format "%.2f" $total_amount]
+    set vat [format "%.2f" [expr $total_amount * $vat_percent / 100.]]
 } -new_data {
     db_transaction {
-	set total_amount 0.
-	foreach offer_item_id [array names offer_item_ids] {
-	    array set offer $offers($offer_item_id)
-	    set total_amount [expr $total_amount + $offer(amount)]
-	}
-	set total_amount [format "%.2f" $total_amount]
-	set amount_sum $total_amount
-	if {[exists_and_not_null invoice_rebate]} {
-	    set total_amount [expr $total_amount - $invoice_rebate]
-	}
-	set total_amount [format "%.2f" $total_amount]
-	set vat [format "%.2f" [expr $total_amount * $vat_percent / 100.]]
-
 	set new_invoice_rev_id [iv::invoice::new  \
 				    -title $title \
 				    -description $description  \
@@ -297,16 +306,41 @@
 				    -invoice_item_id $invoice_id \
 				    -title $title \
 				    -description $description  \
+				    -recipient_id $recipient_id \
 				    -invoice_nr $invoice_nr \
 				    -organization_id $organization_id \
+				    -total_amount $total_amount \
+				    -amount_sum $amount_sum \
 				    -currency $currency \
 				    -due_date $due_date \
 				    -payment_days $payment_days \
-				    -vat_percent $vat_percent ]
+				    -vat_percent $vat_percent \
+				    -vat $vat]
 
 	if {[exists_and_not_null category_ids]} {
 	    category::map_object -object_id $new_invoice_rev_id $category_ids
 	}
+
+	set counter 0
+	foreach iv_item_id [array names offer_item_ids] {
+	    incr counter
+	    array set offer $offers($iv_item_id)
+	    set offer(vat) [expr $vat_percent * $offer(old_vat) / 100.]
+
+	    set new_item_rev_id [iv::invoice_item::edit \
+				     -iv_item_item_id $iv_item_id \
+				     -invoice_id $new_invoice_rev_id \
+				     -title $offer(title) \
+				     -description $offer(description)  \
+				     -item_nr $offer(item_nr) \
+				     -offer_item_id $offer(offer_item_id) \
+				     -item_units $offer(item_units) \
+				     -price_per_unit $offer(price_per_unit) \
+				     -rebate $offer(rebate) \
+				     -amount_total $offer(amount) \
+				     -sort_order $counter \
+				     -vat $offer(vat) ]
+	}
     }
 } -after_submit {
     ad_returnredirect [export_vars -base invoice-list {organization_id}]
Index: openacs-4/packages/invoices/www/invoice-ae.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/invoices/www/invoice-ae.xql,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/invoices/www/invoice-ae.xql	8 Sep 2005 18:30:50 -0000	1.3
+++ openacs-4/packages/invoices/www/invoice-ae.xql	28 Sep 2005 17:19:12 -0000	1.4
@@ -7,7 +7,8 @@
 	select t.organization_id, t.currency, t.paid_currency,
 	       t.vat_percent as cur_vat_percent, t.cancelled_p,
                t.invoice_id as invoice_rev_id, t.parent_invoice_id,
-               t.total_amount as cur_total_amount
+               t.total_amount as cur_total_amount,
+               t.amount_sum as cur_amount_sum
 	from iv_invoices t, cr_items i
 	where i.latest_revision = t.invoice_id
 	and i.item_id = :invoice_id
@@ -103,10 +104,10 @@
 <fullquery name="invoice_items">
       <querytext>
 
-	select ir.title, ir.description, i.iv_item_id, i.item_units,
-	       i.price_per_unit, i.item_nr, pi.item_id as project_id,
-	       pr.title as project_title, i.vat as old_vat,
-               i.rebate, m.category_id
+	select ir.title, ir.description, ir.item_id as iv_item_id,
+               i.item_units, i.price_per_unit, i.item_nr,
+               pi.item_id as project_id, pr.title as project_title,
+               i.vat as old_vat, i.rebate, m.category_id, i.offer_item_id
 	from cr_items oi, iv_offer_items ofi, iv_invoice_items i,
 	     cr_revisions ir, cr_items pi, cr_revisions pr,
 	     cr_items vi, cr_items ii, acs_rels r, category_object_map m
Index: openacs-4/packages/invoices/www/invoice-send.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/invoices/www/invoice-send.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/invoices/www/invoice-send.tcl	8 Sep 2005 18:30:50 -0000	1.2
+++ openacs-4/packages/invoices/www/invoice-send.tcl	28 Sep 2005 17:19:12 -0000	1.3
@@ -24,7 +24,7 @@
     set pdf_file [text_templates::create_pdf_from_html -html_content "$invoice_text"]
     if {![empty_string_p $pdf_file]} {
 	set file_size [file size $pdf_file]
-	set file_ids [cr_import_content -title "Invoice $invoice_id" -description "PDF version of <a href=[export_vars -base "/invoices/invoice-ae" -url {{mode display} invoice_id}]>this offer</a>" $invoice_id $pdf_file $file_size application/pdf "Invoice $invoice_id"]
+	set file_ids [cr_import_content -title "Invoice $invoice_id" -description "PDF version of <a href=[export_vars -base "/invoices/invoice-ae" -url {{mode display} invoice_id}]>this offer</a>" $invoice_id $pdf_file $file_size application/pdf "[clock seconds]-[expr round([ns_rand]*100000)]"]
     }
 }
 
Index: openacs-4/packages/invoices/www/offer-ae.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/invoices/www/offer-ae.adp,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/invoices/www/offer-ae.adp	16 Aug 2005 20:04:34 -0000	1.1
+++ openacs-4/packages/invoices/www/offer-ae.adp	28 Sep 2005 17:19:12 -0000	1.2
@@ -51,7 +51,7 @@
     var form = document.forms.iv_offer_form;
     var total = 0.;
 
-    for (i=1; i<5+@start@; i++) {
+    for (i=1; i<2+@start@; i++) {
       item_amount = form["amount_sum."+i].value
       item_rebate = form["item_rebate."+i].value
 
Index: openacs-4/packages/invoices/www/offer-send.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/invoices/www/offer-send.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/invoices/www/offer-send.tcl	8 Sep 2005 18:30:50 -0000	1.2
+++ openacs-4/packages/invoices/www/offer-send.tcl	28 Sep 2005 17:19:12 -0000	1.3
@@ -30,7 +30,7 @@
 set pdf_file [text_templates::create_pdf_from_html -html_content "$offer_text"]
 if {![empty_string_p $pdf_file]} {
     set file_size [file size $pdf_file]
-    set file_ids [cr_import_content -title "Offer $offer_id" -description "PDF version of <a href=[export_vars -base "/invoices/offer-ae" -url {{mode display} offer_id}]>this offer</a>" $offer_id $pdf_file $file_size application/pdf "Offer $offer_id"]
+    set file_ids [cr_import_content -title "Offer $offer_id" -description "PDF version of <a href=[export_vars -base "/invoices/offer-ae" -url {{mode display} offer_id}]>this offer</a>" $offer_id $pdf_file $file_size application/pdf "[clock seconds]-[expr round([ns_rand]*100000)]"]
 } else {
     set file_ids ""
 }