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 "%organization_name%"</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"><b>Interner Kommentar</b></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"><html><body><h3>Angebot</h3>%offer_text%</html></body></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 "" }