Automatisk uligning af kontantsalg

Her er der mulighed for at komme med forslag til forbedringer til Saldi

Redaktører: Agerskov, Peter Rude, Sarah Aagaard

Besvar
Tony
Indlæg: 26
Tilmeldt: tors apr 26, 2012 1:47 pm

Automatisk uligning af kontantsalg

Indlæg af Tony »

Hermed forslag til forbedring - som hvis jeg selv skal lave det uden at det foldes ind i kodebasen vil gøre det lidt for svært at opdatere min kode senere..

Jeg kunne godt tænke mig, at der ved fakturering var mulighed for at vælge en betalingsbetingelse der var "kontant - er betalt" - som tilføjelse den lille smule funktionalitet at fakturaens åbne post blev lukket, og kundens skyldig saldo ikke blev opskrevet, men "kassebeholdning" blev det i stedet...

Eneste problem (udover at der skal redigeres lidt i ordre.php) er, at hvis det skal integrere nogenlunde fornuftigt, så skal der under f.eks. "debitor grupper" eller "diverse->ordrerelaterede valg" være mulighed for at definere hvilke konto i kontoplanen der er "kassebeholdning"... Og så er det databaseændringer osv..

Håber der kunne være interessant at implementere - jeg gjorde det gerne (gør det sikkert på egen installation) - men det ville være bedre hvis det blev lavet "ordentligt"...

(ved eftertanke kan det være man kan nøjes med at ændre i debitor/ordre.php og systemdata/diverse.php - og så bruge en af de ledige poster i databasen under "grupper", som jo lidt er skraldespanden for småindstillinger...
Måske sender jeg den ind - hvordan gøres det i øvrigt bedst, hvis koden skal integreres???

-Tony
Tony
Indlæg: 26
Tilmeldt: tors apr 26, 2012 1:47 pm

Re: Automatisk uligning af kontantsalg

Indlæg af Tony »

Jeg har kiggel lidt nærmere på koden - og det ser ud til at jeg kan lave ændringerne "pænt"...

Jeg vil meget gerne have lidt feedback til om der er noget jeg har overset, eller fået galt fat i... Og så håber jeg at dette kan blive en del af den fælles kodebase???

Jeg vil bruge 'grupper' - 'art' = DG, og så laver jeg en ændring på systemdata/diverse.php, så jeg kan gemme en "modkonto" (snarere en autoposteringskonto" for 'Betalt - kontant' og 'Betalt - Dankort' i box8 og box9 - de bliver ikke brugt..
(koden ikke lagt her, det er trivielt - og skader ikke hvis det går galt. I første omgang retter jeg bare direkte i databasen, men skal det foldes ind i koden skal rettelsen selvfølgelig laves)

Så vil jeg hardcode (for det er måden det er lavet på, for alle slags betalingsbetingelser) de 2 typer ind på /debitor/debitorkort.php og på debitor/ordre.php - skal opføre sig som 'kontant'.
(igen - det er ekstremt nemt at tilføje - og hvis nogle savner muligheden 'Dankort' som tidligere forespurgt i forum, så skal det bare hardcodes i de 2 filer - søg efter 'kontant', og tilføj efter behov)

Endelig vil jeg i includes/ordrefunc.php lave 2 rettelser:

1. jeg vil ændre:

Kode: Vælg alt

else db_modify("insert into openpost (konto_id,konto_nr,faktnr,amount,beskrivelse,udlignet,transdate,kladde_id,refnr,valuta,valutakurs,forfaldsdate,projekt) values ('$konto_id','$kontonr','$fakturanr','$tmp','$beskrivelse','$udlign','$transdate','$udlign','$id','$valuta','$valutakurs','$forfaldsdate','$projekt[0]')",__FILE__ . " linje " . __LINE__);


til:

Kode: Vælg alt

elseif ($betalingsbet=='Betalt - kontant' || $betalingsbet=='Betalt - Dankort') {
$udlign=1;
db_modify("insert into openpost (konto_id,konto_nr,faktnr,amount,beskrivelse,udlignet,transdate,kladde_id,refnr,valuta,valutakurs,forfaldsdate,projekt) values ('$konto_id','$kontonr','$fakturanr','$tmp','$beskrivelse','$udlign','$transdate','$udlign','$id','$valuta','$valutakurs','$forfaldsdate','$projekt[0]')",__FILE__ . " linje " . __LINE__);
           $tmpu=-$tmp;
           $beskrivelse='betaling - '.$beskrivelse;
db_modify("insert into openpost (konto_id,konto_nr,faktnr,amount,beskrivelse,udlignet,transdate,kladde_id,refnr,valuta,valutakurs,forfaldsdate,projekt) values ('$konto_id','$kontonr','$fakturanr','$tmpu','$beskrivelse','$udlign','$transdate','$udlign','$id','$valuta','$valutakurs','$forfaldsdate','$projekt[0]')",__FILE__ . " linje " . __LINE__);
}
else db_modify("insert into openpost (konto_id,konto_nr,faktnr,amount,beskrivelse,udlignet,transdate,kladde_id,refnr,valuta,valutakurs,forfaldsdate,projekt) values ('$konto_id','$kontonr','$fakturanr','$tmp','$beskrivelse','$udlign','$transdate','$udlign','$id','$valuta','$valutakurs','$forfaldsdate','$projekt[0]')",__FILE__ . " linje " . __LINE__);
Jeg ser om vi falder ind under specialtilfældet "betaling på stedet", og opretter openpost, sætter den til udlignet - og tilføjer den udlignede post (ved at vende fortegnet på beløbet og ændre lidt på teksten) og indsætte en linje mere...
Og hvis ikke, så oprettes openpost som sædvanligt...

Derudover retter jeg:

Kode: Vælg alt

$r = db_fetch_array(db_select("select beskrivelse, box2 from grupper where art = 'DG' and kodenr='$r[gruppe]'",__FILE__ . " linje " . __LINE__));
$kontonr=$r['box2']; # Kontonr aendres fra at vaere leverandoerkontonr til finanskontonr
til:

Kode: Vælg alt

$r = db_fetch_array(db_select("select beskrivelse, box2, box8, box9 from grupper where art = 'DG' and kodenr='$r[gruppe]'",__FILE__ . " linje " . __LINE__));


if ($betalingsbet=='Betalt - kontant') $kontonr=$r['box8']; # Kontonr aendres fra at vaere leverandoerkontonr til finanskonto: kassen
elseif ($betalingsbet=='Betalt - Dankort') $kontonr=$r['box9']; # Kontonr aendres fra at vaere leverandoerkontonr til finanskonto: dankort
else $kontonr=$r['box2']; # Kontonr aendres fra at vaere leverandoerkontonr til finanskonto: samlekonto-debitor
Her henter jeg mine finanskonti gemt i box8 og box9, og vælger så at rette kontonr til enten samlekonto for debitorer (standardvalget), eller direkte at tilføje beløbet på rette finanskonto (kassen eller dankort-konto). Den efterfølgende funktionalitet sikrer at både konti og transaktionsloggen kommer til at stemme...

dermed kan man nu - i marken med en iPad og ingen kasseterminal eller printer - modtage kontant eller dankort betaling, maile en faktura - som er udlignet i systemet.. Og man slipper for efterfølgende at skulle udprinte et indbetalings bilag (kasseopgørelse) - og manuelt afstemme de åbne fakturaer. Jeg har i dette tilfælde følt mig tvunget til at udskrive en fakturakopi (og notere betalt kontant d.d.), for at have et bilag der passer til min kassekladde. Derudover har det også været en udfordring for mig, at styre hvilke åbne poster der reelt var åbne, og hvilke der var modtaget en kontant afregning - som ikke var afstemt endnu.. (fordi kassen ikke bliver afstemt hver dag, og noten om kontant betaling bare var på fakturaen som tekst).

Jeg er udmærket klar over, at denne løsning ikke tager højde for "indbetaling til konto", eller delvis betaling af regning.. Men har man stort behov for det, så syntes jeg man skal tale med Danosoft om en POS (kasseterminal) løsning :-)

Håber det kan bruges - Tony
Besvar