_K_xxxxxx.m


max21 Unternehmensgruppe
#import "Aprica.h"
//	Aprica2
//	copyright Pirmin Braun 1997-2007 - pirmin@pirmin.de
//	all Rights reserved;
@implementation Application (_K_000014)
- (NSString *)einsatzPlanung:(PBWOEditor *)datasource;
{
// bu_einsatzplanung1.script: alles ueber einen einzigen WOString
// PHP Style
// ressource steht in parmDict.inspectedRessource
    int anz_tage = 70;
    int zellen_breite = 20;
    NSString *c_nix = @"#FFFFFF";
    NSString *c_auf = @"#DDDDDD";
    NSString *c_messe = @"#AAAAAA";
    NSString *c_ab = @"#DDDDDD";
    LMAN(alles); // hier kommt fertiges html rein
    LMAN(dbls);
    NSString *ress_pid = [[datasource parmDict] ofk:@"inspectedRessource"];
    NSString *qf,*messef,*dblf,*mt,*termin_f;
    NSArray *messe_array,*t_array=nil;
    PBSQLQualifier *q;
    NSArray *soa,*a;
    NSString *s,*sql;
    NSString *p_planung_ab = [[datasource parmDict]ofk:@"p_planung_ab"];
    double selObj_ausf_von = [[[[[datasource selObj] vfk:@"ausf_von"] dbDateFromMySQLDate]secureSubstringToIndex:8]intValue];
    double selObj_ausf_bis = [[[[[datasource selObj] vfk:@"ausf_bis"] dbDateFromMySQLDate]secureSubstringToIndex:8]intValue];
    int i,j,i1,i2,j2;
    if(!FILLEDNUM(ress_pid))return @"";
    if(!FILLED(p_planung_ab))p_planung_ab = [_APP today];
// zugeordnete Taetigkeiten der inspected Resource feststellen
    sql = @"select t.ausf_bis,t.ausf_von,t.bezeichnun,t.anzahl,t.pid,z.messe from me_ressourcen r,me_taetigkeiten t,me_z_r_t z where r.pid = '%@' and  z.ressource = r.pid and z.taetigkeit = t.pid and t.ausf_bis >= %@ and t.ausf_von <= DATE_ADD('%@',INTERVAL %i DAY)";
    sql = [NSSWF sql,ress_pid,p_planung_ab,p_planung_ab,anz_tage];
    t_array = [_APP getArrayAsResultFrom:sql];
// Messen lesen
    qf = @"ende_ab >= %@ and beginn_auf <= DATE_ADD('%@',INTERVAL %i DAY)";
    qf = [NSSWF qf,p_planung_ab,p_planung_ab,anz_tage];
    q = [PBSQLQualifier qualifierWithString:qf];
    soa=[NSArray soaFrom:@"beginn_auf"];
    messe_array=getEOsQSoa(@"messe",q,soa);
    [alles addObject:@"<div style=\"width:1130;\">"];
    
// Messen zeichnen
    messef = @"<div style=\"white-space : nowrap; cursor:pointer; background-color:%@; width:120; height:14; border-bottom:1px dotted Blue;\" onClick=\"{document.forms[0].messe_selected.value='%@'; sbm('action_script_clicked_messe');}\" title=\"zur Messe\">%@</div>";
    [alles addObject:@"<div style=\"float:left;\">"];
    [alles addObject:@"<div style=\"width:120; height:14; border-bottom:1px dotted Blue;\">Messe \\ Datum -&gt; </div>"];
    for(i=0,j=[messe_array count];i<j;i++){
        PBEO *messe = [messe_array oai:i];
        NSString *messe_key = [messe vfk:@"messe"],*bgColor;
        if([messe_key iE:[[datasource masterEO] vfk:@"messe"]]){
            bgColor = @"#AAAAAA";
        }else{
            bgColor = @"#F0F0F0";
        }
        s=[NSSWF messef,bgColor,messe_key,[messe vfk:@"messe_name"]];
        [alles addObject:s];
    }
    [alles addObject:@"</div>"];
    
// Scrollbereich
    [alles addObject:@"<div style=\"float:left; overflow-x:scroll; width:1000;\">"];
    
// Datumsleiste machen; Tage der Taetigkeit einfaerben
    dblf = @"<div style=\"float:left; width:%i; height:15; position:relative; float:left; background-color:%@\" title=\"%@\"> %i</div>";
    s = @"<div style=\"width:%i; float:left; height:15;\">";
    s=[NSSWF s,anz_tage * zellen_breite];
    [alles addObject:s];
    for(i=0;i<anz_tage;i++){
        PBDate *pbd = [PBDate dateWithDBString:p_planung_ab];
        NSString *farbe = @"white";
        long dt;
        [pbd addDay:i];
        [dbls addObject:pbd];
        dt = [pbd dateAsLong];
        if((dt >= selObj_ausf_von) && (dt <= selObj_ausf_bis) ){
            farbe = @"red";
        }
        s=[NSSWF dblf,zellen_breite,farbe,[pbd dateAsUIString],[pbd day]];
        [alles addObject:s];
    }
    [alles addObject:@"</div>"];
    
// Messen Termine
    mt = @"<div style=\"width:%i; float:left; height:15;\">";
    mt=[NSSWF mt,anz_tage * zellen_breite];
    termin_f = @"<div style=\"float:left; cursor:crosshair; width:%i; height:15; position:relative; float:left; background-color:%@\" title=\"%@\" onClick=\"{document.forms[0].messe_selected.value='%@'; document.forms[0].date_selected.value='%@'; sbm('action_script_clicked_block');}\">%@</div>";
    for(i=0,j=[messe_array count];i<j;i++){
        PBEO *messe = [messe_array oai:i];
        PBDate *pbd;
        long beginn_auf = [[[messe vfk:@"beginn_auf"] secureSubstringToIndex:8]intValue];
        long ende_auf = [[[messe vfk:@"ende_auf"] secureSubstringToIndex:8]intValue];
        long beginn_ab = [[[messe vfk:@"beginn_ab"] secureSubstringToIndex:8]intValue];
        long ende_ab = [[[messe vfk:@"ende_ab"] secureSubstringToIndex:8]intValue];
        [alles addObject:mt];
        for(i1=0;i1<anz_tage;i1++){
            long dt;
            NSString *tooltip,*gui,*farbe;
            pbd = [dbls oai:i1];
            dt = [pbd dateAsLong];
            tooltip = @"hier ist nix mehr los";
            farbe = c_nix;
            gui = @"";
            if(dt < beginn_auf){
            }else{
                if(dt <= ende_auf){
                    farbe = c_auf;
                    gui = @"+";
                    tooltip = @"aufbauen";
                }else{
                    if(dt < beginn_ab){
                        farbe = c_messe;
                        gui = @"M";
                        tooltip = @"Messe laeuft";
                    }else{
                        if(dt <= ende_ab){
                            farbe = c_ab;
                            gui = @"-";
                            tooltip = @"abbauen";
                        }
                    }
                }
            }
// einfaerben  t.ausf_bis,t.ausf_von,t.bezeichnun,t.anzahl
            if(FILLED(t_array)){
                for(i2=0,j2=[t_array count];i2<j2;i2++){
                    NSDictionary *t = [t_array oai:i2]; // Taetigkeit
                    if([[t vfk:@"messe"]iE:[messe primaryKey]]){
                        long ausf_von = [[[[t vfk:@"ausf_von"] dbDateFromMySQLDate]secureSubstringToIndex:8]intValue];
                        long ausf_bis = [[[[t vfk:@"ausf_bis"] dbDateFromMySQLDate]secureSubstringToIndex:8]intValue];
                        if(dt >= ausf_von){
                            if(dt <= ausf_bis){
                                tooltip = [t vfk:@"bezeichnun"];
                                if([[t vfk:@"pid"]iE:[[datasource selObj] vfk:@"pid"]]){
                                    farbe = @"red";
                                }else{
                                    farbe = @"yellow";
                                }
                                break;
                            }
                        }
                    }
                }
            }
            s = [NSSWF termin_f,zellen_breite,farbe,tooltip,[messe vfk:@"messe"],[pbd dateAsDBString],gui];
            [alles addObject:s];
        }
        [alles addObject:@"</div>"];
    }
    [alles addObject:@"</div></div><input name=\"date_selected\" type=\"hidden\"><input name=\"messe_selected\" type=\"hidden\">"];
// in TV taetigkeiten gelb machen, die von inspected Ressource ausgefuehrt werden
    if(FILLED(t_array)){
        LMD;
        for(i=0,j=[t_array count];i<j;i++){
            NSDictionary *d = [t_array oai:i];
            NSString *t_pid = [d ofk:@"pid"];
            if(!FILLED(t_pid))continue;
            [lmd setObject:t_pid forKey:t_pid];
        }
        a = [datasource ma];
        for(i=0,j=[a count];i<j;i++){
            PBEO *eo = [a oai:i];
            [eo setEoColor:@"white"];
            if([lmd ofk:[eo primaryKey]])[eo setEoColor:@"yellow"];
        }
    }
    return [alles componentsJoinedByString:@"\n"];
}
@end
Foto