1159 lines
40 KiB
PHP
1159 lines
40 KiB
PHP
<?php
|
|
ini_set('display_errors',1);
|
|
ini_set('memory_limit', '-1');
|
|
if (!$_REQUEST['settings'] || $_REQUEST['settings']=="")
|
|
die('Błąd parametrów');
|
|
|
|
$tmp = base64_decode($_REQUEST['settings']);
|
|
$settings = objectToArray(json_decode($tmp));
|
|
global $timedate;
|
|
|
|
class export{
|
|
|
|
public $db;
|
|
public $moduleName;
|
|
public $moduleObject;
|
|
public $table;
|
|
public $where;
|
|
public $query;
|
|
public $modules;
|
|
public $fieldsListForModule;
|
|
public $fp;
|
|
public $filename;
|
|
public $order;
|
|
public $direction;
|
|
public $ids;
|
|
|
|
public function __construct($module,$table,$where,$ids,$order,$direction) {
|
|
|
|
$this->db=$GLOBALS['db'];
|
|
$this->table=$table;
|
|
$this->where=$where;
|
|
$this->moduleName=$module;
|
|
$this->ids=$ids;
|
|
$this->order=$order;
|
|
$this->direction=$direction;
|
|
$this->moduleObject=$this->constructObject();
|
|
$this->modules=$this->setModules();
|
|
|
|
}
|
|
|
|
public function setModules(){
|
|
$tmp=array();
|
|
// bez dodatkowej tabeli
|
|
$tmp[0][]='Accounts';
|
|
$tmp[0][]='EcmProducts';
|
|
// z dodatkową tabelą
|
|
|
|
return $tmp;
|
|
}
|
|
|
|
public function constructObject(){
|
|
if($this->moduleName!=''){
|
|
$moduleObject=substr($this->moduleName, 0, -1);
|
|
$this->moduleObject=new $moduleObject ();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public function setHeader($header){
|
|
if($this->moduleName=='Accounts'){
|
|
$name='lista_kontrahentow_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmProducts'){
|
|
$name='lista_produktow_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmQuotes'){
|
|
$name='lista_ofert_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmInvoiceOuts'){
|
|
$name='lista_faktur_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmSales'){
|
|
$name='lista_zamowien_sprzedazy'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmPrepaymentInvoices'){
|
|
$name='lista_faktur_zaliczkowych_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmPrepaymentInvoices'){
|
|
$name='lista_faktur_zaliczkowych_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmAgreemets'){
|
|
$name='lista_umow_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmWorkers'){
|
|
$name='lista_prcownikow_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='Documents'){
|
|
$name='lista_dokumentow_'.date('d_m_y');
|
|
}
|
|
|
|
if($this->moduleName=='EcmPurchaseOrders'){
|
|
$name='lista_zamowien_zakupu_'.date('d_m_y');
|
|
}
|
|
if($this->moduleName=='EcmPaymentStates'){
|
|
$name='lista_sald_'.date('d_m_y');
|
|
}
|
|
|
|
|
|
|
|
$this->filename='modules/Home/Files/'.$name.'.csv';
|
|
$this->fp=fopen($this->filename,'w');
|
|
foreach ($header as $k=>$v){
|
|
$header[$k]=iconv('UTF-8','windows-1250',$header[$k]);;
|
|
}
|
|
fwrite($this->fp, implode(";",$header).PHP_EOL);
|
|
}
|
|
|
|
public function writeLine($lines){
|
|
|
|
foreach ($lines as $k=>$v){
|
|
if(gettype($lines[$k])=='integer' || gettype($lines[$k])=='float' || gettype($lines[$k])=='double'){
|
|
$lines[$k]=str_replace(".",",",number_format($lines[$k], 2, '.', ''));
|
|
} else {
|
|
|
|
$lines[$k]=preg_replace("/[^A-ZłŁąĄęĘżŻ,:@.źŹ%ćĆńŃśŚóÓa-z0-9\-\/]/",' ',preg_replace("/\r\n|\r|\n/",' ',$lines[$k]));
|
|
$lines[$k]='"=""'.$lines[$k].'"""';
|
|
|
|
}
|
|
$lines[$k]=iconv('UTF-8//IGNORE','windows-1250',$lines[$k]);
|
|
}
|
|
|
|
fwrite($this->fp, implode(";",$lines).PHP_EOL);
|
|
}
|
|
public function getResults(){
|
|
|
|
if($this->moduleName=='Accounts'){
|
|
|
|
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='nazwa';
|
|
$header[]='ulica';
|
|
$header[]='kod';
|
|
$header[]='nip';
|
|
$header[]='główny email';
|
|
$header[]='telefon';
|
|
$header[]='regon';
|
|
$header[]='rodzaj kontrahenta';
|
|
$header[]='imie nazwisko kontaktu';
|
|
$header[]='numer kontaktu';
|
|
$header[]='email kontaktu';
|
|
$this->setHeader($header);
|
|
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
|
|
|
|
|
|
$this->query='SELECT id,name,register_address_street,concat(register_address_postalcode,", ",register_address_city) as inndex_dbf,to_vatid,phone_office as email1, phone_office,regon,account_type FROM '.$this->table.' WHERE deleted=0'.$where.' ';
|
|
|
|
$z=$this->db->query($this->query);
|
|
$i=1;
|
|
$ac = new Account();
|
|
$c = new Contact();
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
|
|
|
|
$ac->retrieve($dane['id']);
|
|
|
|
$dane['name']= html_entity_decode($dane['name']);
|
|
$dane['index_dbf']= html_entity_decode($dane['index_dbf']);
|
|
$dane['email1']=$ac->email1;
|
|
$dane['account_type']=$app_list_strings['account_type_dom'][$dane['account_type']];
|
|
$query2="select contact_id from accounts_contacts where deleted=0 and account_id='".$dane['id']."'";
|
|
$z2=$this->db->query($query2);
|
|
|
|
$dane['osoba']='';
|
|
$dane['telefon']='';
|
|
$dane['email']='';
|
|
|
|
|
|
if($z2->num_rows>0){
|
|
|
|
while($dane2=$this->db->fetchByAssoc($z2)){
|
|
|
|
|
|
$c->retrieve($dane2['contact_id']);
|
|
$dane['osoba']=$c->first_name." ".$c->last_name;
|
|
$dane['telefon']=$dane2['phone_mobile'];
|
|
$dane['email']=$c->email1;
|
|
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
} else {
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
}
|
|
|
|
$i++;
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='EcmProducts'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='nazwa';
|
|
$header[]='indeks';
|
|
$header[]='grupa';
|
|
$header[]='jednostka miary';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
$this->query='SELECT id,name,code,ks_group,unit_id FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
|
|
$ac = new EcmProduct();
|
|
$ac->retrieve($dane['id']);
|
|
$dane['name']= html_entity_decode($dane['name']);
|
|
$dane['code']= html_entity_decode($dane['code']);
|
|
$dane['ks_group']= $app_list_strings['ecmproducts_group_ks_dom'][$dane['ks_group']];
|
|
$dane['unit_id']= $app_list_strings['ecmproducts_unit_dom'][$dane['unit_id']];
|
|
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='EcmQuotes'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='numer oferty';
|
|
$header[]='data';
|
|
$header[]='kontrahent';
|
|
$header[]='Wartość netto';
|
|
$header[]='Wartość vat';
|
|
$header[]='Wartość brutto';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
|
|
$this->query='SELECT id,document_no,register_date,parent_name,total_netto,vats_summary,total_brutto FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
$dane['total_netto']=(float)$dane['total_netto'];
|
|
$dane['total_brutto']=(float)$dane['total_brutto'];
|
|
$arr= explode(':', $dane['vats_summary']);
|
|
$dane['vats_summary']=(float) str_replace(',', '', $arr[1]);
|
|
$ac = new EcmProduct();
|
|
$ac->retrieve($dane['id']);
|
|
$dane['parent_name']= html_entity_decode($dane['parent_name']);
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='EcmSales'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='data';
|
|
$header[]='numer';
|
|
$header[]='kontrahent';
|
|
$header[]='Wartość netto';
|
|
$header[]='Wartość vat';
|
|
$header[]='Wartość brutto';
|
|
$header[]='data realizacji';
|
|
$header[]='status';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
|
|
$this->query='SELECT id,register_date,document_no,parent_name,total_netto,vats_summary,total_brutto,delivery_date,status FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
$dane['total_netto']=(float)$dane['total_netto'];
|
|
$dane['total_brutto']=(float)$dane['total_brutto'];
|
|
$arr= explode(':', $dane['vats_summary']);
|
|
$dane['vats_summary']=(float) str_replace(',', '', $arr[1]);
|
|
$ac = new EcmProduct();
|
|
$ac->retrieve($dane['id']);
|
|
$dane['parent_name']= html_entity_decode($dane['parent_name']);
|
|
$dane['status']=$app_list_strings['ecmsales_status_dom'][$dane['status']];
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='EcmInvoiceOuts'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='typ';
|
|
$header[]='numer';
|
|
$header[]='kontrahent';
|
|
$header[]='data';
|
|
$header[]='netto';
|
|
$header[]='vat';
|
|
$header[]='brutto';
|
|
$header[]='status';
|
|
$header[]='nazwa produktu';
|
|
$header[]='ilość';
|
|
$header[]='jednostka miary';
|
|
$header[]='cena netto';
|
|
$header[]='stawka vat';
|
|
$header[]='cena brutto';
|
|
$header[]='wartość netto';
|
|
$header[]='wartość vat';
|
|
$header[]='wartość brutto';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
$this->query='SELECT id,type,document_no,parent_name,register_date,total_netto,total_vat,total_brutto,canceled as status FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
$dane['total_netto']=(float)$dane['total_netto'];
|
|
$dane['total_brutto']=(float)$dane['total_brutto'];
|
|
$dane['total_vat']=(float)$dane['total_vat'];
|
|
if($dane['type']=='normal'){
|
|
$dane['type']='faktura';
|
|
} else {
|
|
$dane['type']='korekta';
|
|
}
|
|
$t = new EcmTransaction();
|
|
$t->retrieve_by_string_fields(array('record_id' =>$dane['id']));
|
|
if($t->settled==1){
|
|
$dane['status']='rozliczona';
|
|
} else {
|
|
$v=$t->getRelations();
|
|
if($v==$t->value){
|
|
$dane['status']='nierozliczona';
|
|
|
|
} else {
|
|
$dane['status']='pozostało do zapłaty';
|
|
}
|
|
}
|
|
|
|
$dane['parent_name']= html_entity_decode($dane['parent_name']);
|
|
$query2="select * from ecminvoiceoutitems where ecminvoiceout_id='".$dane['id']."'";
|
|
|
|
$z2=$this->db->query($query2);
|
|
|
|
while($dane2=$this->db->fetchByAssoc($z2)){
|
|
$dane['product_name']=$dane2['name'];
|
|
$dane['quantity']=(float)$dane2['quantity'];
|
|
$dane['unit_name']=$dane2['dd_unit_name'];
|
|
$dane['price_netto2']=(float)$dane2['price_netto'];
|
|
$dane['vat_name']=$dane2['ecmvat_name'];
|
|
$dane['price_brutto2']=(float)$dane2['price_brutto'];
|
|
$dane['total_netto2']=(float)$dane2['total_netto'];
|
|
$dane['total_vat2']=(float)$dane2['total_vat'];
|
|
$dane['total_brutto2']=(float)$dane2['total_brutto'];
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
}
|
|
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='EcmPrepaymentInvoices'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='numer';
|
|
$header[]='kontrahent';
|
|
$header[]='data';
|
|
$header[]='netto';
|
|
$header[]='vat';
|
|
$header[]='brutto';
|
|
$header[]='status';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
|
|
$this->query='SELECT id,document_no,parent_name,register_date,total_netto,total_vat,total_brutto FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
|
|
$dane['total_netto']=(float)$dane['total_netto'];
|
|
$dane['total_brutto']=(float)$dane['total_brutto'];
|
|
$dane['total_vat']=(float)$dane['total_vat'];
|
|
$dane['parent_name']= preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($dane['parent_name']));
|
|
$dane['status']='aktywna';
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='EcmPurchaseOrders'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='numer';
|
|
$header[]='data dokumentu';
|
|
$header[]='kontrahent';
|
|
$header[]='netto';
|
|
$header[]='vat';
|
|
$header[]='brutto';
|
|
$header[]='data dostawy';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
|
|
$this->query='SELECT id,document_no,register_date,parent_name,total_netto,total_netto as vat,total_netto as brutto,delivery_date FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
$query2="select * from ecmpurchaseorderitems where ecmpurchaseorder_id='".$dane['id']."'";
|
|
|
|
$z2=$this->db->query($query2);
|
|
$total_netto=0;
|
|
$total_vat=0;
|
|
$total_brutto=0;
|
|
while($dane2=$this->db->fetchByAssoc($z2)){
|
|
$total_netto+=$dane2['total_netto'];
|
|
$total_vat+=($dane2['total_netto']*$dane2['ecmvat_value'])/100;
|
|
$total_brutto+=(($dane2['total_netto']*$dane2['ecmvat_value'])/100)+$dane2['total_netto'];
|
|
}
|
|
$dane['total_netto']=$total_netto;
|
|
$dane['vat']=$total_vat;
|
|
$dane['brutto']=$total_brutto;
|
|
if($dane['delivery_date']!=''){
|
|
$dane['delivery_date']=date('Y-m-d',strtotime($dane['delivery_date']));
|
|
}
|
|
|
|
$dane['parent_name']= preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($dane['parent_name']));
|
|
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='EcmAgreements'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='data';
|
|
$header[]='kontrahent';
|
|
$header[]='numer';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
|
|
$this->query='SELECT id,register_date,parent_id as parent_name,document_no FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
$a = new Account();
|
|
$a->retrieve($dane['parent_name']);
|
|
$dane['parent_name']= preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($a->name));
|
|
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='EcmWorkers'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='imię';
|
|
$header[]='nazwisko';
|
|
$header[]='data urodzenia';
|
|
$header[]='pesel';
|
|
$header[]='dowód osobisty seria i numer';
|
|
$header[]='adres zameldowania';
|
|
$header[]='adres zamieszkania';
|
|
$header[]='numer telefonu służbowy';
|
|
$header[]='numer telefonu prywatny';
|
|
$header[]='stan cywilny';
|
|
$header[]='urząd skarbowy';
|
|
$header[]='data zatrudnienia';
|
|
$header[]='nazwa stanowiska';
|
|
$header[]='numer konta bankowego';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
|
|
$this->query='SELECT id,first_name,last_name,birthday,pesel,person_id_series_number,concat(primary_address_city ," ", primary_address_postalcode," ", primary_address_street) as adr,concat(alt_address_city ," ", alt_address_postalcode," ", alt_address_street) as adr2,phone_work,phone_mobile,marital_status,inland_revenue,date_employment,position_office,bank_account_number FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
$a = new Account();
|
|
$a->retrieve($dane['parent_name']);
|
|
$dane['parent_name']= preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($a->name));
|
|
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
|
|
if($this->moduleName=='Documents'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='data';
|
|
$header[]='kontrahent';
|
|
$header[]='numer';
|
|
$header[]='kategoria';
|
|
$header[]='netto';
|
|
$header[]='vat';
|
|
$header[]='brutto';
|
|
$header[]='termin płatności';
|
|
$header[]='status';
|
|
|
|
$this->setHeader($header);
|
|
if(strlen($this->where)>0){
|
|
$this->where=str_replace("like '","like '%",$this->where);
|
|
$where=' and '.$this->where;
|
|
}
|
|
if( $_SESSION[$this->moduleName.'_order']!=''){
|
|
$where.=' order by '.$_SESSION[$this->moduleName.'_order'];
|
|
}
|
|
|
|
$this->query='SELECT id,document_date,document_name as parent_name,document_name,category_id,value as netto,value as vat,value as brutto,payment_date,status_id FROM '.$this->table.' WHERE deleted=0'.$where;
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
|
|
$d = new Document();
|
|
$dane['category_id']= $app_list_strings['document_category_dom'][$dane['category_id']];
|
|
$dane['transaction_type']= $app_list_strings['transaction_type3_dom'][$dane['transaction_type']];
|
|
$t = new EcmTransaction();
|
|
$t->retrieve_by_string_fields(array('record_id' =>$dane['id']));
|
|
if($t->settled==1){
|
|
$dane['status']='rozliczona';
|
|
} else {
|
|
$v=$t->getRelations();
|
|
if($v==$t->value){
|
|
$dane['status']='nierozliczona';
|
|
|
|
} else {
|
|
$dane['status']='pozostało do zapłaty';
|
|
}
|
|
}
|
|
$dane['parent_name']= html_entity_decode($dane['parent_name']);
|
|
$query2="select * FROM documents_accounts WHERE document_id='" . $dane['id'] . "' and parent_type='Account' limit 1";
|
|
$dane['netto']= '';
|
|
$dane['vat']= '';
|
|
$z2=$this->db->query($query2);
|
|
while($dane2=$this->db->fetchByAssoc($z2)){
|
|
$a = new Account();
|
|
$a->retrieve($dane2['parent_id']);
|
|
$dane['parent_name']= preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($a->name));
|
|
}
|
|
$dane['brutto']=(float) $dane['brutto'];
|
|
$query2="select * FROM documents_vat WHERE document_id='" . $dane['id'] . "' and netto>0";
|
|
$z2=$this->db->query($query2);
|
|
|
|
while($dane2=$this->db->fetchByAssoc($z2)){
|
|
|
|
$dane['netto']=(float) $dane2['netto'];
|
|
$dane['vat']=(float) $dane2['vat'];
|
|
$dane['brutto']=(float) $dane['brutto'];
|
|
}
|
|
unset($dane['id']);
|
|
$this->writeLine($dane);
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
if($this->moduleName=='EcmPaymentStates'){
|
|
global $app_list_strings;
|
|
$header = array();
|
|
$header[]='rodzaj kontrahenta';
|
|
$header[]='kontrahent';
|
|
$header[]='saldo winien';
|
|
$header[]='nazwa';
|
|
$header[]='data płatności';
|
|
$header[]='wartość';
|
|
$header[]='saldo ma';
|
|
$header[]='nazwa';
|
|
$header[]='data płatności';
|
|
$header[]='wartość';
|
|
$header[]='numer konta bankowego';
|
|
$this->setHeader($header);
|
|
|
|
|
|
$this->query="SELECT id,account_type,name from accounts where id in('".implode("','",$this->ids)."')";
|
|
|
|
$z=$this->db->query($this->query);
|
|
|
|
while($dane=$this->db->fetchByAssoc($z)){
|
|
$a = new Account();
|
|
$a->retrieve($dane['parent_name']);
|
|
|
|
$dane['account_type']=$app_list_strings['account_type_dom'][$dane['account_type']];
|
|
$dane['name']= preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($dane['name']));
|
|
$query_w="
|
|
SELECT * FROM ecmtransactions
|
|
WHERE deleted='0' AND
|
|
parent_id='".$dane['id']."'
|
|
AND type='0'
|
|
ORDER BY payment_date desc";
|
|
$query_ma="
|
|
SELECT * FROM ecmtransactions
|
|
WHERE deleted='0' AND
|
|
parent_id='".$dane['id']."'
|
|
AND type='1'
|
|
ORDER BY payment_date desc";
|
|
|
|
// winien start
|
|
|
|
|
|
$res = $this->db->query($query_w);
|
|
$total_winien = 0;
|
|
global $timedate;
|
|
$winien = array();
|
|
$totals_w['wartosc']=0;
|
|
$totals_w['roz']=0;
|
|
$totals_w['nie']=0;
|
|
while ($r = $this->db->fetchByAssoc($res)) {
|
|
|
|
$tmp = array();
|
|
$tmp['settled_with'] = array();
|
|
$total_settled = 0;
|
|
if($umowa_id!=''){
|
|
if($r['record_id']!=$umowa_id){
|
|
if($r['record_type']=='EcmInvoiceOuts'){
|
|
$m= new EcmInvoiceOut();
|
|
$m->retrieve($r['record_id']);
|
|
if($m->ecmagreement_id!=$umowa_id){
|
|
continue;
|
|
}
|
|
} else {
|
|
$rel = $this->db->query("SELECT * FROM ecmtransactions_rel WHERE ecmtransaction_a_id='".$r['id']."' OR ecmtransaction_b_id='".$r['id']."'");
|
|
$skip=true;
|
|
while ($rr = $this->db->fetchByAssoc($rel)) {
|
|
if ($rr['ecmtransaction_a_id'] == $r['id'])
|
|
$rel_id = $rr['ecmtransaction_b_id'];
|
|
else
|
|
$rel_id = $rr['ecmtransaction_a_id'];
|
|
$t = $this->db->fetchByAssoc($this->db->query("SELECT * FROM ecmtransactions WHERE id='$rel_id'"));
|
|
|
|
if($t['record_type']=='EcmInvoiceOuts'){
|
|
$m= new EcmInvoiceOut();
|
|
$m->retrieve($t['record_id']);
|
|
if($m->ecmagreement_id==$umowa_id){
|
|
$skip==false;
|
|
}
|
|
} else {
|
|
|
|
if($t['record_id']==$umowa_id){
|
|
$skip=false;
|
|
}
|
|
}
|
|
}
|
|
if($skip==true){
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$rel = $this->db->query("SELECT * FROM ecmtransactions_rel WHERE ecmtransaction_a_id='".$r['id']."' OR ecmtransaction_b_id='".$r['id']."'");
|
|
while ($rr = $this->db->fetchByAssoc($rel)) {
|
|
|
|
if ($rr['ecmtransaction_a_id'] == $r['id'])
|
|
$rel_id = $rr['ecmtransaction_b_id'];
|
|
else
|
|
$rel_id = $rr['ecmtransaction_a_id'];
|
|
$t = $this->db->fetchByAssoc($this->db->query("SELECT * FROM ecmtransactions WHERE id='$rel_id'"));
|
|
$tmp2 = array();
|
|
$tmp2['name'] = $t['name'];
|
|
$tmp2['trans_id'] = $t['id'];
|
|
$tmp2['value']=$rr['value'];
|
|
if($t['type']==0 && $rel->num_rows==1){
|
|
|
|
if(abs($rr['value'])==abs($r['value'])){
|
|
if($r['value']>0){
|
|
$rr['value']=abs($rr['value']);
|
|
} else {
|
|
$v = -1 * abs( $rr['value']);
|
|
$rr['value']=$v;
|
|
}
|
|
} else {
|
|
$rr['value']=abs($rr['value']);
|
|
}
|
|
} else {
|
|
|
|
if(abs($rr['value'])==abs($r['value'])){
|
|
if($r['value']>0){
|
|
$rr['value']=abs($rr['value']);
|
|
} else {
|
|
$v = -1 * abs( $rr['value']);
|
|
$rr['value']=$v;
|
|
}
|
|
} else {
|
|
if($r['value']>0){
|
|
$rr['value']=abs($rr['value']);
|
|
}
|
|
}
|
|
}
|
|
$tmp['settled_with'][] = $tmp2;
|
|
$total_settled+=floatval($rr['value']);
|
|
}
|
|
|
|
//date comparsion
|
|
if ($r['settled'] == '1') {
|
|
$d1 = new DateTime($r['register_date']);
|
|
$d2 = new DateTime($change_date);
|
|
if ($d1 < $d2)
|
|
$total_settled = $r['value'];
|
|
} else $r['settled'] = '0'; //prevent null
|
|
|
|
|
|
$tmp['register_date'] = $timedate->to_display_date($r['payment_date']);
|
|
if($r['record_type']!=''){
|
|
$module=substr($r['record_type'],0,strlen($r['record_type'])-1);
|
|
$m = new $module();
|
|
|
|
$m->retrieve($r['record_id']);
|
|
|
|
$add=' z dnia '.date('d.m.Y',strtotime($m->register_date));
|
|
} else {
|
|
$add='';
|
|
}
|
|
$tmp['document_no'] = $r['name'];
|
|
$tmp['total'] =(float) ($r['value']);
|
|
$tmp['settled'] =(float) ($total_settled);
|
|
$totals_w['wartosc']+=$r['value'];
|
|
$totals_w['roz']+=$total_settled;
|
|
$totals_w['nie']+=floatval(unsettledValue($total_settled,$r['value']));
|
|
if($r['settled']==1){
|
|
if($_REQUEST['switch_show']==1){
|
|
$tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']);
|
|
$total_winien+=floatval($r['value']);
|
|
|
|
} else {
|
|
$tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']);
|
|
$total_winien+=floatval(unsettledValue($total_settled,$r['value']));
|
|
}
|
|
}else{
|
|
if($_REQUEST['switch_show']==1){
|
|
$tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']);
|
|
$total_winien+=floatval($r['value']);
|
|
|
|
} else {
|
|
$tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']);
|
|
$total_winien+=floatval(unsettledValue($total_settled,$r['value']));
|
|
}
|
|
}
|
|
$tmp['name'] = $r['name'];
|
|
$tmp['id'] = $r['id'];
|
|
$tmp['sort_date']=date('Ymd',strtotime($r['payment_date']));
|
|
$tmp['note']= $r['note'];
|
|
$tmp['type']='0';
|
|
$tmp['note_id']= $r['note_id'];
|
|
$tmp['is_settled'] = $r['settled'];
|
|
$winien[] = $tmp;
|
|
|
|
|
|
}
|
|
//winien end
|
|
|
|
|
|
$res = $this->db->query($query_ma);
|
|
$ma = array();
|
|
$total_ma = 0;
|
|
$totals_m['wartosc']=0;
|
|
while ($r = $this->db->fetchByAssoc($res)) {
|
|
$tmp = array();
|
|
$tmp['settled_with'] = array();
|
|
$total_settled = 0;
|
|
if($umowa_id!=''){
|
|
if($r['record_id']!=$umowa_id){
|
|
if($r['record_type']=='EcmInvoiceOuts'){
|
|
$m= new EcmInvoiceOut();
|
|
$m->retrieve($r['record_id']);
|
|
if($m->ecmagreement_id!=$umowa_id){
|
|
continue;
|
|
}
|
|
} else {
|
|
$rel = $this->db->query("SELECT * FROM ecmtransactions_rel WHERE ecmtransaction_a_id='".$r['id']."' OR ecmtransaction_b_id='".$r['id']."'");
|
|
$skip=true;
|
|
while ($rr = $this->db->fetchByAssoc($rel)) {
|
|
if ($rr['ecmtransaction_a_id'] == $r['id'])
|
|
$rel_id = $rr['ecmtransaction_b_id'];
|
|
else
|
|
$rel_id = $rr['ecmtransaction_a_id'];
|
|
$t = $this->db->fetchByAssoc($this->db->query("SELECT * FROM ecmtransactions WHERE id='$rel_id'"));
|
|
|
|
if($t['record_type']=='EcmInvoiceOuts'){
|
|
$m= new EcmInvoiceOut();
|
|
$m->retrieve($t['record_id']);
|
|
if($m->ecmagreement_id==$umowa_id){
|
|
$skip==false;
|
|
}
|
|
} else {
|
|
|
|
if($t['record_id']==$umowa_id){
|
|
$skip=false;
|
|
}
|
|
}
|
|
}
|
|
if($skip==true){
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$rel = $this->db->query("SELECT * FROM ecmtransactions_rel WHERE ecmtransaction_a_id='".$r['id']."' OR ecmtransaction_b_id='".$r['id']."'");
|
|
while ($rr = $this->db->fetchByAssoc($rel)) {
|
|
if ($rr['ecmtransaction_a_id'] == $r['id'])
|
|
$rel_id = $rr['ecmtransaction_b_id'];
|
|
else
|
|
$rel_id = $rr['ecmtransaction_a_id'];
|
|
$t = $this->db->fetchByAssoc($this->db->query("SELECT * FROM ecmtransactions WHERE id='$rel_id'"));
|
|
$tmp2 = array();
|
|
$tmp2['name'] = $t['name'];
|
|
$tmp2['trans_id'] = $t['id'];
|
|
$tmp2['value']=$rr['value'];
|
|
if($t['type']==0 && $rel->num_rows==1){
|
|
|
|
if(abs($rr['value'])==abs($r['value'])){
|
|
if($r['value']>0){
|
|
$rr['value']=abs($rr['value']);
|
|
} else {
|
|
$v = -1 * abs( $rr['value']);
|
|
$rr['value']=$v;
|
|
}
|
|
}
|
|
}else {
|
|
$rr['value']=abs($rr['value']);
|
|
}
|
|
$tmp['settled_with'][] = $tmp2;
|
|
$total_settled+=floatval($rr['value']);
|
|
}
|
|
|
|
|
|
//date comparsion
|
|
if ($r['settled'] == '1') {
|
|
$d1 = new DateTime($r['register_date']);
|
|
$d2 = new DateTime($change_date);
|
|
if ($d1 < $d2)
|
|
$total_settled = $r['value'];
|
|
} else $r['settled'] = '0'; //prevent null
|
|
|
|
$tmp['register_date'] = $timedate->to_display_date($r['payment_date']);
|
|
if($r['record_type']!=''){
|
|
$module=substr($r['record_type'],0,strlen($r['record_type'])-1);
|
|
$m = new $module();
|
|
|
|
$m->retrieve($r['record_id']);
|
|
|
|
$add=' z dnia '.date('d.m.Y',strtotime($m->register_date));
|
|
} else {
|
|
$add='';
|
|
}
|
|
$tmp['sort_date']=date('Ymd',strtotime($r['payment_date']));
|
|
$tmp['name'] = $r['name'];
|
|
$tmp['total'] = (float)($r['value']);
|
|
$tmp['settled'] = (float)($total_settled);
|
|
$totals_m['wartosc']+=$r['value'];
|
|
$totals_m['roz']+=$total_settled;
|
|
$totals_m['nie']+=floatval(unsettledValue($total_settled,$r['value']));
|
|
if($r['settled']==1){
|
|
if($_REQUEST['switch_show']==1){
|
|
$tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']);
|
|
|
|
$total_ma+=floatval($r['value']);
|
|
} else {
|
|
$tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']);
|
|
$total_ma+=floatval(unsettledValue($total_settled,$r['value']));
|
|
}
|
|
//$tmp['unsettled'] = format_number(abs($r['value'])-$total_settled); echo 'rozliczone';
|
|
}else{
|
|
if($_REQUEST['switch_show']==1){
|
|
$tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']);
|
|
|
|
$total_ma+=floatval($r['value']);
|
|
} else {
|
|
$tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']);
|
|
$total_ma+=floatval(unsettledValue($total_settled,$r['value']));
|
|
}
|
|
}
|
|
$tmp['is_settled'] = $r['settled'];
|
|
$tmp['type']='1';
|
|
$tmp['id'] = $r['id'];
|
|
$ma[] = $tmp;
|
|
|
|
//$total_ma+=floatval($r['value']);
|
|
}
|
|
|
|
echo count($ma).' ';
|
|
echo count($winien);
|
|
if(count($winien)>=count($ma)){
|
|
foreach ($winien as $key=>$val){
|
|
$dane['saldo_w']=$totals_w['wartosc'];
|
|
$dane['nazwa']=$winien[$key]['name'];
|
|
$dane['data']=$winien[$key]['register_date'];
|
|
$dane['kwota']=$winien[$key]['total'];
|
|
$dane['saldo_ma']=$totals_m['wartosc'];
|
|
$dane['nazwa2']=$ma[$key]['name'];
|
|
$dane['data2']=$ma[$key]['register_date'];
|
|
$dane['kwota2']=$ma[$key]['total'];
|
|
unset($dane['id']);
|
|
$dane['bank']=$a->getFirstBankAccount();
|
|
$this->writeLine($dane);
|
|
}
|
|
} else {
|
|
foreach ($ma as $key=>$val){
|
|
$dane['saldo_w']=$totals_w['wartosc'];
|
|
$dane['nazwa']=$winien[$key]['name'];
|
|
$dane['data']=$winien[$key]['register_date'];
|
|
$dane['kwota']=$winien[$key]['total'];
|
|
$dane['saldo_ma']=$totals_m['wartosc'];
|
|
$dane['nazwa2']=$ma[$key]['name'];
|
|
$dane['data2']=$ma[$key]['register_date'];
|
|
$dane['kwota2']=$ma[$key]['total'];
|
|
unset($dane['id']);
|
|
$dane['bank']=$a->getFirstBankAccount();
|
|
$this->writeLine($dane);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
header('Location: '. $this->filename);
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
$EcmSysInfo = new EcmSysInfo();
|
|
if($EcmSysInfo->getDatabaseName() != 'preDb_5d9477918f845c6fdc25532d415f9e73'){
|
|
if($_REQUEST['accounts_xls_id']){
|
|
|
|
$ex= New export('EcmPaymentStates',$settings['table'],'',$_REQUEST['accounts_xls_id']);
|
|
|
|
$ex->getResults();
|
|
} else {
|
|
$ex= New export($settings['module'],$settings['table'],base64_decode($settings['where']),'',$settings['order'],$settings['direction']);
|
|
|
|
$ex->getResults();
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
* To change this license header, choose License Headers in Project Properties.
|
|
* To change this template file, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
|
|
function vd($v, $die = false) {
|
|
echo '<pre>'; var_dump($v); echo '</pre>';
|
|
if ($die == true) die();
|
|
}
|
|
function objectToArray($d) {
|
|
if (is_object($d)) {
|
|
// Gets the properties of the given object
|
|
// with get_object_vars function
|
|
$d = get_object_vars($d);
|
|
}
|
|
|
|
if (is_array($d)) {
|
|
/*
|
|
* Return array converted to object
|
|
* Using __FUNCTION__ (Magic constant)
|
|
* for recursive call
|
|
*/
|
|
return array_map(__FUNCTION__, $d);
|
|
}
|
|
else {
|
|
// Return array
|
|
return $d;
|
|
}
|
|
}
|
|
|
|
|
|
function array_sort_by_key($array, $on, $order=SORT_ASC)
|
|
{
|
|
$new_array = array();
|
|
$sortable_array = array();
|
|
|
|
if (count($array) > 0) {
|
|
foreach ($array as $k => $v) {
|
|
if (is_array($v)) {
|
|
foreach ($v as $k2 => $v2) {
|
|
if ($k2 == $on) {
|
|
$sortable_array[$k] = $v2;
|
|
}
|
|
}
|
|
} else {
|
|
$sortable_array[$k] = $v;
|
|
}
|
|
}
|
|
|
|
switch ($order) {
|
|
case SORT_ASC:
|
|
asort($sortable_array);
|
|
break;
|
|
case SORT_DESC:
|
|
arsort($sortable_array);
|
|
break;
|
|
}
|
|
|
|
foreach ($sortable_array as $k => $v) {
|
|
$new_array[$k] = $array[$k];
|
|
}
|
|
}
|
|
|
|
return $new_array;
|
|
}
|
|
function unsettledFormatValue($settled,$val){
|
|
if($settled<0 && $val>0){
|
|
return format_number($val+$settled);
|
|
}
|
|
if($settled<0 && $val<0){
|
|
return format_number($val+abs($settled));
|
|
}
|
|
if($settled>0 && $val>0){
|
|
return format_number($val-abs($settled));
|
|
}
|
|
if($settled>0 && $val<0){
|
|
return format_number($val+$settled);
|
|
}
|
|
if($settled==0 && $val<0){
|
|
return format_number($val);
|
|
}
|
|
if($settled==0 && $val>0){
|
|
return format_number($val);
|
|
}
|
|
}
|
|
|
|
function getAgreements($id){
|
|
$db=$GLOBALS['db'];
|
|
$zap="select id,document_no from ecmagreements where parent_id='".$id."' and deleted=0";
|
|
$res=$db->query($zap);
|
|
|
|
$as=array();
|
|
while($dane=$db->fetchByAssoc($res)){
|
|
|
|
$as[]=$dane;
|
|
}
|
|
return $as;
|
|
}
|
|
|
|
function unsettledValue($settled,$val){
|
|
if($settled<0 && $val>0){
|
|
return ($val+$settled);
|
|
}
|
|
if($settled<0 && $val<0){
|
|
return ($val+abs($settled));
|
|
}
|
|
if($settled>0 && $val>0){
|
|
return ($val-abs($settled));
|
|
}
|
|
if($settled>0 && $val<0){
|
|
return ($val+$settled);
|
|
}
|
|
return $val;
|
|
}
|
|
function getEmails ($id)
|
|
{
|
|
$sea = new SugarEmailAddress();
|
|
$addresses = $sea->getAddressesByGUID($id, 'Accounts');
|
|
$return = array();
|
|
foreach ($addresses as $address) {
|
|
if ($address['email_address'] != '' && $address['opt_out'] == 1) {
|
|
$return[] = $address['email_address'];
|
|
}
|
|
}
|
|
return $return;
|
|
} |