phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] property/inc/export/Agresso, 1.1


From: nomail
Subject: [Phpgroupware-cvs] property/inc/export/Agresso, 1.1
Date: Thu, 15 Jul 2004 14:03:25 +0200

Update of /property/inc/export
Added Files:
        Branch: 
          Agresso

date: 2004/07/15 12:03:25;  author: sigurdne;  state: Exp;

Log Message:
no message
=====================================================================
<?php

        class export_conv
        {
                //var $fil_katalog='c:/temp'; //On windows use 
"//computername/share/filename" or "\\\\computername\share\filename" to check 
files on network shares.
                function export_conv()
                {
                        $this->currentapp               = 
$GLOBALS['phpgw_info']['flags']['currentapp'];
                        $this->db                       = $GLOBALS['phpgw']->db;

                        $this->soXport = CreateObject('property.soXport');      
                        $this->$config = 
CreateObject('phpgwapi.config','property');
                        $this->$config->read_repository();
                        $this->bocommon                 = 
CreateObject($this->currentapp.'.bocommon');
                        
                }

                function 
select_periods_with_invoice_to_transfer($pre_transfer='')
                {
                        if($pre_transfer)
                        {
                                $sql= "SELECT DISTINCT periode from fm_ecobilag 
WHERE pre_transfer IS NULL ";
                        }
                        else
                        {
                                $sql= "SELECT DISTINCT periode from fm_ecobilag 
WHERE budsjettsigndato is not null and (saksigndato is not null or 
oppsynsigndato is not null) and utbetalingsigndato is not null ";
                        }
                        
                        $this->db->query($sql,__LINE__,__FILE__);
                        while ($this->db->next_record())
                        {
                                $periode[]      = $this->db->f('periode');
                        }
                        return $periode;
                }

                function log_end($batchid)
                {
                        $tid=date($this->soXport->datetimeformat);
                        $sql= "insert into fm_ecologg (batchid,melding,tid) 
values ('$batchid','End transfer','$tid')";
                        $this->db->query($sql,__LINE__,__FILE__);
                }

                function log_error($batchid,$error_desr)
                {
                        $tid=date($this->datetimeformat);
                        $sql= "insert into fm_ecologg 
(batchid,ecobilagid,status,melding,tid) values 
('$batchid',NULL,0,'$error_desr','$tid')";
                        $this->db->query($sql,__LINE__,__FILE__);
                }

                function increment_batchid()
                {

                        $this->db->query("update fm_idgenerator  set value = 
value + 1 where name = 'Ecobatchid'");
                        $this->db->query("select value from fm_idgenerator  
where name = 'Ecobatchid'");
                        $this->db->next_record();
                        $bilagsnr = $this->db->f('value');
                        return $bilagsnr;

                }

                function next_batchid()
                {

                        $this->db->query("select value from fm_idgenerator  
where name = 'Ecobatchid'");
                        $this->db->next_record();
                        $batchid = $this->db->f('value')+1;

                        return $batchid;
                }

                //Lagre start melding
                function log_start($batchid)
                {
                        $tid=date($this->soXport->datetimeformat);
                        $sql= "insert into fm_ecologg (batchid,melding,tid) 
values ('$batchid','Start transfer','$tid')";
                        $this->db->query($sql,__LINE__,__FILE__);
                }

                function select_invoice_roleback($day,$month,$year,$Filnavn)
                {

                        switch($GLOBALS['phpgw_info']['server']['db_type'])
                        {
                                case 'mssql':
                                        $datepart_year          = 
"datepart(year,overftid)";
                                        $datepart_month         = 
"datepart(month,overftid)";
                                        $datepart_day           = 
"datepart(day,overftid)";
                                        break;
                                case 'mysql':
                                        $datepart_year          = 
"YEAR(overftid)";
                                        $datepart_month         = 
"MONTH(overftid)";
                                        $datepart_day           = 
"DAYOFMONTH(overftid)";
                                        break;
                                case 'pgsql':
                                        $datepart_year          = 
"date_part('year',overftid)";
                                        $datepart_month         = 
"date_part('month',overftid)";
                                        $datepart_day           = 
"date_part('day',overftid)";
                                        break;
                        }


                        $sql="select * from fm_ecobilagoverf where 
filnavn='$Filnavn' and $datepart_year=$year and $datepart_month=$month and 
$datepart_day= $day";
                        $this->db->query($sql,__LINE__,__FILE__);

                        $i = 0;
                        while ($this->db->next_record())
                        {
                                $invoice_roleback[$i]['id']     = 
$this->db->f('id');
                                $invoice_roleback[$i]['bilagsnr']       = 
$this->db->f('bilagsnr');
                                $invoice_roleback[$i]['kidnr']  = 
$this->db->f('kidnr');
                                $invoice_roleback[$i]['typeid'] = 
$this->db->f('typeid');
                                $invoice_roleback[$i]['kildeid']        = 
$this->db->f('kildeid');
                                $invoice_roleback[$i]['pmwrkord_code']  = 
$this->db->f('pmwrkord_code');
                                $invoice_roleback[$i]['belop']  = 
$this->db->f('belop');
                                $invoice_roleback[$i]['fakturadato']    = 
$this->db->f('fakturadato');
                                $invoice_roleback[$i]['periode']        = 
$this->db->f('periode');
                                $invoice_roleback[$i]['forfallsdato']   = 
$this->db->f('forfallsdato');
                                $invoice_roleback[$i]['fakturanr']      = 
$this->db->f('fakturanr');
                                $invoice_roleback[$i]['spbudact_code']  = 
$this->db->f('spbudact_code');
                                $invoice_roleback[$i]['regtid'] = 
$this->db->f('regtid');
                                $invoice_roleback[$i]['artid']  = 
$this->db->f('artid');
                                $invoice_roleback[$i]['godkjentbelop']  = 
$this->db->f('godkjentbelop');
                                $invoice_roleback[$i]['spvend_code']    = 
$this->db->f('spvend_code');
                                $invoice_roleback[$i]['dima']   = 
$this->db->f('dima');
                                $invoice_roleback[$i]['loc1']   = 
$this->db->f('loc1');
                                $invoice_roleback[$i]['dimb']   = 
$this->db->f('dimb');
                                $invoice_roleback[$i]['mvakode']        = 
$this->db->f('mvakode');
                                $invoice_roleback[$i]['dimd']   = 
$this->db->f('dimd');
                                if($this->db->f('oppsynsmannid'))
                                {
                                        $invoice_roleback[$i]['oppsynsmannid']  
= $this->db->f('oppsynsmannid');
                                }
                                if($this->db->f('saksbehandlerid'))
                                {
                                        
$invoice_roleback[$i]['saksbehandlerid']        = 
$this->db->f('saksbehandlerid');
                                }

                                $invoice_roleback[$i]['budsjettansvarligid']    
= $this->db->f('budsjettansvarligid');

                                if($this->db->f('oppsynsigndato'))
                                {
                                        $invoice_roleback[$i]['oppsynsigndato'] 
= $this->db->f('oppsynsigndato');
                                }
                                if($this->db->f('saksigndato'))
                                {
                                        $invoice_roleback[$i]['saksigndato']    
= $this->db->f('saksigndato');
                                }

                                $invoice_roleback[$i]['budsjettsigndato']       
= $this->db->f('budsjettsigndato');
                                $invoice_roleback[$i]['merknad']        = 
$this->db->f('merknad');
                                $invoice_roleback[$i]['splitt'] = 
$this->db->f('splitt');
                                $invoice_roleback[$i]['ordrebelop']     = 
$this->db->f('ordrebelop');
                                $invoice_roleback[$i]['utbetalingid']   = 
$this->db->f('utbetalingid');
                                $invoice_roleback[$i]['utbetalingsigndato']     
= $this->db->f('utbetalingsigndato');
                                $i++;
                        }
                        return $invoice_roleback;
                }


                //roleback function
                function bilag_update_overf($BilagOverf)
                {
                        $values= array(
                                $BilagOverf['pmwrkord_code'],
                                $BilagOverf['bilagsnr'],
                                $BilagOverf['splitt'],
                                $BilagOverf['kildeid'],
                                $BilagOverf['kidnr'],
                                $BilagOverf[typeid],
                                $BilagOverf['fakturadato'],
                                $BilagOverf['forfallsdato'],
                                $BilagOverf['regtid'],
                                $BilagOverf['artid'],
                                $BilagOverf['spvend_code'],
                                $BilagOverf['dimb'],
                                $BilagOverf['oppsynsmannid'],
                                $BilagOverf['saksbehandlerid'],
                                $BilagOverf['budsjettansvarligid'],
                                $BilagOverf['fakturanr'],
                                $BilagOverf['spbudact_code'],
                                $BilagOverf['dima'],
                                $BilagOverf['loc1'],
                                $BilagOverf['dimd'],
                                $BilagOverf['mvakode'],
                                $BilagOverf['periode'],
                                $BilagOverf['merknad'],
                                $BilagOverf['utbetalingid'],
                                $BilagOverf['oppsynsigndato'],
                                $BilagOverf['saksigndato'],
                                $BilagOverf['budsjettsigndato'],
                                $BilagOverf['utbetalingsigndato'],
                                );
                        
                        $values = $this->bocommon->validate_db_insert($values);

                        $sql= "INSERT INTO fm_ecobilag 
(pmwrkord_code,bilagsnr,splitt,kildeid,kidnr,typeid,"
                        . " 
fakturadato,forfallsdato,regtid,artid,spvend_code,dimb,oppsynsmannid,"
                        . " 
saksbehandlerid,budsjettansvarligid,fakturanr,spbudact_code,dima,loc1,dimd,mvakode,"
                        . " 
periode,merknad,utbetalingid,oppsynsigndato,saksigndato,budsjettsigndato,utbetalingsigndato,belop,godkjentbelop)"
                        . " values ($values,"
                        . $this->bocommon->moneyformat($BilagOverf['belop']) . 
","
                        . 
$this->bocommon->moneyformat($BilagOverf['godkjentbelop']) . ")";

                        $this->db->query($sql,__LINE__,__FILE__);
                }


                //Oppdater beløp på arbeidsordre operator="-" ved tilbakerulling
                function 
correct_actual_cost($pmwrkord_code,$Belop,$actual_cost_field,$operator)
                {
                        $Belop=$Belop/100;

                        $sql="update fm_workorder set 
$actual_cost_field=$actual_cost_field $operator $Belop where 
id='$pmwrkord_code'";
                        $this->db->query($sql,__LINE__,__FILE__);
                }

                // Hent leverandørklasse

                function select_vendor_class($spvend_code)
                {
                        $sql= "select klasse from fm_vendor where 
id=$spvend_code";
                        $this->db->query($sql,__LINE__,__FILE__);
                        $this->db->next_record();
                        $pmlabor_code = $this->db->f('klasse');

                        return $pmlabor_code;
                }

                function overfor($download,$pre_transfer='')
                {
//                      $pre_transfer=True;
                        
                        //Generer batch ID
                        $batchid = $this->soXport->next_batchid();
                        if ($download=='on')
                        {
                                $this->increment_batchid();
                                //Lagre melding
                                $this->log_start($batchid);
                        }

                        //Velg ut alle perioder som har bilag som skal overføres

                        $periode = 
$this->select_periods_with_invoice_to_transfer($pre_transfer);
//_debug_array($periode);               
                        for ($i=0;$i<count($periode);$i++)
                        {
                                $receipt['message'][]= array('msg' => 
$this->OverforPeriode($batchid,$periode[$i],$download,$pre_transfer));
                        }

                        //Lagre melding
                        if ($download=='on' || $pre_transfer)
                        {
                                $this->log_end($batchid); //Lagre melding
                        }

                        return $receipt;
                }
                
                function errorhandler($error_desr)
                {
                        $meld = $error_desr;
                
                        //Vis feilmelding
//                      echo $meld;
                
                        //Lagre feilmelding
                        $this->log_error($batchid,$error_desr);
                }
                
                function RullTilbake($Filnavn,$Dato)
                {                                                               
                        $dateformat = 
strtolower($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
                        $dateformat = str_replace(".","",$dateformat);
                        $dateformat = str_replace("-","",$dateformat);
                        $dateformat = str_replace("/","",$dateformat);
                        $y=strpos($dateformat,'y');
                        $d=strpos($dateformat,'d');
                        $m=strpos($dateformat,'m');
        
                        $dateparts = explode('/', $Dato);
                        $day = $dateparts[$d];
                        $month = $dateparts[$m];
                        $year = $dateparts[$y];
         /*             $date1 = mktime (2,0,0,$month,$day,$year);
                        if ($date1)
                        {
                                $Dato=$date1;
                        }
        
                        $Dato= date("M d Y",$Dato);
        */
                        
                        
$BilagOverf=$this->select_invoice_roleback($day,$month,$year,$Filnavn);
                        $this->db->transaction_begin();

                        for ($i=0;$i<count($BilagOverf);$i++)
                        {
                                $this->bilag_update_overf($BilagOverf[$i]);
                                
                
                                if($BilagOverf[$i]['pmwrkord_code'])
                                {
                                        if ($BilagOverf[$i]['artid']==1)
                                        {
                                                $Belop = sprintf("%01.2f", 
$BilagOverf[$i]['ordrebelop'])*100;
                                        }
                                        else
                                        {
                                                $Belop = sprintf("%01.2f", 
-$BilagOverf[$i]['ordrebelop'])*100;
                                        }
                                
                                        if ($BilagOverf[$i]['dimd'] % 2 == 0)
                                        {
                                                
$actual_cost_field='act_mtrl_cost';
                                        }
                                        else
                                        {
                                                
$actual_cost_field='act_vendor_cost';
                                        }
                
                                        $operator='-';

                                        
$this->correct_actual_cost($BilagOverf[$i]['pmwrkord_code'],$Belop,$actual_cost_field,$operator);
                                }
                
                                //Slett fra avviks tabell
                        //      
$this->soXport->delete_avvik($BilagOverf[$i]['bilagsnr']);
                
                                //Slett fra arkiv
                                
$this->soXport->delete_invoice($BilagOverf[$i]['bilagsnr']);
                
                                $antall = $antall + 1;
                        }
                
                        if($antall > 0)
                        {               
                                $fil_katalog = 
$this->$config->config_data['export_path'];                      
                        
                                if(unlink ($fil_katalog. SEP . $Filnavn))
                                {
                                        $this->db->transaction_commit();
                                        $receipt['message'][]= array('msg' => 
$antall . ' ' . lang('bilag/underbilag rullet tilbake'));
                                        $receipt['message'][]= array('msg' => 
lang('File %1 is deleted',$Filnavn));
                                }
                                else
                                {
                                        $this->db->transaction_abort();
                                        $receipt['message'][]= array('msg' => 
'Noe gikk galt!');
                                }                                               
        
                        }
                        else
                        {
                                $receipt['error'][]= array('msg' => lang('Sorry 
- None hits'));
                        }
                        return $receipt;
                }
                                
                
                function LagFilnavn ($batchid,$pre_transfer='')
                {       
                        if(!$pre_transfer)
                        {
                                $fil_katalog = 
$this->$config->config_data['export_path'];
                                //Beregn løpenr
                                $StartLopeNr = ($batchid % 30) + 70;
                                $LopeNr = $StartLopeNr;
                        
                                do
                                {
                                        //Konstruer filnavn
                                        $Filnavn = $fil_katalog . '/DTF1'. 
sprintf("%2d",$LopeNr) . '10.TXT';
                        
                                        //Sjekk om filen eksisterer
                                        If (!file_exists($Filnavn))
                                        {
                                                return $Filnavn;
                                        }
                        
                                        //Genererer nytt løpenr
                                        $batchid = $batchid + 1;
                                        $LopeNr = ($batchid % 30) + 70;
                                }
                                while  ($LopeNr != $StartLopeNr);
                        }
                        else
                        {
                                $fil_katalog = 
$this->$config->config_data['export_pre_path'];
                                $continue = True;
                                $i = 1;
                                do
                                {
                                        $Filnavn = $fil_katalog . '/bbb_' . 
date("dmY") . '_' . $i;
                                
                                        //Sjekk om filen eksisterer
                                        If (!file_exists($Filnavn))
                                        {
                                                return $Filnavn;
                                        }
                                
                                        $i++;
                                }
                                while  ($continue);
                        }
                        
                        
                        //Ingen løpenr er ledige, gi feilmelding
                        return False;
                }
                
                function 
OverforPeriode($batchid,$periode,$download,$pre_transfer='')
                {
                        $BilagId = 'NULL';
        
                        //Bestem filnavn
                        
                        $Filnavn = $this->LagFilnavn($batchid,$pre_transfer);
                        if (!$Filnavn)
                        {
                                $message='LagFilnavn'.lang('Alle løpenr for 
filnavn er i bruk!');
                                $this->errorhandler($message);
                                return $message;
                        }

                        //Test om filen kan opprettes og skrives til
                        if (@fopen($Filnavn, "wb"))
                        {
                                unlink($Filnavn);
                        }
                        else
                        {
                                $message='kan ikke lagre til fil: '. $Filnavn 
.'<br>';
                                return $message;
                        }
                        
                        //Velg ut alle hoved bilag som skal overføres
                
                        
$oRsBilag=$this->soXport->hoved_bilag($periode,$pre_transfer);
                                                                        
                        $this->db->transaction_begin();

                        $bilag_count= count($oRsBilag);
                        for ($k=0;$k<$bilag_count;$k++)
                        {                               
                                $pre_tranfser_bilag[] = 
$oRsBilag[$k]['bilagsnr'];
                                //Hent leverandørklasse
                                
                                $pmlabor_code 
=$this->select_vendor_class($oRsBilag[$k]['spvend_code']);
                                
                                //Bestem belops felt
                                if ($oRsBilag[$k]['splitt']==0)
                                {
                                        //Bilaget er ikke splittet
                                        if ($oRsBilag[$k]['godkjentbelop'] <> 
$oRsBilag[$k]['belop'])
                                        {
                                                $BelopFelt = 'godkjentbelop';   
                
                                                //Logg til avviks tabell
                                                if ($download=='on' && 
!$pre_transfer)
                                                {
//                                                      
$this->soXport->log_to_deviation_table($oRsBilag[$k]);
                                                }
                                        }
                                        else
                                        {
                                                $BelopFelt = 'belop';
                                        }
                                }
                                
                                //Bilaget er splittet
                                if ($oRsBilag[$k]['godkjentbelop'] == 
$oRsBilag[$k]['belop'])
                                {
                                        $BelopFelt = 'godkjentbelop';
                                }
                                else
                                {
                                         //Ikke lovlig
                                        $message = lang('Avvik mellom 
fakturabeløp og godkjent beløp på splittet faktura!');
                                        $this->errorhandler($message);
                                        return $message;
                                }
                
                                //Formater beløp
                                if ($oRsBilag[$k]['artid'] == 1)
                                {
                                        $Belop = sprintf("%01.2f", 
-$oRsBilag[$k][$BelopFelt]);
                                }
                                else
                                {
                                        $Belop = sprintf("%01.2f", 
$oRsBilag[$k][$BelopFelt]);
                
                                }
                
                                $Belop =$Belop *100; 
                
                                //Skriv hovedbilag

                                $Buntnr         = 
sprintf("%-12s",date("md",time()) . 'P' . 
substr($oRsBilag[$k]['bilagsnr'],-6));// verdi: MMDDFL, type: c12, plass: 1 - 12
                                $Forsystem      = 'BI';// verdi: BI, type: c2, 
plass: 13 - 14
                                $Bilagsart      = sprintf("%2s",'');// verdi: , 
type: c2, plass: 15 - 16
                                $Transtype      = 'AP';// verdi: GL, type: c2, 
plass: 17 - 18
                                $Firmakode      = sprintf("%-2s",'');// verdi: 
Firmakode, type: c2, plass: 19 - 20
                                $Konto          = sprintf("%-8s",'');// verdi: 
Art, type: c8, plass: 21 - 28
                                $Dim_1          = sprintf("%-8s",'');// verdi: 
Ansvarssted, type: c8, plass: 29 - 36
                                $Dim_2          = sprintf("%-8s",'');// verdi: 
Tjeneste, type: c8, plass: 37 - 44
                                $Dim_3          = sprintf("%-8s",'');// verdi: 
Objekt, type: c8, plass: 45 - 52
                                $Dim_4          = sprintf("%-8s",'');// verdi: 
Ressurs, type: c8, plass: 53 - 60
                                $Dim_5          = sprintf("%-12s",'');// verdi: 
Prosjekt, type: c12, plass: 61 - 72
                                $Dim_6          = sprintf("%-4s",'');// verdi: 
Blank, type: c4, plass: 73 - 76
                                $Dim_7          = sprintf("%-4s",'');// verdi: 
Blank, type: c4, plass: 77 - 80

                                $Valuteringsdato= 
date(Ymd,strtotime($oRsBilag[$k]['fakturadato']));// verdi: Dato, type: date, 
plass: 251 - 258
                                $Bilagsdato     = 
date(Ymd,strtotime($oRsBilag[$k]['fakturadato'])) ;// verdi: Dato, type: date, 
plass: 259 - 266
                                $Bilagsnr       = 
sprintf("%09s",substr($oRsBilag[$k]['bilagsnr'],-6));// verdi: Bilagsnummer, 
type: i4, plass: 267 - 275
                                $Periode        = 
sprintf("%06s",date(Y,strtotime($oRsBilag[$k]['fakturadato'])) . 
sprintf("%02d",$periode));// verdi: Periode, type: i4, plass: 276 - 281
                                $ESL            = sprintf("%1s",'');// verdi: 
Blank, type: i+C481, plass: 282 - 282
                                $Forfall        = 
date(Ymd,strtotime($oRsBilag[$k]['forfallsdato']));// verdi: Forfallsdato , 
type: date, plass: 298 - 305
                                $Fakturanr      = 
sprintf("%-15s",$oRsBilag[$k]['fakturanr']);// verdi: Fakturanr, type: c15, 
plass: 283 - 297
                                $Rab_forf       = sprintf("%-8s",'');// verdi: 
Blank, type: date, plass: 306 - 313
                                $Rabatt         = sprintf("%020s",'');// verdi: 
Blank, type: money, plass: 314 - 333
                                $Avt_Kon        = sprintf("%-8s",'');// verdi: 
Blank, type: c8, plass: 334 - 341

                                $Kid            = 
sprintf("%-27s",$oRsBilag[$k]['kidnr']);// verdi: Kid, type: c27, plass: 351 - 
377
                                $Bet_overforing = sprintf("%-2s",'');// verdi: 
Blank, type: c2, plass: 378 - 379
                                $Status         = 'N';// verdi: N, type: c1, 
plass: 380 - 380
                                $Resk_type      = 'P';// verdi: Blank, type: 
c1, plass: 381 - 381
                                $Resk_nr        = 
sprintf("%09s",$oRsBilag[$k]['spvend_code']);// verdi: Blank., type: i4, plass: 
382 - 390
                                $Forskudd       = '0';// verdi: 0, type: i1, 
plass: 391 - 391
                                $Fakturaref     = '000000000';// verdi: 0, 
type: i4, plass: 392 - 400
                                $Fakturaref     = '000000000';// verdi: 0, 
type: i4, plass: 401 - 409
                                $Inkassokode    = sprintf("%-6s",'');// verdi: 
Blank, type: c6, plass: 410 - 415
                                $Bet_mottager   = sprintf("%-8s",'');// verdi: 
Blank, type: c8, plass: 416 - 423
                                $Att_ansvarlig  = 
sprintf("%-6s",$oRsBilag[$k]['saksbehandler']);// verdi: Blank, type: c6, 
plass: 424 - 429


                                $Resk_navn      = sprintf("%-50s",'');// verdi: 
Fødselsnr, type: c50, plass: 430 - 479
                                $Postadresse    = sprintf("%-160s",'');// 
verdi: Blank, type: c160, plass: 480 - 639
                                $Stat_Provins   = sprintf("%-50s",'');// verdi: 
Blank, type: c50, plass: 640 - 689
                                $Sted           = sprintf("%-50s",'');// verdi: 
Blank, type: c50, plass: 690 - 739
                                $Bank_Postgiro_kontonr = sprintf("%-35s",'');// 
verdi: Blank, type: c35, plass: 740 - 774
                                $Betalingsmåte  = sprintf("%-2s",'');// verdi: 
Blank, type: c2, plass: 775 - 776
                                $Mva_reg_nr     = sprintf("%-25s",'');// verdi: 
Blank, type: c25, plass: 777 - 801
                                $Postnummer     = sprintf("%-15s",'');// verdi: 
Blank, type: c15, plass: 802 - 816
                                $Val_dok        = sprintf("%-3s",'');// verdi: 
Blank, type: c3, plass: 817 - 819


                                //Velg ut alle underbilag
                                
$oRsUnderbilag=$this->soXport->select_underbilag($oRsBilag[$k]['bilagsnr']);    
        

                                $underbilag_count= count($oRsUnderbilag);

                                for ($i=0;$i<$underbilag_count;$i++)
                                {
                                        $BilagId = $oRsUnderbilag[$i]['id'];
                                        
                                        $Belop = sprintf("%01.2f", 
$oRsUnderbilag[$i][$BelopFelt])*100;
                                        $Belop = sprintf("%019s",$Belop);
                                        
                                        if ($oRsUnderbilag[$i]['artid'] == 1)
                                        {               
                                                $Belop = '+' . $Belop;
                                        }
                                        else
                                        {
                                                $Belop = '-' . $Belop;
                                        }
                                        
                                        if($oRsUnderbilag[$i]['pmwrkord_code'])
                                        {
                                                //Hent DIM C
                                                $dimc = 
$this->soXport->select_dimc($oRsUnderbilag[$i]['pmwrkord_code']);
                
                                                //Oppdater beløp på arbeidsordre
                                                if ($download=='on')
                                                {
                                                        if 
($oRsUnderbilag[$i]['dimd'] % 2 == 0)
                                                        {
                                                                
$actual_cost_field='act_mtrl_cost';
                                                        }
                                                        else
                                                        {
                                                                
$actual_cost_field='act_vendor_cost';
                                                        }
                                                        $operator='+';
                                                        
$this->correct_actual_cost($oRsUnderbilag[$i]['pmwrkord_code'],$Belop,$actual_cost_field,$operator);
                                                }
                                        }
                                        else
                                        {
                                                $dimc = '';
                                        }
                
                                        //Overfør til fm_ecobilagoverf
                
                                        $oRsOverfBilag=$oRsUnderbilag[$i];
                                        $oRsOverfBilag['filnavn']= 
basename($Filnavn);
                                        
$oRsOverfBilag['ordrebelop']=$oRsUnderbilag[$i][$BelopFelt];
                                        
$oRsOverfBilag['dima']=substr($oRsOverfBilag['dima'],0,6);

                                        
$Avgiftskode=sprintf("%-2s",$oRsOverfBilag['mvakode']);// verdi: Avgiftskode, 
type: c2, plass: 81 - 82
                                        
                                        $Avgiftssystem  = sprintf("%2s",'');// 
verdi: Blank, type: c2, plass: 83 - 84
                                        $Valutakode     ='NOK';// verdi: NOK, 
type: c3, plass: 85 - 87
                                        $Debet_Kredit   = sprintf("%2s",'');// 
verdi: Blank, type: i2, plass: 88 - 89
                                        $Valutabelop    = $Belop;// verdi: 
Beløp, type: money, plass: 90 - 109
                                        $Belop_i_firmavaluta=$Belop;// verdi: 
Beløp, type: money, plass: 110 - 129
                                        $Antall         = sprintf("%11s",'');// 
verdi: Blank, type: i4, plass: 130 - 140
                                        $Belop2         = sprintf("%20s",'');// 
verdi: Blank, type: f8, plass: 141 - 160
                                        $Belop3         = sprintf("%20s",'');// 
verdi: Blank, type: money, plass: 161 - 180
                                        $Belop4         = sprintf("%20s",'');// 
verdi: Blank, type: money, plass: 181 - 200
                                        $Tekst          = 
sprintf("%-50s",substr($oRsOverfBilag['merknad'],0,50));// verdi: Tekst, type: 
text (50), plass: 201 - 250

                                        $Ordrenummer    = 
sprintf("%09s",$oRsOverfBilag['pmwrkord_code']);// verdi: Infodoc ordrenr, 
type: i4, plass: 342 - 350
        
                                        //Kopier verdier
                                        if ($download=='on' && !$pre_transfer)
                                        {
                                                
$this->soXport->add_OverfBilag($oRsOverfBilag);
                                        }
                                        
                                        if ($download=='on' && $pre_transfer)
                                        {
                                                $this->db->query("update 
fm_ecobilag  set pre_transfer = 1 where id =" . $oRsOverfBilag['id']);
                                        }
                                        //Skriv til fil
                                        
/*                                      $f1kto          = 
$oRsOverfBilag['spbudact_code'];
                                        $f1dima         = 
substr($oRsOverfBilag['dima'],0,6);
                                        $f1dimb         = 
$oRsOverfBilag['dimb'];
                                        $f1dimc         = $dimc;
                                        $f1dimd         = 
$oRsOverfBilag['dimd'];
                                        $f1avgkod       = 
$oRsOverfBilag['mvakode'];
                                        $f1belop        = $Belop;
                                        $f1tekst        = 
'';//$oRsOverfBilag['merknad'];
*/                                      
                                        $buffer .= $Buntnr . $Forsystem . 
$Bilagsart . $Transtype . $Firmakode . $Konto . $Dim_1 . $Dim_2 . $Dim_3 . 
$Dim_4 . 
                                        $Dim_5 . $Dim_6 . $Dim_7 . $Avgiftskode 
. $Avgiftssystem . $Valutakode . $Debet_Kredit . $Valutabelop . 
                                        $Belop_i_firmavaluta . $Antall . 
$Belop2 . $Belop3 . $Belop4 . $Tekst . $Valuteringsdato . $Bilagsdato . 
                                        $Bilagsnr . $Periode . $ESL . 
$Fakturanr . $Forfall . $Rab_forf . $Rabatt . $Avt_Kon . $Ordrenummer . 
                                        $Kid . $Bet_overforing . $Status . 
$Resk_type . $Resk_nr . $Forskudd . $Fakturaref . $Fakturaref . 
                                        $Inkassokode . $Bet_mottager . 
$Att_ansvarlig . $Resk_navn . $Postadresse . $Stat_Provins . $Sted . 
                                        $Bank_Postgiro_kontonr . $Betalingsmåte 
. $Mva_reg_nr . $Postnummer . $Val_dok ."\r\n";

                                
                                        //Slett post i fm_ecobilag
                                        if ($download=='on' && !$pre_transfer)
                                        {
                                                
$this->soXport->delete_from_fm_ecobilag($oRsUnderbilag[$i]['id']);              
                                                //Logg transaksjon              
                                                
$this->soXport->log_transaction($batchid,$BilagId,lang('Invoice tranferred'));
                                        }
                
                                        $BilagId = 'NULL';
                
                                        $antall = $antall + 1;
                                }
                        }
                                
                        //Fullfør transaksjon
                        
                
                        if ($download=='on' && !$pre_transfer):
                        {
                                $message = 'periode: '.$periode_aar.' antall 
bilag/underbilag overført:'.$antall . ' , fil: ' . $Filnavn;
                                $fp = fopen($Filnavn, "wb");
                                fwrite($fp,$buffer);
                                if(fclose($fp))
                                {
                                        $this->db->transaction_commit();

                                }
                                else
                                {
                                        $this->db->transaction_abort();
                                        $message = 'Noe gikk galt!';            
                
                                }
                        }
                        elseif($download=='on' && $pre_transfer):
                        {
                                //filoverføring
                                $pre_transfer_ok = 
$this->pre_transfer($buffer,$Filnavn,$batchid,$pre_tranfser_bilag);
                                if($pre_transfer_ok)
                                {
                                        $this->db->transaction_commit();

                                        $message = 'Jepp!';                     
        
                                }
                                else
                                {
                                        $this->db->transaction_abort();
                                        $message = 'Noe gikk galt!';            
                
                                }

                        }
                        else:
                        {
                                $this->db->transaction_abort();
                                $message = $buffer;
                        }
                        endif;

                        return $message;
                }
                
                function 
pre_transfer($buffer,$Filnavn,$batchid,$pre_tranfser_bilag)
                {                       
                        $fp = fopen($Filnavn, "wb");
                        fwrite($fp,$buffer);
                        if(fclose($fp))
                        {
                                $pre_transfer_ok = True;
                        }

//_debug_array($pre_tranfser_bilag);

                        
if($this->$config->config_data['invoice_export_method']=='ftp')
                        {
                                $ftp    = $this->phpftp_connect();      
                                
                                $basedir = 
$this->$config->config_data['invoice_ftp_basedir'];
                                $newfile = $basedir . '/' . basename($Filnavn);
//_debug_array($newfile);                       
                                if (ftp_put($ftp,$newfile, $Filnavn, 
FTP_BINARY))
                                {
                                        for 
($i=0;$i<count($pre_tranfser_bilag);$i++)
                                        {                               
                                                
$this->soXport->log_transaction($batchid,$pre_tranfser_bilag[$i],lang('Invoice 
pre_transferred %1',basename($Filnavn)));
                                        }
                                        $pre_transfer_ok = True;
                                }
                                else
                                {
                                        for 
($i=0;$i<count($pre_tranfser_bilag);$i++)
                                        {                               
                                                
$this->soXport->log_transaction($batchid,$pre_tranfser_bilag[$i],lang('Failed 
to pre_transfere %1 to agresso',basename($Filnavn)));
                                        }
                                        $pre_transfer_ok = False;
                                }
                                if(!$pre_transfer_ok)
                                {
                                        unlink($Filnavn);
                                }
                        
                                ftp_quit($ftp);
                        }
                        return  $pre_transfer_ok;
                }

                function phpftp_connect() 
                {
                        $host = $this->$config->config_data['invoice_ftp_host'];
                        $user = $this->$config->config_data['invoice_ftp_user'];
                        $pass = $this->$config->config_data['invoice_ftp_pw'];
                        
//                      echo "connecting to $host with $user and $pass\n <br>";
                        $ftp = ftp_connect($host);
                        if($ftp) 
                        {
                                if (ftp_login($ftp,$user,$pass)) 
                                {
                                        return $ftp;
                                }
                        }
                }
        }
?>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]