Månedsforkortelser i stedet for MD_n i regnskab og bud

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

Redaktører: Agerskov, Peter Rude, Sarah Aagaard

Besvar
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Månedsforkortelser i stedet for MD_n i regnskab og bud

Indlæg af nielsrune »

Jeg tillader mig endnu engang at komme med lidt patching, bl.a. da dette har været oppe tidligere.

I regnskabsoversigten og budgetplanlægningen står regnskabets måneder blot som MD_1, MD_2 etc.

Her følger mine rettelsesforslag til at ændre dette til forkortelser for de enkelte regnskabsmåneder på dansk. Mine sidste forslag med diff-filer blev lidt roddet, så jeg laver det på den pædagogosiske form. Linjenumre er fra den frigivne 3.0.1 pakke.

I fil finans/regnskab.php ændres linje 153-155 til:

Kode: Vælg alt

setlocale(LC_TIME, "da_DK","da","da_DK.utf8");
$caption[offset] = $startmaaned -1;
for ($z=1; $z<=$maanedantal; $z++) {
$caption[short] = strftime("%b", mktime(0, 0, 0, $caption[offset]+$z));
$caption[long] = strftime("%B", mktime(0, 0, 0, $caption[offset]+$z));
  print "<td title=\"$caption[long] regnskabsm&aring;ned\" align=\"right\"><b> $caption[short]<b><br></td>";
}
unset($caption);
I fil finans/budget.php ændres linje 206-208 til:

Kode: Vælg alt

setlocale(LC_TIME, "da_DK","da","da_DK.utf8");
$caption[offset] = $startmaaned -1;
for ($z=1; $z<=$maanedantal; $z++) {
$caption[short] = strftime("%b", mktime(0, 0, 0, $caption[offset]+$z));
$caption[long] = strftime("%B", mktime(0, 0, 0, $caption[offset]+$z));
  print "<td width\"20\" title=\"$caption[long] regnskabsm&aring;ned\" align=\"right\"><b> $caption[short]<b><br></td>";
}
unset($caption);
Bemærkninger
Dette skulle tage højde for regnskabsår af valgfri antal måneder, samt start-slut måned. Det har i hvert fald virket i mine hurtige tests.

Locale-koden der skal bruges i setlocales() kan være forskellig fra system til system - hos mig skal jeg bruge da_DK.utf8 men jeg har sat de mest almindelige ind så de fleste skulle være dækket ind. Hvilken der skal bruges findes på et unix-system med kommandoen 'locale' og så skal den returnerede værdi for LC_TIME bruges.

Ovenstående kode vil f.eks. for januar måned skrive jan som overskrift i regnskabsoversigten, og 'januar regnskabsmåned' når musen holdes hen over. Jeg har valgt at bruge forkortelser da det ser pænest ud på min laptop med 1024px i bredden.

Jeg kan ikke umiddelbart overskue at skulle lave en opsætning til dette i de generelle indstillinger, men det kan saldi-teamet jo evt. gøre hvis det findes ønsket. Jeg tænker mig at man i indstillinger selv kan indtaste sin locale-kode, og selv vælge formatteringskoden.

Nå, men det var mine forbedringsforslag for denne gang :-)
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Indlæg af nielsrune »

Nå, det viste sig ikke at være så bøvlet som jeg lige troede.. så jeg har lavet en hurtig løsning.

Jeg sender originale 3.0.1, mine rettede filer, og diff-filer til fejl@saldi.dk så kan saldi-teamet kigge på det ved lejlighed.

Hvis selv-hostere er interesserede kan jeg evt. smide diff-filerne op på pastebin eller tilsvarende.

De rettede filer er finans/regnskab.php, finans/budget.php , og systemdata/diverse.php

og så god weekend :-)
Brugeravatar
Agerskov
Indlæg: 260
Tilmeldt: man nov 01, 2004 11:42 pm
Geografisk sted: Albertslund, Sjælland
Kontakt:

Indlæg af Agerskov »

nielsrune skrev:Jeg sender originale 3.0.1, mine rettede filer, og diff-filer til fejl@saldi.dk så kan saldi-teamet kigge på det ved lejlighed.

Hvis selv-hostere er interesserede kan jeg evt. smide diff-filerne op på pastebin eller tilsvarende.

De rettede filer er finans/regnskab.php, finans/budget.php , og systemdata/diverse.php
Tusind tak - vi har modtaget det. Så vi kigger på det og vender snarest tilbage.

Efter et hurtigt kig, kan jeg se, at vi også lige skal have regnskabsår med i den den lange tip-tekst.

Med venlig hilsen
Claus Agerskov
Billede

Støt udviklingen og få omgående hjælp - Tegn en hotline-aftale.
Telefon: 46 90 22 08
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Indlæg af nielsrune »

Agerskov skrev:Efter et hurtigt kig, kan jeg se, at vi også lige skal have regnskabsår med i den den lange tip-tekst.
Nå ja, klart. Jeg har lige kigget lidt på det, og har valgt at løse det således:

I for-loopet, der start i l. 160 (linjenummer i min tilsendte fil regnskab.new.php) indsættes efter l. 160:

Kode: Vælg alt

$caption[aar] = (($caption[offset]+$z) > 12) ? $slutaar : $startaar;
...og $caption[aar] indsættes så i tipteksten.

Og så det samme med budget-filen..

Mit forslag er ikke 100% idiotsikker, da det ikke understøtter en regnskabsperiode på mere end 12 måneder. Det virker dog pt. uanset om perioden er et kalenderår eller overlapper et årsskifte.
Uden at være reviser eller det der ligner, tænker jeg at regnskaber der løber mere end 12 måneder ikke er sædvanligt :-)
Brugeravatar
Agerskov
Indlæg: 260
Tilmeldt: man nov 01, 2004 11:42 pm
Geografisk sted: Albertslund, Sjælland
Kontakt:

Implementeret som funktionen periodeoverskrifter

Indlæg af Agerskov »

nielsrune skrev:Mit forslag er ikke 100% idiotsikker, da det ikke understøtter en regnskabsperiode på mere end 12 måneder. Det virker dog pt. uanset om perioden er et kalenderår eller overlapper et årsskifte.
Uden at være reviser eller det der ligner, tænker jeg at regnskaber der løber mere end 12 måneder ikke er sædvanligt :-)
Jeg har idiotsikret det, samt udvidet det, så det også kan fungere med dage, uger og kvartaler (opdateret 2010-05-27 00:04):

Kode: Vælg alt

<?php
// -----------includes/finansfunk.php-------lap 3.0.2----2010-05-26-----
// LICENS
//
// Dette program er fri software. Du kan gendistribuere det og / eller
// modificere det under betingelserne i GNU General Public License (GPL)
// som er udgivet af The Free Software Foundation; enten i version 2
// af denne licens eller en senere version efter eget valg

// Dette program er udgivet med haab om at det vil vaere til gavn,
// men UDEN NOGEN FORM FOR REKLAMATIONSRET ELLER GARANTI. Se
// GNU General Public Licensen for flere detaljer.
//
// En dansk oversaettelse af licensen kan laeses her:
// http://www.fundanemt.com/gpl_da.html
//
// Copyright (c) 2004-2010 DANOSOFT ApS
// ----------------------------------------------------------------------

if (!function_exists('periodeoverskrifter')) {
        function periodeoverskrifter ($periodeantal, $periode_aar, $periode_md, $periode_dag=1, $periode_laengde="regnskabsmaaned", $regnskabsaar="") {
                # Periodelængder kan være dag, uge, maaned, regnskabsmaaned eller kvartal (eller blot det foerste bogstav)
                setlocale(LC_TIME, "da_DK","da","da_DK.utf8");
                $trin = 1;
                $periode_laengde = strtolower(substr($periode_laengde, 0, 1));
                if ( $periode_laengde == substr("uge", 0, 1) ) {
                        $trin = 7;
                        $periodeantal = $trin * $periodeantal;
                }
                if ( $periode_laengde == substr("kvartal", 0, 1) ) {
                        $trin = 3;
                        $periodeantal = $trin * $periodeantal;
                }
                for ($z=0; $z<$periodeantal; $z=$z+$trin) {
                        if ( $periode_laengde == substr("dag", 0, 1) ) {
                                $periode_tidsstempel = mktime(12, 0, 0, $periode_md, $periode_dag+$z, $periode_aar);
                                if ( strftime("%u", $periode_tidsstempel) > 5 ) { # Loerdag eller soendag med det danske oe i navnet
                                        # $periode_kort = ucfirst(substr(strftime("%a", $periode_tidsstempel),0,3))."&nbsp;".date("j/n",$periode_tidsstempel);
                                        $periode_kort = ucfirst(substr(strftime("%a", $periode_tidsstempel),0,1))."&oslash;&nbsp;".date("j/n",$periode_tidsstempel);
                                } else {
                                        $periode_kort = ucfirst(substr(strftime("%a", $periode_tidsstempel),0,2))."&nbsp;".date("j/n",$periode_tidsstempel);
                                }
                                $periode_lang = ucfirst(strftime("%A %e. %B %Y",$periode_tidsstempel));
                        } elseif ( $periode_laengde == substr("uge", 0, 1) ) {
                                $periode_tidsstempel = mktime(12, 0, 0, $periode_md, $periode_dag+$z, $periode_aar);
                                $periode_ugedag = strftime("%u", $periode_tidsstempel);
                                $periode_start = mktime(12, 0, 0, $periode_md, $periode_dag+$z+1-$periode_ugedag, $periode_aar);
                                $periode_slut = mktime(12, 0, 0, $periode_md, $periode_dag+$z+7-$periode_ugedag, $periode_aar);
                                $periode_kort = strftime("u%V'%g",$periode_tidsstempel);
                                $periode_lang = strftime("Uge %V i &aring;r %G",$periode_tidsstempel);
                                $periode_lang .= " (".date("d/m",$periode_start)." - ".date("d/m",$periode_slut).")";
                        } else {
                                $periode_tidsstempel= mktime(12, 0, 0, $periode_md+$z, $periode_dag, $periode_aar);
                                if ( $periode_laengde == substr("kvartal", 0, 1) ) {
                                        $periode_slut = mktime(12, 0, 0, $periode_md+$z+3, 0, $periode_aar);
                                        $periode_kvartal = floor((date("m",$periode_tidsstempel)-1)/3)+1;
                                        $periode_kort = $periode_kvartal.". kv'". strftime("%y",$periode_tidsstempel);
                                        $periode_lang = $periode_kvartal.". kvartal ". strftime("%Y",$periode_tidsstempel);
                                        $periode_lang .= " (".date("d/m",$periode_tidsstempel)." - ".date("d/m",$periode_slut).")";
                                } elseif ( $periode_laengde == substr("maaned", 0, 1) ) {
                                        $periode_kort = ucfirst(strftime("%b'%y",$periode_tidsstempel));
                                        $periode_lang = ucfirst(strftime("%B %Y",$periode_tidsstempel));
                                } elseif ( $periode_laengde == substr("regnskabsmaaned", 0, 1) ) {
                                        $periode_kort = ucfirst(strftime("%b'%y",$periode_tidsstempel));
                                        $periode_lang = ucfirst(strftime("%B %Y",$periode_tidsstempel));
                                        $periode_lang .= " (".($z+1).". regnskabsm&aring;ned i regnskabs&aring;ret";
                                        if ( $regnskabsaar ) $periode_lang .= " ".$regnskabsaar;
                                        $periode_lang .= ")";

                                } else {
                                        $periode_kort = ($z+1).".";
                                        $periode_lang = ($z+1).". periode";
                                }
                        }

                        print "<td title="$periode_lang" align="right"><b>$periode_kort</b></td>\n";
                }
        }

}
?>
Tusind tak for inspirationen.

Jeg har listet dig i filen BIDRAGYDERE.txt, som bliver udgivet med 3.0.2.

Med venlig hilsen
Claus Agerskov
Billede

Støt udviklingen og få omgående hjælp - Tegn en hotline-aftale.
Telefon: 46 90 22 08
nielsrune
Indlæg: 63
Tilmeldt: tors maj 14, 2009 7:04 pm
Kontakt:

Re: Implementeret som funktionen periodeoverskrifter

Indlæg af nielsrune »

Agerskov skrev:Tusind tak for inspirationen.

Jeg har listet dig i filen BIDRAGYDERE.txt, som bliver udgivet med 3.0.2.
Jamen jeg jo se at jeg lige fik sat nogle tanke i gang - det ser godt ud :-)

Og mange tak for add.. det luner og giver lyst til yderligere bidrag

/Niels Rune Brandt
Besvar