Avatar billede frexxit Juniormester
08. maj 2014 - 12:10 Der er 15 kommentarer og
1 løsning

ang. DATE function.

Hej.

Jeg har et lille "system" hvor jeg har en dato den henter fra MySql.

Fx:
Aktiv: 01-05-2014 hentes fra Sql
Slut: 07-05-2014 tager aktiv +6 dage
Deadline: 21-05-2014 tager aktiv + 20 dage

vi bliver afregnet sådan:

hvis DEADLINE er Tirsdag uge 20 - Mandag uge 21
vil vi modtage penge onsdag i uge 22

her er lidt eksempler:

hvad der har deadline fx fra og med: 13-05-2014 til og med: 19-05-2014 bliver afregnet den: 28-05-2014

hvad der har deadline fx fra og med: 20-05-2014 til og med: 26-05-2014 bliver afregnet den: 04-05-2014


Håber det giver mening for jer :)
Avatar billede frexxit Juniormester
08. maj 2014 - 12:15 #1
Nårh ja, det jeg gerne vil er at den skal førtælle mig hvornår vi bliver afregnet for hvert produkt :)
Avatar billede jakobdo Ekspert
08. maj 2014 - 12:47 #2
Din forklaring giver slet ikke mening i mit hoved. :o)
Kan du prøve at forklare hvad ideen er med dette:

Aktiv: 01-05-2014 hentes fra Sql
Slut: 07-05-2014 tager aktiv +6 dage
Deadline: 21-05-2014 tager aktiv + 20 dage

Og hvad er reglerne så omkring dette:

hvad der har deadline fx fra og med: 13-05-2014 til og med: 19-05-2014 bliver afregnet den: 28-05-2014

hvad der har deadline fx fra og med: 20-05-2014 til og med: 26-05-2014 bliver afregnet den: 04-05-2014

Det lyder rimelig ligetil, skal bare forstå hvad du forsøger at opnå. :o)
Avatar billede frexxit Juniormester
08. maj 2014 - 13:12 #3
Aktiv: 01-05-2014 hentes fra Sql
Slut: 07-05-2014 tager aktiv +6 dage
Deadline: 21-05-2014 tager aktiv + 20 dage
var sådan set kun for at give jer en ide om hvordan jeg kommer frem til en deadline dato, den er ikke fra  datebasen direkte, men at den tager en dato + 20 dage.

ja ved sku ikke lige hvordan jeg ellers skal forklare det.
hvis min deadline er tirsdag den 13-05-2014 for jeg afregning den 28-05-2014

hvis min deadline er mandag den 19-05-2014 for jeg afregning den 28-05-2014
MEN hvis min deadline er tirsdag den 20-05-2014 for jeg afregning den 04-06-2014
MEN hvis min deadline er mandag den 26-05-2014 for jeg afregning den 04-06-2014

ellers kan jeg ikke forklare det :)
Avatar billede jakobdo Ekspert
08. maj 2014 - 13:26 #4
Jeg tror måske jeg forstår...

Du har en tabel, hvor du modtager datoen:

01-05-2014

Den slutter så "altid" 6 dage efter dato modtaget fra systemet.
og deadline er dato + 20 dage.
og afregning er aktiv + 29 dage.
Er det korrekt forstået ?
Avatar billede frexxit Juniormester
08. maj 2014 - 14:30 #5
Næsten.

afregning er aktiv + 29 dage, er ikke helt rigtigt..

den variere altid.

der er ALTID udbetaling en onsdag.
Så datoen jeg søger er altid en onsdag.
skal bare finde ud af hvilken onsdag det er vi skal have afregning.

nu har jeg lavet det manuelt:
tirsdag    onsdag    torsdag    fredag    lørdag    søndag    mandag
13-maj    14-maj    15-maj    16-maj    17-maj    18-maj    19-maj
AFREGNES ALLE DEN 28-05-2014
                       
tirsdag    onsdag    torsdag    fredag    lørdag    søndag    mandag
20-maj    21-maj    22-maj    23-maj    24-maj    25-maj    26-maj
AFREGNES ALLE DEN 04-06-2014
                       
tirsdag    onsdag    torsdag    fredag    lørdag    søndag    mandag
27-maj    28-maj    29-maj    30-maj    31-maj    01-jun    02-jun
AFREGNES ALLE DEN 11-06-2014

OSV OSV..

det er selve afregning datoen jeg er ude efter den selv skal komme frem til.. den vil som sagt altid være en onsdag.
Avatar billede jakobdo Ekspert
08. maj 2014 - 15:20 #6
Så skal jeg lige være sikker på jeg forstår det korrekt.

Hvis vi siger

start dato = "noget"
slut = start dato + 6 dage.
deadline = start dato + 20 dage.
afregning = deadline + onsdag næste uge.
Så hvis deadline =

8.maj, er afregning onsdag: 21. maj

Hvis deadline = 7.maj er afregning onsdag: 14. maj

eller ?
Avatar billede frexxit Juniormester
08. maj 2014 - 15:40 #7
ja næsten.

Hvis deadline = 7.maj er afregning onsdag: 14. maj
den er lidt forkert.

Hvis deadline = 5.maj er afregning onsdag: 14. maj
det stopper altid ved en mandag. og så snart vi har tirsdag er vi en uge længer fremme :)
Avatar billede frexxit Juniormester
08. maj 2014 - 20:55 #8
Har fået det lavet.. ikke på den rigtige måde sikkert, men det gør jobbet indtil nu :)
Avatar billede jakobdo Ekspert
09. maj 2014 - 11:16 #9
Prøv lige denne: http://damgaard-olsen.dk/exp/994335.php

og hvis den ikke er korrekt, kan du så ikke prøve at udfylde et skema ala:

Deadline: 1 maj: Afregning: ???
Deadline: 2 maj: Afregning: ???

over en 2-3 uger så jeg kan forstå systemet.
For det kan jo godt laves, hvis du vel at mærke kan fortælle reglerne. :o)
Avatar billede frexxit Juniormester
09. maj 2014 - 13:10 #10
den er tæt på den du har lavet, her er et lille skema.

Deadline    afregning:
01-05-2014    14-05-2014
02-05-2014    14-05-2014
03-05-2014    14-05-2014
04-05-2014    14-05-2014
05-05-2014    14-05-2014
06-05-2014    21-05-2014
07-05-2014    21-05-2014
08-05-2014    21-05-2014
09-05-2014    21-05-2014
10-05-2014    21-05-2014
11-05-2014    21-05-2014
12-05-2014    21-05-2014
13-05-2014    28-05-2014
14-05-2014    28-05-2014
15-05-2014    28-05-2014
16-05-2014    28-05-2014
17-05-2014    28-05-2014
18-05-2014    28-05-2014
19-05-2014    28-05-2014
20-05-2014    04-06-2014
21-05-2014    04-06-2014
22-05-2014    04-06-2014
23-05-2014    04-06-2014
24-05-2014    04-06-2014
25-05-2014    04-06-2014
26-05-2014    04-06-2014
27-05-2014    11-06-2014
28-05-2014    11-06-2014
29-05-2014    11-06-2014
30-05-2014    11-06-2014
31-05-2014    11-06-2014
01-06-2014    11-06-2014
02-06-2014    11-06-2014
som du kan se kører hver "periode" fra en tirsdag til en mandag, fx 27-05-2014 = tirsdag = afregning 11-06-2014
den periode fortsætter så helt hen til og med:
02-06-2014 = mandag= afregning 11-06-2014
så begrynder en ny periode fra den 03-06-2014 - 09-06-2014 som har afregning 18-06-2014
Avatar billede jakobdo Ekspert
09. maj 2014 - 13:38 #11
Avatar billede frexxit Juniormester
09. maj 2014 - 14:24 #12
den er lige som den skal være den sidste der :)
Avatar billede jakobdo Ekspert
09. maj 2014 - 14:28 #13
Du kan se koden der bruges her:

<?php
$json = array('result' => 0);
if (preg_match('/^(\d{4})-(\d{2})-(\d{2})$/', $_POST['date'], $match)){
  $date = $_POST['date'];
    $unix = strtotime($date);
   
   
    $end = strtotime("+6 day", $unix);
    $deadline = strtotime("+20 day", $unix);
    $json['end'] = date("Y-m-d",$end);
    $json['deadline'] = date("Y-m-d",$deadline);
   
    $weekday = date('w', $deadline);
    $json['weekday'] = $weekday;
    switch($weekday){
      case 2:
      case 3:
        $next = strtotime("+2 Week", $deadline);
        break;
      default:
        $next = strtotime("+1 Week", $deadline);
    }
   
    //$next = strtotime("+1 Week", $deadline);
    $json['payment'] = date("Y-m-d",strtotime("next Wednesday", $next));
    $json['result'] = 1;
}
echo json_encode($json);
?>
Avatar billede frexxit Juniormester
16. maj 2014 - 22:14 #14
helt kanon.. fik det lavet, men smid gerne et svar. har lige en simple ny opgave for dig :)

http://www.eksperten.dk/spm/994596
Avatar billede jakobdo Ekspert
16. maj 2014 - 22:45 #15
Så får du et svar.
Avatar billede jakobdo Ekspert
19. maj 2014 - 08:23 #16
Takker for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester