Sei sulla pagina 1di 10

Legend

Riconciliazione bancaria e gestione incassi


Versione 1.00
di Rodolfo Calzetti (postmaster@rudyz.net)
Analizziamo due problematice aziendali ce possono essere affrontate con lo stesso
strumento! il clustering dei mo"imenti. Legend # un modulo di Corsaro integrato con la
gestione $i Cubo ("edi documento relati"o)% ce consente di indi"iduare e inserire in una
pratica tutti i mo"imenti ce ineriscono ad una stessa situazione. &aremo due esempi.
Riconciliazione bancaria
'i configurano due liste( una "err) popolata dai mo"imenti come sono registrati
dall*azienda! l*altra dai mo"imenti rice"uti da remote ban+ing.
,l soft-are consente di abbinare le due immagini dello stesso mo"imento e controllare%
cos.% l*operato della banca.
Le liste% in tale configurazione% sono due e di segno opposto in modo da /uadrare a zero.
,n pocissimi istanti il programma # in grado di abbinare migliaia di mo"imenti.
Gestione incassi
0uesta applicazione dei processi di clustering # pi1 interessante% specialmente per
/uelle aziende ce offrono ser"izi al dettaglio.
2a una parte ci sono le fatture (o i tributi% se trattasi di $ubblica Amministrazione) ce
esprimono un 3"alore3 ce l*azienda d) al cliente4utente sotto forma di prodotto o di
ser"izio.
2all*altra ci sono i pagamenti del cliente% effettuati in tempi successi"i all*emissione
della fattura4cartella.
5li incassi potrebbero essere complessi. 6n bonifico potrebbe pagare molte fatture( il
file C7, pro"eniente dalla banca potrebbe non a"er conser"ato il riferimento ai numeri
fattura. ,n tal caso non sarebbe possibile un riconoscimento uno a uno. ,l programma #
per8 dotato di un algoritmo esclusi"o ce # in grado di o""iare alla complessit) del
cosiddetto 3problema delle somme parziali3 ce consiste nell*estrarre da un insieme di
numeri un sottoinsieme di somma data.
Le liste% in tale configurazione% potrebbero essere una% due o molte% ma tutte con lo
stesso segno positi"o poic9 saranno i mo"imenti ce le popolano ad a"ere segno
opportuno.
,l modulo # strettamente collegato alla gestione processi e pratice. 'e un incasso #
problematico lo si pu8 assegnare a un ufficio legale con una transizione di stato.
'cript addon
5li script assistono nell*assegnare uno stesso "alore al campo CL6':;R,2 dei mo"imenti
ce si suppone "adano inseriti nella stessa pratica. <egli script il programmatore a a
disposizione un oggetto $SEEKER (da cui =Legend> per il nome del modulo) ce fornisce
metodi utili allo scopo.
<el seguente esempio% uno script $?$ per un abbinamento elementare basato
sull*identit) degli importi!
<?php
function legendMain(){
global $SEEKER;
// L'!!E"" $SEEEKER #$"%E$E SL LE #&%'(% )E% RE#R)
// *R+ %L #'R%#'ME$" )% ",""% % )'"%
$SEEKER-.dataload();

// )E"ERM%$ % )'"% )ELLE L%S"E )E$M%$'"E %nte/ni E) E0te/ni $ELL' #$*%!,R'+%$E
$int12$SEEKER-.bag034%nte/ni4534)'"'45;
$e0t12$SEEKER-.bag034E0te/ni4534)'"'45;
// )E"ERM%$ % SE!$% )ELLE L%S"E
$int0ignu61$SEEKER-.bag034%nte/ni4534S%!$,M45;
$e0t0ignu61$SEEKER-.bag034E0te/ni4534S%!$,M45;

// )E"ERM%$ % !L% %M7R"% )E% M(%ME$"% )ELL' L%S"' E0te/ni
// "E$E$) #$" )EL SE!$
$e0ta6ount1a//a8();
fo/each($e0t a0 $i 1. $6o9){
$e0ta6ount3$i51$e0t0ignu6:$6o934'M,$"45;
;

// %$%+%'L%++ L' 7R!RESS%$E )% '('$+'ME$" )' #M,$%#'RE 'L #L%E$"
$SEEKER-.p/og/e00init(count($e0ta6ount));
// S#'$)%S# % M(%ME$"% %$"ER$%
fo/each($int a0 $6o9){
// '('$+'ME$" )% ,$ $ELL'
$SEEKER-.p/og/e00();
// #ER# ,$ M(%ME$" ES"ER$ #$ L S"ESS %M7R"
$i1a//a8<0ea/ch(-$int0ignu6:$6o934'M,$"45= $e0ta6ount);
if($i>11fal0e){
// 'SSE!$ ,$ $,( #L,S"ER%) 'L M(%ME$" %$"ER$???
$#L,S"ER%)1$SEEKER-.clu0te/i@e($6o934SAS%)45);
// ??? E L 'SSE!$ '$#&E 'L M(%ME$" ES"ER$ )' 'BB%$'RE
$SEEKER-.clu0te/i@e($e0t3$i534SAS%)45= $#L,S"ER%));
// "L! %L M(%ME$" ES"ER$ )'LL' L%S"'
// 7ER $$ #$S%)ER'RL $E% 7'SS% S,##ESS%(%
un0et($e0ta6ount3$i5);
;
;
/etu/n t/ue;
;
?.
il "ettore associati"o $SEEKER-.bag0 contiene dati e propriet) delle liste di mo"imenti
come sono state definite nella funzione =Configurazioni>.
, metodi di $SEEKER sono elencati di seguito( per lista si intende un "ettore di SYSID
(identificatori uni"oci di sistema% "edere documento sysid.pdf)( per tabella si una
matrice di "alori( per mappa si intende un "ettore di trasformazione degli indici ce
consente di leggere una lista in modo ordinato o per parzializzarla.
Carica in memoria tutti i dati delle liste (se # specificato $NAME% "iene caricata soltanto
la lista con /uel nome)!
$SEEKER-.dataload($$'ME144)
Assegna ai mo"imenti% le cui cia"i sono incluse in una lista $arrows% un CLUSTERID ce
pu8 essere passato o""ero creato contestalmente e restituito!
$SEEKER-.clu0te/i@e($a//oC0= $#L,S"ER%)144)
6tilizza il "alore restituito da una funzione ($funct) per aggregare i mo"imenti di una
lista di nome $bagna!!
$SEEKER-.pa/tition($bagna6e= $funct)
Riempie una mappa $ind!" per leggere in modo ordinato una tabella rispetto a una sua
colonna!
$SEEKER-.indeD($table= $colu6n= 2$indeD= $o/de/14.4)
;ffettua una ricerca su una tabella indicizzata e restituisce la mappa degli elementi
tro"ati!
$SEEKER-.0ea/ch($table= $colu6n= $9alue= $indeD)
&unzioni per effettuare una ricerca numerica mediante il cosiddetto A#gorito %!ro ed
estrarre un sottoinsieme (mappa) la cui somma eguagli il "alore di calibrazione $gaug!!
$SEEKER-.6a/Eo9<initiali@e()
$SEEKER-.6a/Eo9($table= $gauge= $tole/ance1F?FFFG)
$SEEKER-.6a/Eo9<te/6inate()
Ricerca testi in modo euristico! $&a#u! "iene cercato nella sulla colonna $co#un a meno
riordinamenti di parole e piccole distanze di L!&!nst!in( il risultato "iene restituito in
una mappa!
$SEEKER-.06a/t($table= $colu6n= $9alue)
Restituisce una tabella con i mo"imenti le cui cia"i sono prese da una lista!
$SEEKER-.li0tHtable($li0t)
Crea una tabella $targ!t tra"asando "alori dai dati di una tabella $sourc! parzializzati
da una mappa $ap!
$SEEKER-.6apHtable($0ou/ce= 2$ta/get= $6ap)
Riempie un tabella $targ!t con le colonne SYSID e $co#un a partire da $sourc!!
$SEEKER-.colu6nHtable($0ou/ce= $colu6n= 2$ta/get)
Restituisce una tabella $targ!t dei soli elementi liberi di un*altra tabelle $sourc!!
$SEEKER-.tableHf/ee($0ou/ce= 2$ta/get)
Restituisce un "ettore associati"o con informazioni e totalizzazioni dedotte da una data
tabella!
$SEEKER-.getinfo($table)
<ormalizza una stringa per creare cia"i da ordinare!
$SEEKER-.pad0t/ing($9alue= $0i@e1IF)
<ormalizza una data per creare cia"i da ordinare!
$SEEKER-.paddate($9alue)
<ormalizza un numero per creare cia"i da ordinare!
$SEEKER-.padnu6be/($9alue)
<ormalizza un "alore booleano per creare cia"i da ordinare!
$SEEKER-.padboolean($9alue)
Calcola i giorni fra date =@@@@AA22>!
$SEEKER-.datediff($dG= $dH)
Aggiunge giorni a una data =@@@@AA22>!
$SEEKER-.dateadd($d= $da80)
5estione della progressione di a"anzamento!
$SEEKER-.p/og/e00enabled($0i@e1GFFF)
$SEEKER-.p/og/e00init($total)
$SEEKER-.p/og/e00()
5li script possono essere censiti sotto il men1 =Legend> come nell*esempio!
,l posizionamento predefinito degli script # =Jcu0to6i@e/<legend/>.
Configurazioni
La funzione consente di definire delle modalit) di ricerca. ,nnanzi tutto possono essere
specificati gli script ce go"ernano la clusterizzazione!
La tolleranza # un parametro ce% all*atto della ciusura di una pratica di abbinamento%
impedisce l*operazione se il saldo s/uadra oltre il "alore specificato.
B ance possibile definire numero e caratteristice delle liste di ricerca (denominate
=/uery>). :ra le propriet) di una lista segnalo id dati (Int!rni es Est!rni dell*esempio)%
vista ("alore facoltati"o% utile per a"ere a disposizione ance campi in CD,<)% select
(elenco parziale di campi da estrarre per ridurre al minimo l*impiego di memoria)%
parametri ("ettore C'D< ce definisce la mascerina di opzioni per l*estrazione dei
mo"imenti)% where (parametri fissi di estrazione)% colonne (definizione delle colonne
delle liste estratte).
<ell*esempio si noti la condizione #$S%S"E$#A1G( il campo standard C'NSISTENCY
indica il grado di (concr!t!))a* del mo"imento! se A d) E00 euro a B il mo"imento #
(!ff!tti&o* (#$S%S"E$#A1F)( se A d) un tele"isore a B del "alore di E00 euro% il
mo"imento di E00 euro ce rappresenta il totale fattura (mo"imento interno) # una
(!+ui&a#!n)a* (#$S%S"E$#A1G).
Clustering
6na "olta configurato L!g!nd si pu8 passare alla pratica /uotidiana con la funzione
C#ust!ring. 'i scelgono la modalit) operati"a e i parametri di estrazione! ci8 determina
il caricamento delle liste dei mo"imenti in sospeso ce "anno riconciliati.
L*atti"it) di atc,ing si articola in tre fasi!
L*arriccimento di una pratica di abbinamento pu8 essere effettuato su pi1 sessioni di
la"oro mano a mano ce gli incassi "engono importati nel sistema.
Le pratice possono essere aperte col modulo Pi Cubo (leggere il documento picubo.pdf)
per perfezionarle con annotazioni e atti"it).
Quest'opera di RODOLFO CALZETTI (http://www.rudy.!et" e #e idee i$i %o!te!ute so!o state ri#as%iate %o! #i%e!a
CREATI&E CO''O() ATTRI*+ZIO(E , CO(DI&IDI ALLO )TE))O 'ODO -.. ITALIA.
/er #e00ere u!a %opia de##a #i%e!a $isita i# sito we1 http://%reati$e%o22o!s.or0/#i%e!ses/1y,sa/-../it/ o spedis%i u!a
#ettera a Creati$e Co22o!s3 454 )e%o!d )treet3 )uite -..3 )a! Fra!%is%o3 Ca#i6or!ia3 784.93 +)A.

Potrebbero piacerti anche