summaryrefslogtreecommitdiff
path: root/locale/legacy/ch/oe
diff options
context:
space:
mode:
Diffstat (limited to 'locale/legacy/ch/oe')
-rwxr-xr-xlocale/legacy/ch/oe378
1 files changed, 378 insertions, 0 deletions
diff --git a/locale/legacy/ch/oe b/locale/legacy/ch/oe
new file mode 100755
index 00000000..148ab49f
--- /dev/null
+++ b/locale/legacy/ch/oe
@@ -0,0 +1,378 @@
+$self{texts} = {
+ 'Accounting Menu' => 'Kontoverwaltung',
+ 'Add Exchange Rate' => 'Wechselkurs erfassen',
+ 'Add Purchase Order' => 'Einkaufsbeleg erfassen',
+ 'Add Quotation' => 'Offerte erstellen',
+ 'Add Request for Quotation' => 'Offertanfrage',
+ 'Add Sales Invoice' => 'Ausgangsrechnung erfassen',
+ 'Add Sales Order' => 'Auftragsbestätigung',
+ 'Add Vendor Invoice' => 'Einkaufsrechnung erfassen',
+ 'Address' => 'Adresse',
+ 'Amount' => 'Betrag',
+ 'Apr' => 'Apr',
+ 'April' => 'April',
+ 'Are you sure you want to delete Order Number' => 'Soll die Bestellung mit folgender Nummer wirklich gelöscht werden:',
+ 'Are you sure you want to delete Quotation Number' => 'Soll die Offerte mit folgender Nummer wirklich gelöscht werden:',
+ 'Attachment' => 'als Anhang',
+ 'Aug' => 'Aug',
+ 'August' => 'August',
+ 'Bcc' => 'Bcc',
+ 'Billing Address' => 'Rechnungsadresse',
+ 'Bin' => 'Lagerort',
+ 'Bin List' => 'Lagerliste',
+ 'Business' => 'Branche',
+ 'C' => 'G',
+ 'Cannot delete order!' => 'Bestellung kann nicht gelöscht werden!',
+ 'Cannot delete quotation!' => 'Offerte kann nicht gelöscht werden!',
+ 'Cannot save order!' => 'Bestellung kann nicht gespeichert werden!',
+ 'Cannot save quotation!' => 'Offerte kann nicht gespeichert werden!',
+ 'Cc' => 'E-Mailkopie',
+ 'City' => 'Ort',
+ 'Closed' => 'Geschlossen',
+ 'Company Name' => 'Firmenname',
+ 'Confirm!' => 'Bestätigen Sie!',
+ 'Consolidate Orders' => 'Bestellungen konsolidieren',
+ 'Consolidate Purchase Orders' => 'Einkaufsbestellungen konsolidieren',
+ 'Consolidate Sales Orders' => 'Verkaufsbestellungen konsolidieren',
+ 'Contact' => 'Kontakt',
+ 'Continue' => 'Weiter',
+ 'Copies' => 'Kopien',
+ 'Cost' => 'Kosten',
+ 'Could not save!' => 'Konnte nicht gespeichert werden!',
+ 'Could not transfer Inventory!' => 'Inventar wurde nicht übertragen!',
+ 'Country' => 'Land',
+ 'Credit Limit' => 'Kreditlimite',
+ 'Curr' => 'Währung',
+ 'Currency' => 'Währung',
+ 'Current' => 'Aktuell',
+ 'Customer' => 'Kunde',
+ 'Customer Number' => 'Kundennummer',
+ 'Customer missing!' => 'Kundenname fehlt!',
+ 'Customer not on file!' => 'Kunde ist nicht in der Datenbank!',
+ 'Date' => 'Datum',
+ 'Date Received' => 'Eingangsdatum',
+ 'Date received missing!' => 'Eingangsdatum fehlt!',
+ 'Day(s)' => 'Tage',
+ 'Dec' => 'Dez',
+ 'December' => 'Dezember',
+ 'Delete' => 'Löschen',
+ 'Delete Schedule' => 'Zeitplan löschen',
+ 'Delivery Date' => 'Lieferdatum',
+ 'Department' => 'Abteilung',
+ 'Description' => 'Beschreibung',
+ 'Done' => 'Fertig',
+ 'E-mail' => 'E-Mail',
+ 'E-mail address missing!' => 'E-Mail-Adresse fehlt!',
+ 'E-mail message' => 'E-Mail-Nachricht ',
+ 'E-mailed' => 'E-Mail gesendet',
+ 'Edit Purchase Order' => 'Einkaufsbestellung bearbeiten',
+ 'Edit Quotation' => 'Offerte bearbeiten',
+ 'Edit Request for Quotation' => 'Offerte bearbeiten',
+ 'Edit Sales Order' => 'Verkaufsbeleg bearbeiten',
+ 'Employee' => 'Verkäufer',
+ 'Every' => 'Jeden',
+ 'Exchange Rate' => 'Wechselkurs',
+ 'Exchange rate missing!' => 'Wechselkurs fehlt!',
+ 'Extended' => 'Summe',
+ 'Fax' => 'Fax',
+ 'Feb' => 'Feb',
+ 'February' => 'Februar',
+ 'For' => 'für',
+ 'From' => 'Von',
+ 'From Warehouse' => 'Vom Lagerhaus',
+ 'Generate Orders' => 'Aufträge erstellen',
+ 'Generate Purchase Orders' => 'Bestellungen erstellen',
+ 'Generate Purchase Orders from Sales Order' => 'Bestellungen von Aufträgen erstellen',
+ 'Generate Sales Order' => 'Einkaufsbestellung erstellen',
+ 'Generate Sales Order from Purchase Orders' => 'Auftrag anhand von Bestellungen erstellen',
+ 'Group' => 'Warengruppe',
+ 'ID' => 'ID',
+ 'In-line' => 'im Textkörper (Inline)',
+ 'Include Payment' => 'Bezahlung reinnehmen',
+ 'Include in Report' => 'In Bericht aufnehmen',
+ 'Internal Notes' => 'Interne Notizen',
+ 'Inventory saved!' => 'Inventar gespeichert!',
+ 'Inventory transferred!' => 'Inventar übertragen',
+ 'Invoice' => 'Rechnung',
+ 'Invoice Date missing!' => 'Rechnungsdatum fehlt!',
+ 'Invoice Number missing!' => 'Rechnungsnummer fehlt!',
+ 'Item' => 'Pos',
+ 'Item not on file!' => 'Dieser Artikel ist nicht in der Datenbank!',
+ 'Jan' => 'Jan',
+ 'January' => 'Januar',
+ 'Jul' => 'Jul',
+ 'July' => 'Juli',
+ 'Jun' => 'Jun',
+ 'June' => 'Juni',
+ 'Lead' => 'Anlaufzeit',
+ 'Manager' => 'Geschäftsführer',
+ 'Mar' => 'Mär',
+ 'March' => 'März',
+ 'May' => 'Mai',
+ 'May ' => 'Mai',
+ 'Message' => 'Nachricht',
+ 'Month' => 'Monat',
+ 'Month(s)' => 'Monat(e)',
+ 'Next Date' => 'Nächstes Datum',
+ 'No.' => 'Pos.',
+ 'Notes' => 'Bemerkungen',
+ 'Nothing entered!' => 'Es wurde nichts eingegeben!',
+ 'Nothing selected!' => 'Es wurde nichts ausgewählt!',
+ 'Nothing to transfer!' => 'Es gibt nichts zu übertragen!',
+ 'Nov' => 'Nov',
+ 'November' => 'November',
+ 'Number' => 'Artikelnummer',
+ 'Number missing in Row' => 'Nummer fehlt in Zeile',
+ 'O' => 'O',
+ 'OH' => 'LU',
+ 'Oct' => 'Okt',
+ 'October' => 'Oktober',
+ 'Open' => 'Offen',
+ 'Order' => 'Bestellung',
+ 'Order Date' => 'Bestelldatum',
+ 'Order Date missing!' => 'Bestelldatum fehlt!',
+ 'Order Number' => 'Bestellnummer',
+ 'Order Number missing!' => 'Bestellnummer fehlt!',
+ 'Order deleted!' => 'Bestellung gelöscht!',
+ 'Order generation failed!' => 'Auftragserstellung fehlgeschlagen!',
+ 'Order saved!' => 'Bestellung gespeichert!',
+ 'PDF' => 'PDF',
+ 'PO Number' => 'Ihre Bestellnummer',
+ 'Packing List' => 'Packliste',
+ 'Packing List Date missing!' => 'Verpackungslisten-Datum fehlt!',
+ 'Packing List Number missing!' => 'Verpackungslistennummer fehlt!',
+ 'Part' => 'Artikel',
+ 'Part Number' => 'Artikelnummer',
+ 'Period' => 'Zeitraum',
+ 'Phone' => 'Tel.',
+ 'Pick List' => 'Lagerliste',
+ 'Postscript' => 'Postscript',
+ 'Price' => 'Preis',
+ 'Print' => 'Drucken',
+ 'Print and Save' => 'Drucken und speichern',
+ 'Print and Save as new' => 'Drucken und als neu speichern',
+ 'Printed' => 'Gedruckt',
+ 'Project' => 'Projekt',
+ 'Project not on file!' => 'Dieses Projekt ist nicht in der Datenbank!',
+ 'Purchase Order' => 'Einkaufsbestellung',
+ 'Purchase Orders' => 'Einkaufsbestellungen',
+ 'Qty' => 'Menge',
+ 'Quarter' => 'Quartal',
+ 'Queue' => 'Warteschlange',
+ 'Queued' => 'In Warteschlange',
+ 'Quotation' => 'Offerte',
+ 'Quotation ' => 'Verkaufsofferte',
+ 'Quotation Date' => 'Offertendatum',
+ 'Quotation Date missing!' => 'Offertendatum fehlt!',
+ 'Quotation Number' => 'Offertenummer',
+ 'Quotation Number missing!' => 'Offertenummer fehlt!',
+ 'Quotation deleted!' => 'Offerte gelöscht!',
+ 'Quotations' => 'Offerten',
+ 'RFQ' => 'Offertanfrage',
+ 'RFQ ' => 'Einkaufsofferte ',
+ 'RFQ Number' => 'Einkaufsoffertennummer',
+ 'Recd' => 'Erh',
+ 'Receive Merchandise' => 'Artikeln einlagern',
+ 'Recurring Transaction' => 'Wiederkehrende Buchung',
+ 'Reference' => 'Referenz',
+ 'Remaining' => 'Rest',
+ 'Repeat' => 'Wiederholen',
+ 'Req' => 'Ben.',
+ 'Request for Quotation' => 'Offerteanfrage',
+ 'Request for Quotations' => 'Offertenanfragen',
+ 'Required by' => 'Erforderlich bis am',
+ 'SKU' => 'Lagerhaltungseinheit',
+ 'Sales Invoice' => 'Ausgangsrechnung',
+ 'Sales Order' => 'Auftragsbestätigung',
+ 'Sales Orders' => 'Auftragsbestätigungen',
+ 'Salesperson' => 'Verkäufer',
+ 'Save' => 'Speichern',
+ 'Save Schedule' => 'Zeitplan speichern',
+ 'Save as new' => 'als neu speichern',
+ 'Schedule' => 'Buchungstermine',
+ 'Scheduled' => 'geplant',
+ 'Screen' => 'Bildschirm',
+ 'Select Vendor' => 'Lieferant auswählen',
+ 'Select a Printer!' => 'Drucker auswählen!',
+ 'Select from one of the names below' => 'Wählen Sie einen der untenstehenden Namen',
+ 'Select from one of the projects below' => 'Wählen Sie eines der untenstehenden Projekte',
+ 'Select items' => 'Bitte wählen Sie aus',
+ 'Select postscript or PDF!' => 'Postscript oder PDF auswählen!',
+ 'Select txt, postscript or PDF!' => 'Text, Postscript oder PDF auswählen!',
+ 'Sep' => 'Sep',
+ 'September' => 'September',
+ 'Serial No.' => 'Seriennummer',
+ 'Service' => 'Dienstleistung',
+ 'Ship' => 'Versenden',
+ 'Ship Merchandise' => 'Waren versenden',
+ 'Ship to' => 'Lieferung an',
+ 'Ship via' => 'Versandart',
+ 'Shipping Address' => 'Lieferanschrift',
+ 'Shipping Date' => 'Versanddatum',
+ 'Shipping Date missing!' => 'Versanddatum fehlt!',
+ 'Shipping Point' => 'Lieferort',
+ 'Startdate' => 'Eintrittsdatum',
+ 'State/Province' => 'Kanton',
+ 'Subject' => 'Betreff',
+ 'Subtotal' => 'Zwischensumme',
+ 'Tax' => 'MWST',
+ 'Tax Included' => 'MWST im Preis enthalten',
+ 'Terms' => 'Zahlungsbedingungen',
+ 'Text' => 'Text',
+ 'To' => 'Bis',
+ 'To Warehouse' => 'Zum Lager',
+ 'Total' => 'Total',
+ 'Trade Discount' => 'Handelsrabatt',
+ 'Transfer' => 'Übertrag',
+ 'Transfer Inventory' => 'Inventarübertrag',
+ 'Transfer from' => 'umlagern von',
+ 'Transfer to' => 'Übergabe an',
+ 'Translation not on file!' => 'Übersetzung nicht in der Datenbank',
+ 'Unit' => 'Einheit',
+ 'Update' => 'Erneuern',
+ 'Valid until' => 'Gültig bis',
+ 'Vendor' => 'Lieferant',
+ 'Vendor Invoice' => 'Einkaufsrechnung',
+ 'Vendor Number' => 'Lieferantennummer',
+ 'Vendor missing!' => 'Lieferant fehlt!',
+ 'Vendor not on file!' => 'Lieferant ist nicht in der Datenbank!',
+ 'Warehouse' => 'Warenlager',
+ 'Warning!' => 'Warnung!',
+ 'Week(s)' => 'Woche(n)',
+ 'What type of item is this?' => 'Welche Artikelart ist das?',
+ 'Work Order' => 'Arbeitsblatt',
+ 'Year' => 'Jahr',
+ 'Year(s)' => 'Jahr(e)',
+ 'Yes' => 'Ja',
+ 'You are posting an existing transaction!' => 'Sie buchen eine existierende Buchung',
+ 'You are printing and posting an existing transaction!' => 'Sie drucken und buchen eine bereits bestehende Buchung',
+ 'You are printing and saving an existing order' => 'Sie drucken und speichern einen existierenden Auftrag',
+ 'You are printing and saving an existing quotation' => 'Sie drucken und speichern eine bereits bestehende Offerte',
+ 'You are saving an existing order' => 'Sie speichern einen bereits bestehenden Auftrag',
+ 'You are saving an existing quotation' => 'Sie speichern eine vorhandene Offerte',
+ 'Zip/Postal Code' => 'PLZ',
+ 'days' => 'Tage',
+ 'ea' => 'pro',
+ 'for' => 'für',
+ 'sent' => 'verschickt',
+ 'time(s)' => 'mal',
+};
+
+$self{subs} = {
+ 'acc_menu' => 'acc_menu',
+ 'add' => 'add',
+ 'add_transaction' => 'add_transaction',
+ 'ap_transaction' => 'ap_transaction',
+ 'ar_transaction' => 'ar_transaction',
+ 'backorder_exchangerate' => 'backorder_exchangerate',
+ 'calc_markup' => 'calc_markup',
+ 'check_form' => 'check_form',
+ 'check_name' => 'check_name',
+ 'check_project' => 'check_project',
+ 'consolidate_orders' => 'consolidate_orders',
+ 'continue' => 'continue',
+ 'create_backorder' => 'create_backorder',
+ 'create_form' => 'create_form',
+ 'customer_details' => 'customer_details',
+ 'delete' => 'delete',
+ 'delete_schedule' => 'delete_schedule',
+ 'display' => 'display',
+ 'display_form' => 'display_form',
+ 'display_row' => 'display_row',
+ 'display_ship_receive' => 'display_ship_receive',
+ 'done' => 'done',
+ 'e_mail' => 'e_mail',
+ 'edit' => 'edit',
+ 'form_footer' => 'form_footer',
+ 'form_header' => 'form_header',
+ 'generate_orders' => 'generate_orders',
+ 'generate_purchase_orders' => 'generate_purchase_orders',
+ 'gl_transaction' => 'gl_transaction',
+ 'invoice' => 'invoice',
+ 'invoicetotal' => 'invoicetotal',
+ 'item_selected' => 'item_selected',
+ 'js_menu' => 'js_menu',
+ 'list_transfer' => 'list_transfer',
+ 'menubar' => 'menubar',
+ 'name_selected' => 'name_selected',
+ 'new_item' => 'new_item',
+ 'order_links' => 'order_links',
+ 'po_orderitems' => 'po_orderitems',
+ 'post_as_new' => 'post_as_new',
+ 'prepare_order' => 'prepare_order',
+ 'print' => 'print',
+ 'print_and_post_as_new' => 'print_and_post_as_new',
+ 'print_and_save' => 'print_and_save',
+ 'print_and_save_as_new' => 'print_and_save_as_new',
+ 'print_form' => 'print_form',
+ 'print_options' => 'print_options',
+ 'project_selected' => 'project_selected',
+ 'purchase_order' => 'purchase_order',
+ 'quotation' => 'quotation',
+ 'quotation_' => 'quotation_',
+ 'rebuild_vc' => 'rebuild_vc',
+ 'repost' => 'repost',
+ 'reprint' => 'reprint',
+ 'rfq' => 'rfq',
+ 'rfq_' => 'rfq_',
+ 'sales_invoice' => 'sales_invoice',
+ 'sales_invoice_' => 'sales_invoice_',
+ 'sales_order' => 'sales_order',
+ 'save' => 'save',
+ 'save_as_new' => 'save_as_new',
+ 'save_exchangerate' => 'save_exchangerate',
+ 'save_schedule' => 'save_schedule',
+ 'schedule' => 'schedule',
+ 'search' => 'search',
+ 'search_transfer' => 'search_transfer',
+ 'section_menu' => 'section_menu',
+ 'select_item' => 'select_item',
+ 'select_name' => 'select_name',
+ 'select_project' => 'select_project',
+ 'select_vendor' => 'select_vendor',
+ 'send_email' => 'send_email',
+ 'ship_receive' => 'ship_receive',
+ 'ship_to' => 'ship_to',
+ 'subtotal' => 'subtotal',
+ 'transactions' => 'transactions',
+ 'transfer' => 'transfer',
+ 'update' => 'update',
+ 'validate_items' => 'validate_items',
+ 'vendor_details' => 'vendor_details',
+ 'vendor_invoice' => 'vendor_invoice',
+ 'vendor_invoice_' => 'vendor_invoice_',
+ 'vendor_selected' => 'vendor_selected',
+ 'yes' => 'yes',
+ 'bestellungen_konsolidieren' => 'consolidate_orders',
+ 'weiter' => 'continue',
+ 'löschen' => 'delete',
+ 'zeitplan_löschen' => 'delete_schedule',
+ 'fertig' => 'done',
+ 'e_mail' => 'e_mail',
+ 'aufträge_erstellen' => 'generate_orders',
+ 'bestellungen_erstellen' => 'generate_purchase_orders',
+ 'einkaufsbestellung_erstellen' => 'generate_sales_order',
+ 'drucken' => 'print',
+ 'drucken_und_speichern' => 'print_and_save',
+ 'drucken_und_als_neu_speichern' => 'print_and_save_as_new',
+ 'einkaufsbestellung' => 'purchase_order',
+ 'offerte' => 'quotation',
+ 'verkaufsofferte' => 'quotation_',
+ 'offertanfrage' => 'rfq',
+ 'einkaufsofferte_' => 'rfq_',
+ 'ausgangsrechnung' => 'sales_invoice',
+ 'auftragsbestätigung' => 'sales_order',
+ 'speichern' => 'save',
+ 'zeitplan_speichern' => 'save_schedule',
+ 'als_neu_speichern' => 'save_as_new',
+ 'buchungstermine' => 'schedule',
+ 'lieferant_auswählen' => 'select_vendor',
+ 'lieferung_an' => 'ship_to',
+ 'Übertrag' => 'transfer',
+ 'erneuern' => 'update',
+ 'einkaufsrechnung' => 'vendor_invoice',
+ 'ja' => 'yes',
+};
+
+1;
+
="n_232" class="hl"> $sth->execute( $form->{id} );
  • my ($rowcount) = $sth->fetchrow_array();
  • if ($rowcount) {
  • $form->error( "Cannot delete accounts with associated transactions!" );
  • }
  • # delete chart of account record
  • $query = qq|
  • DELETE FROM chart
  • WHERE id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} ) || $form->dberror($query);
  • # set inventory_accno_id, income_accno_id, expense_accno_id to defaults
  • $query = qq|
  • UPDATE parts
  • SET inventory_accno_id = (SELECT value::int
  • FROM defaults
  • WHERE setting_key =
  • 'inventory_accno_id')
  • WHERE inventory_accno_id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} ) || $form->dberror($query);
  • for (qw(income_accno_id expense_accno_id)) {
  • $query = qq|
  • UPDATE parts
  • SET $_ = (SELECT value::int
  • FROM defaults
  • WHERE setting_key = '$_')
  • WHERE $_ = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} ) || $form->dberror($query);
  • $sth->finish;
  • }
  • foreach my $table (qw(partstax customertax vendortax tax)) {
  • $query = qq|
  • DELETE FROM $table
  • WHERE chart_id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} ) || $form->dberror($query);
  • $sth->finish;
  • }
  • # commit and redirect
  • my $rc = $dbh->commit;
  • $rc;
  • }
  • sub gifi_accounts {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • my $query = qq|
  • SELECT accno, description
  • FROM gifi
  • ORDER BY accno|;
  • $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • push @{ $form->{ALL} }, $ref;
  • }
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub get_gifi {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • my $sth;
  • my $query = qq|
  • SELECT accno, description
  • FROM gifi
  • WHERE accno = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{accno} ) || $form->dberror($query);
  • ( $form->{accno}, $form->{description} ) = $sth->fetchrow_array();
  • $sth->finish;
  • # check for transactions
  • $query = qq|
  • SELECT count(*)
  • FROM acc_trans a
  • JOIN chart c ON (a.chart_id = c.id)
  • JOIN gifi g ON (c.gifi_accno = g.accno)
  • WHERE g.accno = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{accno} ) || $form->dberror($query);
  • ($numrows) = $sth->fetchrow_array;
  • if ( ( $numrows * 1 ) == 0 ) {
  • $form->{orphaned} = 1;
  • }
  • else {
  • $form->{orphaned} = 0;
  • }
  • $dbh->commit;
  • }
  • sub save_gifi {
  • my ( $self, $myconfig, $form ) = @_;
  • my $dbh = $form->{dbh};
  • $form->{accno} =~ s/( |')//g;
  • foreach my $item (qw(accno description)) {
  • $form->{$item} =~ s/-(-+)/-/g;
  • $form->{$item} =~ s/ ( )+/ /g;
  • }
  • my @queryargs = ( $form->{accno}, $form->{description} );
  • # id is the old account number!
  • if ( $form->{id} ) {
  • $query = qq|
  • UPDATE gifi
  • SET accno = ?,
  • description = ?
  • WHERE accno = ?|;
  • push @queryargs, $form->{id};
  • }
  • else {
  • $query = qq|
  • INSERT INTO gifi (accno, description)
  • VALUES (?, ?)|;
  • }
  • $sth = $dbh->prepare($query);
  • $sth->execute(@queryargs) || $form->dberror($query);
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub delete_gifi {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • # id is the old account number!
  • $query = qq|
  • DELETE FROM gifi
  • WHERE accno = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} ) || $form->dberror($query);
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub warehouses {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $form->sort_order();
  • my $query = qq|
  • SELECT id, description
  • FROM warehouse
  • ORDER BY description $form->{direction}|;
  • $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • push @{ $form->{ALL} }, $ref;
  • }
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub get_warehouse {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • my $sth;
  • my $query = qq|
  • SELECT description
  • FROM warehouse
  • WHERE id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} ) || $form->dberror($query);
  • ( $form->{description} ) = $sth->fetchrow_array;
  • $sth->finish;
  • # see if it is in use
  • $query = qq|
  • SELECT count(*)
  • FROM inventory
  • WHERE warehouse_id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} );
  • ( $form->{orphaned} ) = $sth->fetchrow_array;
  • if ( ( $form->{orphaned} * 1 ) == 0 ) {
  • $form->{orphaned} = 1;
  • }
  • else {
  • $form->{orphaned} = 0;
  • }
  • $dbh->commit;
  • }
  • sub save_warehouse {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • my $sth;
  • my @queryargs = ( $form->{description} );
  • $form->{description} =~ s/-(-)+/-/g;
  • $form->{description} =~ s/ ( )+/ /g;
  • if ( $form->{id} ) {
  • $query = qq|
  • UPDATE warehouse
  • SET description = ?
  • WHERE id = ?|;
  • push @queryargs, $form->{id};
  • }
  • else {
  • $query = qq|
  • INSERT INTO warehouse (description)
  • VALUES (?)|;
  • }
  • $sth = $dbh->prepare($query);
  • $sth->execute(@queryargs) || $form->dberror($query);
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub delete_warehouse {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $query = qq|
  • DELETE FROM warehouse
  • WHERE id = ?|;
  • $dbh->prepare($query)->execute( $form->{id} ) || $form->dberror($query);
  • $dbh->commit;
  • }
  • sub departments {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $form->sort_order();
  • my $query = qq|SELECT id, description, role
  • FROM department
  • ORDER BY description $form->{direction}|;
  • $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • push @{ $form->{ALL} }, $ref;
  • }
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub get_department {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • my $sth;
  • my $query = qq|
  • SELECT description, role
  • FROM department
  • WHERE id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} );
  • ( $form->{description}, $form->{role} ) = $sth->fetchrow_array;
  • $sth->finish;
  • for ( keys %$ref ) { $form->{$_} = $ref->{$_} }
  • # see if it is in use
  • $query = qq|
  • SELECT count(*)
  • FROM dpt_trans
  • WHERE department_id = ? |;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} );
  • ( $form->{orphaned} ) = $sth->fetchrow_array;
  • if ( ( $form->{orphaned} * 1 ) == 0 ) {
  • $form->{orphaned} = 1;
  • }
  • else {
  • $form->{orphaned} = 0;
  • }
  • $dbh->commit;
  • }
  • sub save_department {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $form->{description} =~ s/-(-)+/-/g;
  • $form->{description} =~ s/ ( )+/ /g;
  • my $sth;
  • my @queryargs = ( $form->{description}, $form->{role} );
  • if ( $form->{id} ) {
  • $query = qq|
  • UPDATE department
  • SET description = ?,
  • role = ?
  • WHERE id = ?|;
  • push @queryargs, $form->{id};
  • }
  • else {
  • $query = qq|
  • INSERT INTO department (description, role)
  • VALUES (?, ?)|;
  • }
  • $sth = $dbh->prepare($query);
  • $sth->execute(@queryargs) || $form->dberror($query);
  • $dbh->commit;
  • }
  • sub delete_department {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $query = qq|
  • DELETE FROM department
  • WHERE id = ?|;
  • $dbh->prepare($query)->execute( $form->{id} );
  • $dbh->commit;
  • }
  • sub business {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $form->sort_order();
  • my $query = qq|
  • SELECT id, description, discount
  • FROM business
  • ORDER BY description $form->{direction}|;
  • $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • push @{ $form->{ALL} }, $ref;
  • }
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub get_business {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • my $query = qq|
  • SELECT description, discount
  • FROM business
  • WHERE id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute( $form->{id} );
  • ( $form->{description}, $form->{discount} ) = $sth->fetchrow_array();
  • $dbh->commit;
  • }
  • sub save_business {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $form->{description} =~ s/-(-)+/-/g;
  • $form->{description} =~ s/ ( )+/ /g;
  • $form->{discount} /= 100;
  • my $sth;
  • my @queryargs = ( $form->{description}, $form->{discount} );
  • if ( $form->{id} ) {
  • $query = qq|
  • UPDATE business
  • SET description = ?,
  • discount = ?
  • WHERE id = ?|;
  • push @queryargs, $form->{id};
  • }
  • else {
  • $query = qq|INSERT INTO business (description, discount)
  • VALUES (?, ?)|;
  • }
  • $dbh->prepare($query)->execute(@queryargs) || $form->dberror($query);
  • $dbh->commit;
  • }
  • sub delete_business {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $query = qq|
  • DELETE FROM business
  • WHERE id = ?|;
  • $dbh->prepare($query)->execute( $form->{id} ) || $form->dberror($query);
  • $dbh->commit;
  • }
  • sub sic {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $form->{sort} = "code" unless $form->{sort};
  • my @a = qw(code description);
  • my %ordinal = (
  • code => 1,
  • description => 3
  • );
  • my $sortorder = $form->sort_order( \@a, \%ordinal );
  • my $query = qq|SELECT code, sictype, description
  • FROM sic
  • ORDER BY $sortorder|;
  • $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • push @{ $form->{ALL} }, $ref;
  • }
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub get_sic {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • my $query = qq|
  • SELECT code, sictype, description
  • FROM sic
  • WHERE code = | . $dbh->quote( $form->{code} );
  • my $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • my $ref = $sth->fetchrow_hashref(NAME_lc);
  • for ( keys %$ref ) { $form->{$_} = $ref->{$_} }
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub save_sic {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • foreach my $item (qw(code description)) {
  • $form->{$item} =~ s/-(-)+/-/g;
  • }
  • my $sth;
  • @queryargs = ( $form->{code}, $form->{sictype}, $form->{description} );
  • # if there is an id
  • if ( $form->{id} ) {
  • $query = qq|
  • UPDATE sic
  • SET code = ?,
  • sictype = ?,
  • description = ?
  • WHERE code = ?)|;
  • push @queryargs, $form->{id};
  • }
  • else {
  • $query = qq|
  • INSERT INTO sic (code, sictype, description)
  • VALUES (?, ?, ?)|;
  • }
  • $dbh->prepare($query)->execute(@queryargs) || $form->dberror($query);
  • $dbh->commit;
  • }
  • sub delete_sic {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $query = qq|
  • DELETE FROM sic
  • WHERE code = ?|;
  • $dbh->prepare($query)->execute( $form->{code} );
  • $dbh->commit;
  • }
  • sub language {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $form->{sort} = "code" unless $form->{sort};
  • my @a = qw(code description);
  • my %ordinal = (
  • code => 1,
  • description => 2
  • );
  • my $sortorder = $form->sort_order( \@a, \%ordinal );
  • my $query = qq|
  • SELECT code, description
  • FROM language
  • ORDER BY $sortorder|;
  • $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • push @{ $form->{ALL} }, $ref;
  • }
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub get_language {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • ## needs fixing (SELECT *...)
  • my $query = qq|
  • SELECT *
  • FROM language
  • WHERE code = ?|;
  • my $sth = $dbh->prepare($query);
  • $sth->execute( $form->{code} ) || $form->dberror($query);
  • my $ref = $sth->fetchrow_hashref(NAME_lc);
  • for ( keys %$ref ) { $form->{$_} = $ref->{$_} }
  • $sth->finish;
  • $dbh->commit;
  • }
  • sub save_language {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $form->{code} =~ s/ //g;
  • foreach my $item (qw(code description)) {
  • $form->{$item} =~ s/-(-)+/-/g;
  • $form->{$item} =~ s/ ( )+/-/g;
  • }
  • my $sth;
  • my @queryargs = ( $form->{code}, $form->{description} );
  • # if there is an id
  • if ( $form->{id} ) {
  • $query = qq|
  • UPDATE language
  • SET code = ?,
  • description = ?
  • WHERE code = ?|;
  • push @queryargs, $form->{id};
  • }
  • else {
  • $query = qq|
  • INSERT INTO language (code, description)
  • VALUES (?, ?)|;
  • }
  • $dbh->prepare($query)->execute(@queryargs) || $form->dberror($query);
  • $dbh->commit;
  • }
  • sub delete_language {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • $query = qq|
  • DELETE FROM language
  • WHERE code = | . $dbh->quote( $form->{code} );
  • $dbh->do($query) || $form->dberror($query);
  • $dbh->{dbh};
  • }
  • sub recurring_transactions {
  • my ( $self, $myconfig, $form ) = @_;
  • my $dbh = $form->{dbh};
  • my $query = qq|SELECT value FROM defaults where setting_key = 'curr'|;
  • my ($defaultcurrency) = $dbh->selectrow_array($query);
  • $defaultcurrency = $dbh->quote( $defaultcurrency =~ s/:.*//g );
  • $form->{sort} ||= "nextdate";
  • my @a = ( $form->{sort} );
  • my $sortorder = $form->sort_order( \@a );
  • $query = qq|
  • SELECT 'ar' AS module, 'ar' AS transaction, a.invoice,
  • n.name AS description, a.amount,
  • s.*, se.formname AS recurringemail,
  • sp.formname AS recurringprint,
  • s.nextdate - current_date AS overdue,
  • 'customer' AS vc,
  • ex.buy AS exchangerate, a.curr,
  • (s.nextdate IS NULL OR s.nextdate > s.enddate)
  • AS expired
  • FROM recurring s
  • JOIN ar a ON (a.id = s.id)
  • JOIN customer n ON (n.id = a.customer_id)
  • LEFT JOIN recurringemail se ON (se.id = s.id)
  • LEFT JOIN recurringprint sp ON (sp.id = s.id)
  • LEFT JOIN exchangerate ex
  • ON (ex.curr = a.curr AND a.transdate = ex.transdate)
  • UNION
  • SELECT 'ap' AS module, 'ap' AS transaction, a.invoice,
  • n.name AS description, a.amount,
  • s.*, se.formname AS recurringemail,
  • sp.formname AS recurringprint,
  • s.nextdate - current_date AS overdue, 'vendor' AS vc,
  • ex.sell AS exchangerate, a.curr,
  • (s.nextdate IS NULL OR s.nextdate > s.enddate)
  • AS expired
  • FROM recurring s
  • JOIN ap a ON (a.id = s.id)
  • JOIN vendor n ON (n.id = a.vendor_id)
  • LEFT JOIN recurringemail se ON (se.id = s.id)
  • LEFT JOIN recurringprint sp ON (sp.id = s.id)
  • LEFT JOIN exchangerate ex ON
  • (ex.curr = a.curr AND a.transdate = ex.transdate)
  • UNION
  • SELECT 'gl' AS module, 'gl' AS transaction, FALSE AS invoice,
  • a.description, (SELECT SUM(ac.amount)
  • FROM acc_trans ac
  • WHERE ac.trans_id = a.id
  • AND ac.amount > 0) AS amount,
  • s.*, se.formname AS recurringemail,
  • sp.formname AS recurringprint,
  • s.nextdate - current_date AS overdue, '' AS vc,
  • '1' AS exchangerate, $defaultcurrency AS curr,
  • (s.nextdate IS NULL OR s.nextdate > s.enddate)
  • AS expired
  • FROM recurring s
  • JOIN gl a ON (a.id = s.id)
  • LEFT JOIN recurringemail se ON (se.id = s.id)
  • LEFT JOIN recurringprint sp ON (sp.id = s.id)
  • UNION
  • SELECT 'oe' AS module, 'so' AS transaction, FALSE AS invoice,
  • n.name AS description, a.amount,
  • s.*, se.formname AS recurringemail,
  • sp.formname AS recurringprint,
  • s.nextdate - current_date AS overdue,
  • 'customer' AS vc,
  • ex.buy AS exchangerate, a.curr,
  • (s.nextdate IS NULL OR s.nextdate > s.enddate)
  • AS expired
  • FROM recurring s
  • JOIN oe a ON (a.id = s.id)
  • JOIN customer n ON (n.id = a.customer_id)
  • LEFT JOIN recurringemail se ON (se.id = s.id)
  • LEFT JOIN recurringprint sp ON (sp.id = s.id)
  • LEFT JOIN exchangerate ex ON
  • (ex.curr = a.curr AND a.transdate = ex.transdate)
  • WHERE a.quotation = '0'
  • UNION
  • SELECT 'oe' AS module, 'po' AS transaction, FALSE AS invoice,
  • n.name AS description, a.amount,
  • s.*, se.formname AS recurringemail,
  • sp.formname AS recurringprint,
  • s.nextdate - current_date AS overdue, 'vendor' AS vc,
  • ex.sell AS exchangerate, a.curr,
  • (s.nextdate IS NULL OR s.nextdate > s.enddate)
  • AS expired
  • FROM recurring s
  • JOIN oe a ON (a.id = s.id)
  • JOIN vendor n ON (n.id = a.vendor_id)
  • LEFT JOIN recurringemail se ON (se.id = s.id)
  • LEFT JOIN recurringprint sp ON (sp.id = s.id)
  • LEFT JOIN exchangerate ex ON
  • (ex.curr = a.curr AND a.transdate = ex.transdate)
  • WHERE a.quotation = '0'
  • ORDER BY $sortorder|;
  • my $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • my $id;
  • my $transaction;
  • my %e = ();
  • my %p = ();
  • while ( my $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • $ref->{exchangerate} ||= 1;
  • if ( $ref->{id} != $id ) {
  • if (%e) {
  • $form->{transactions}{$transaction}->[$i]->{recurringemail} =
  • "";
  • for ( keys %e ) {
  • $form->{transactions}{$transaction}->[$i]
  • ->{recurringemail} .= "${_}:";
  • }
  • chop $form->{transactions}{$transaction}->[$i]
  • ->{recurringemail};
  • }
  • if (%p) {
  • $form->{transactions}{$transaction}->[$i]->{recurringprint} =
  • "";
  • for ( keys %p ) {
  • $form->{transactions}{$transaction}->[$i]
  • ->{recurringprint} .= "${_}:";
  • }
  • chop $form->{transactions}{$transaction}->[$i]
  • ->{recurringprint};
  • }
  • %e = ();
  • %p = ();
  • push @{ $form->{transactions}{ $ref->{transaction} } }, $ref;
  • $id = $ref->{id};
  • $i = $#{ $form->{transactions}{ $ref->{transaction} } };
  • }
  • $transaction = $ref->{transaction};
  • $e{ $ref->{recurringemail} } = 1 if $ref->{recurringemail};
  • $p{ $ref->{recurringprint} } = 1 if $ref->{recurringprint};
  • }
  • $sth->finish;
  • # this is for the last row
  • if (%e) {
  • $form->{transactions}{$transaction}->[$i]->{recurringemail} = "";
  • for ( keys %e ) {
  • $form->{transactions}{$transaction}->[$i]->{recurringemail} .=
  • "${_}:";
  • }
  • chop $form->{transactions}{$transaction}->[$i]->{recurringemail};
  • }
  • if (%p) {
  • $form->{transactions}{$transaction}->[$i]->{recurringprint} = "";
  • for ( keys %p ) {
  • $form->{transactions}{$transaction}->[$i]->{recurringprint} .=
  • "${_}:";
  • }
  • chop $form->{transactions}{$transaction}->[$i]->{recurringprint};
  • }
  • $dbh->commit;
  • }
  • sub recurring_details {
  • my ( $self, $myconfig, $form, $id ) = @_;
  • my $dbh = $form->{dbh};
  • my $query = qq|
  • SELECT s.*, ar.id AS arid, ar.invoice AS arinvoice,
  • ap.id AS apid, ap.invoice AS apinvoice,
  • ar.duedate - ar.transdate AS overdue,
  • ar.datepaid - ar.transdate AS paid,
  • oe.reqdate - oe.transdate AS req,
  • oe.id AS oeid, oe.customer_id, oe.vendor_id
  • FROM recurring s
  • LEFT JOIN ar ON (ar.id = s.id)
  • LEFT JOIN ap ON (ap.id = s.id)
  • LEFT JOIN oe ON (oe.id = s.id)
  • WHERE s.id = ?|;
  • my $sth = $dbh->prepare($query);
  • $sth->execute($id) || $form->dberror($query);
  • my $ref = $sth->fetchrow_hashref(NAME_lc);
  • $form->{vc} = "customer" if $ref->{customer_id};
  • $form->{vc} = "vendor" if $ref->{vendor_id};
  • for ( keys %$ref ) { $form->{$_} = $ref->{$_} }
  • $sth->finish;
  • $form->{invoice} = ( $form->{arid} && $form->{arinvoice} );
  • $form->{invoice} = ( $form->{apid} && $form->{apinvoice} )
  • unless $form->{invoice};
  • $query = qq|
  • SELECT *
  • FROM recurringemail
  • WHERE id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute($id) || $form->dberror($query);
  • $form->{recurringemail} = "";
  • while ( $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • $form->{recurringemail} .= "$ref->{formname}:$ref->{format}:";
  • $form->{message} = $ref->{message};
  • }
  • $sth->finish;
  • $query = qq|
  • SELECT *
  • FROM recurringprint
  • WHERE id = ?|;
  • $sth = $dbh->prepare($query);
  • $sth->execute($id) || $form->dberror($query);
  • $form->{recurringprint} = "";
  • while ( $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • $form->{recurringprint} .=
  • "$ref->{formname}:$ref->{format}:$ref->{printer}:";
  • }
  • $sth->finish;
  • chop $form->{recurringemail};
  • chop $form->{recurringprint};
  • for (qw(arinvoice apinvoice)) { delete $form->{$_} }
  • $dbh->commit;
  • }
  • sub update_recurring {
  • my ( $self, $myconfig, $form, $id ) = @_;
  • my $dbh = $form->{dbh};
  • $id = $dbh->quote($id);
  • my $query = qq|
  • SELECT nextdate, repeat, unit
  • FROM recurring
  • WHERE id = $id|;
  • my ( $nextdate, $repeat, $unit ) = $dbh->selectrow_array($query);
  • $nextdate = $dbh->quote($nextdate);
  • my $interval = $dbh->quote("$repeat $unit");
  • # check if it is the last date
  • $query = qq|
  • SELECT (date $nextdate + interval $interval) > enddate
  • FROM recurring
  • WHERE id = $id|;
  • my ($last_repeat) = $dbh->selectrow_array($query);
  • if ($last_repeat) {
  • $advance{ $myconfig->{dbdriver} } = "NULL";
  • }
  • $query = qq|
  • UPDATE recurring
  • SET nextdate = (date $nextdate + interval $interval)
  • WHERE id = $id|;
  • $dbh->do($query) || $form->dberror($query);
  • $dbh->commit;
  • }
  • sub check_template_name {
  • my ( $self, $myconfig, $form ) = @_;
  • my @allowedsuff = qw(css tex txt html xml);
  • if ( $form->{file} =~ /^(.:)*?\/|:|\.\.\/|^\// ) {
  • $form->error("Directory transversal not allowed.");
  • }
  • if ( $form->{file} =~ /^${LedgerSMB::Sysconfig::backuppath}\// ) {
  • $form->error(
  • "Not allowed to access ${LedgerSMB::Sysconfig::backuppath}/ with this method"
  • );
  • }
  • my $whitelisted = 0;
  • for (@allowedsuff) {
  • if ( $form->{file} =~ /$_$/ ) {
  • $whitelisted = 1;
  • }
  • }
  • if ( !$whitelisted ) {
  • $form->error("Error: File is of type that is not allowed.");
  • }
  • if ( $form->{file} !~ /^$myconfig->{templates}\// ) {
  • $form->error("Not in a whitelisted directory: $form->{file}")
  • unless $form->{file} =~ /^css\//;
  • }
  • }
  • sub load_template {
  • my ( $self, $myconfig, $form ) = @_;
  • $self->check_template_name( \%$myconfig, \%$form );
  • open( TEMPLATE, '<', "$form->{file}" )
  • or $form->error("$form->{file} : $!");
  • while (<TEMPLATE>) {
  • $form->{body} .= $_;
  • }
  • close(TEMPLATE);
  • }
  • sub save_template {
  • my ( $self, $myconfig, $form ) = @_;
  • $self->check_template_name( \%$myconfig, \%$form );
  • open( TEMPLATE, '>', "$form->{file}" )
  • or $form->error("$form->{file} : $!");
  • # strip
  • $form->{body} =~ s/\r//g;
  • print TEMPLATE $form->{body};
  • close(TEMPLATE);
  • }
  • sub save_preferences {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • # get username, is same as requested?
  • my @queryargs;
  • my $query = qq|
  • SELECT login
  • FROM employee
  • WHERE login = ?|;
  • @queryargs = ( $form->{login} );
  • my $sth = $dbh->prepare($query);
  • $sth->execute(@queryargs) || $form->dberror($query);
  • my ($dbusername) = $sth->fetchrow_array;
  • $sth->finish;
  • return 0 if ( $dbusername ne $form->{login} );
  • # update name
  • $query = qq|
  • UPDATE employee
  • SET name = ?
  • WHERE login = ?|;
  • @queryargs = ( $form->{name}, $form->{login} );
  • $dbh->prepare($query)->execute(@queryargs) || $form->dberror($query);
  • # get default currency
  • $query = qq|
  • SELECT value, (SELECT value FROM defaults
  • WHERE setting_key = 'businessnumber')
  • FROM defaults
  • WHERE setting_key = 'curr'|;
  • ( $form->{currency}, $form->{businessnumber} ) =
  • $dbh->selectrow_array($query);
  • $form->{currency} =~ s/:.*//;
  • $dbh->commit;
  • my $myconfig = LedgerSMB::User->new( $form->{login} );
  • map { $myconfig->{$_} = $form->{$_} if exists $form->{$_} }
  • qw(name email dateformat signature numberformat vclimit tel fax
  • company menuwidth countrycode address timeout stylesheet
  • printer password);
  • $myconfig->{password} = $form->{new_password}
  • if ( $form->{old_password} ne $form->{new_password} );
  • $myconfig->save_member();
  • 1;
  • }
  • sub save_defaults {
  • my ( $self, $myconfig, $form ) = @_;
  • for (qw(IC IC_income IC_expense FX_gain FX_loss)) {
  • ( $form->{$_} ) = split /--/, $form->{$_};
  • }
  • my @a;
  • $form->{curr} =~ s/ //g;
  • for ( split /:/, $form->{curr} ) { push( @a, uc pack "A3", $_ ) if $_ }
  • $form->{curr} = join ':', @a;
  • # connect to database
  • my $dbh = $form->{dbh};
  • # save defaults
  • $sth_plain = $dbh->prepare( "
  • UPDATE defaults SET value = ? WHERE setting_key = ?" );
  • $sth_accno = $dbh->prepare(
  • qq|
  • UPDATE defaults
  • SET value = (SELECT id
  • FROM chart
  • WHERE accno = ?)
  • WHERE setting_key = ?|
  • );
  • my %translation = (
  • inventory_accno_id => 'IC',
  • income_accno_id => 'IC_income',
  • expense_accno_id => 'IC_expense',
  • fxgain_accno_id => 'FX_gain',
  • fxloss_accno_id => 'FX_loss'
  • );
  • for (
  • qw(inventory_accno_id income_accno_id expense_accno_id
  • fxgain_accno_id fxloss_accno_id glnumber sinumber vinumber
  • sonumber ponumber sqnumber rfqnumber partnumber employeenumber
  • customernumber vendornumber projectnumber yearend curr
  • weightunit businessnumber)
  • )
  • {
  • my $val = $form->{$_};
  • if ( $translation{$_} ) {
  • $val = $form->{ $translation{$_} };
  • }
  • if ( $_ =~ /accno/ ) {
  • $sth_accno->execute( $val, $_ )
  • || $form->dberror("Saving $_");
  • }
  • else {
  • $sth_plain->execute( $val, $_ )
  • || $form->dberror("Saving $_");
  • }
  • }
  • my $rc = $dbh->commit;
  • $rc;
  • }
  • sub defaultaccounts {
  • my ( $self, $myconfig, $form ) = @_;
  • # connect to database
  • my $dbh = $form->{dbh};
  • # get defaults from defaults table
  • my $query = qq|
  • SELECT setting_key, value FROM defaults
  • WHERE setting_key LIKE ?|;
  • my $sth = $dbh->prepare($query);
  • $sth->execute('%accno_id') || $form->dberror($query);
  • my $ref;
  • while ( $ref = $sth->fetchrow_hashref(NAME_lc) ) {
  • $form->{ $ref->{setting_key} } = $ref->{value};
  • }
  • $form->{defaults}{IC} = $form->{inventory_accno_id};