Montag, 5. Januar 2009

Autocincrement für Custom Field

Per Default sehen die aktuellen Versionen von Sugar (CE 5.x.x) nicht die Möglichkeit vor, mittels dem Studio einen Autoincrement/SEQ Wert einzufügen.

Dieses kann man aber mit ein paar Änderungen erzeugen.

In einem Custom Module sind z.B. folgende vardefs.

Achtung - dieses geht nicht mittels Erweiterungen bestehender Module über das Studio!
Dafür benötigst du "logic_hooks".

'bla' =>
array (
'required' => '1',
'name' => 'bla',
'vname' => 'LBL_BLA',
'type' => 'int',
'massupdate' => 0,
'comments' => '',
'help' => '',
'duplicate_merge' => 'disabled',
'duplicate_merge_dom_value' => 0,
'audited' => 0,
'reportable' => 0,
'len' => '11',
'auto_increment'=>true,

),

Zusätzlich muss erfasst werden:

'indices' => array (
array('name' =>'bla' , 'type'=>'unique' , 'fields'=>array('bla')
),),

Dann darauf achten, dass bei MySQL der angegebene Wert ein Autoincrement ist.

Sonntag, 4. Januar 2009

Formatierungs Tips iReport

Dynamisches formatieren von Feldern

Einige Berichte erfordern, dass ein Element unterschiedlich angezeigt werden sollen. Dieses ist z.B. bei Soll/Haben interessant.


























Order IDCityValue
1000New York+ 1.200,00
1001London- 9.080,00
1002Moskau+ 3.230,00


Diese Anzeige bedarf eines kleines Tricks, da Felder in iReport nicht dynamisch geändert werden können.

Anstatt dessen ist es möglich, ein und dasselbe Feld doppelt an identischer Position auszugeben, allerdings mit unterschiedlichen Formatanweisungen.

Den Feldern geben wir dann mit der eine Anweisung, wann diese ausgegeben werden.

Der rote Text wird im Bericht ausgewiesen, wenn der Wert negativ ist. Das grüne Element, wenn der Wert positiv ist.

Interessante Sugar Projekte

Tags
Setze "Tags" an deine Objekte um später ähnliche zu finden.
http://www.sugarforge.org/projects/tags

Visible Path
Visualisiere die Beziehungen der Kontakte.
http://www.sugarforge.org/projects/visiblepath/

Webservice Testing
Für WebService Testing. Status ist noch nicht besonders weit.
http://www.sugarforge.org/projects/ws-testing/

CE (Community Edition) Teams
Junges Projekt (November 2008).
http://www.sugarforge.org/projects/ce-teams/

Sweet Tools
Verspricht ein vollständige Erweiterung der CE Edition um Angebote, Aufträge, Rechnungem etc.
http://www.sugarforge.org/projects/sweettools

SOAP Debug
Für Debugging von SOAP Services.
http://www.sugarforge.org/projects/soapdebug

Password Reset
Gutes Projekt, leider nur alte Sugar Versionen.
http://www.sugarforge.org/projects/passwordreset

Login Audit
Gutes Projekt, loggt die Login Versuche. Leider nur alte Sugar Versionen.
http://www.sugarforge.org/projects/login-audit/

Hyperic Sugar Plugin
Wer seine Systeme mit Hyperic überwacht und Sugar betreibt vielleicht ein guter Ansatz.
http://www.sugarforge.org/projects/hq-sugar-plugin/

ERG Teams
Der nächste Versuch, Team Management in CE zu integrieren. Bislan (01/2009) nichts veröffentlicht.
http://www.sugarforge.org/projects/ergteams/

Queus
Leider derzeit nur Version 4.5.X. Guter Ansatz, um über die verschiedenen Objekte den aktuellen Status zu behalten.
http://www.sugarforge.org/projects/queues

ProcessManager
CE Process Manager. Existiert in 2 varianten (CE/PRO). Kommt leider von den Funktionen nicht an den Pro Workflow Manager von Sugar selbst heran.
http://www.sugarforge.org/projects/processmanager

Zucker Reports unter Windows installieren

Bei der Installation von ZuckerReports für SugarCRM treten unter Windoes häufig Komplikationen auf.

Um das Modul ZuckerReports in SugarCRM zu installieren, muss in der php.ini der Wert für "max_file_upload" auf einen hohen Wert, z.B. 64 MB, gestellt werden (defaultist 8MB).

Danach das Paket unter Administration-> Module Loader einfach uploaden und installieren.

Anzeigeoptionen mit iReport

Um die Anzeige in iReport zu steuern, kann man einfach und elegant mit der Funktion arbeiten.

Dazu kann man Bedingungen definieren, z.B.:

  • Prüfung auf einen String, druckt wenn Wert = ZPF

new Boolean($F{G1_DRU_S_DF}.equals("ZPF"))

  • Prüfung auf numerischen Wert, druckt bei gleich 1

new Boolean($F{G1_DSP_S_FIRMA}.intValue( ) = = 1)

  • Prüfung auf numerischen Wert, druckt bei ungleich 1

new Boolean($F{G1_DSP_S_FIRMA}.intValue( ) ! = 1)

  • Prüfung auf numerischen Wert, druckt bei 1 oder 2

new Boolean($F{G1_DSP_S_FIRMA}.intValue( ) = = 1) || new Boolean($F{G1_DSP_S_FIRMA}.intValue( ) = = 2)

  • Datum in Darstellung TT.MM.JJJJ

$F{G1_DSP_S_DATUMD_JH}.toString().substring(0,2) + "." + $F{G1_DSP_S_DATUMD_JH}.toString().substring(2,4) + "." + $F{G1_DSP_S_DATUMD_JH}.toString().substring(4)


In Jasper Reports können diese Ausdücke in der Option "Print when expression" verwendet werden. Bsp:

  • Druck, wenn Ausdruck leer

new Boolean ( $F{inhalt}!=null) )

Feld-Eigenschaften

In die Feld-Eigenschaften gelankt man druch Doppelklick auf das Feld, oder rechtsklick->Properties

Das Feld soll mit dem Inhalt wachsen -> Common/Position type=Float + -> Text Field/Stretch with overflow=treu

Bands (Abschnitte)

Teilung eines Abschnittes verhindern -> Wird "Split allowed" auf false gesetzt, wird der Inhalt eines "Band" nicht auf mehreren Seiten verteilt. Bedingungen für die Ausgabe definieren -> In der "Print when Expression" können Bedingungen definiert werden, in welchen Fällen gedruckt werden soll. Report Eigenschaften

In den Report Eigenschaften (Report Properties) können Formatierungen wie Spalten, Seitenformat usw definiert werden.

Spalten Siehe Colums in den Report Properties Seitenumbruch steuern in den "Groups", dort Modify, kann ma mit Min height to start new page steuern, wie groß das Feld mindestens sein muss, damit es noch auf der einen, oder schon auf der anderen Seite gedruckt werden soll

Sugar CRM - Tab Konfiguration

Um in Sugar CRM "Tabs" für ein Modul zur Navigation hinzuzufügen, muss dieses in der Datei "manifest.php" bei den $installdefs deklariert werden.

$installdefs = array (
'id' => 'DEIN_MODUL',
'beans' =>
array (
0 =>
array (
'module' => 'DEIN_MODUL',
'class' => 'DEIN_MODUL',
'path' => 'modules/DEIN_MODUL/DEIN_MODUL.php',
'tab' => true,
),

Falls das Modul nicht als Tab angezeigt werden soll (Wert ist dann "false"), aber z.B. als Subpanel eines anderen Moduls benötigt wird, muss in der Datei subpanels_defs.php noch folgender Code eingefügt werden.

global $modules_exempt_from_availability_check;
$modules_exempt_from_availability_check['DEIN_MODUL'] = 'DEIN_MODUL';