diff --git a/REST/functions.php b/REST/functions.php index 1d220bfe..d6b6efb4 100644 --- a/REST/functions.php +++ b/REST/functions.php @@ -1,37 +1,38 @@ fetchByAssoc($db->query("SELECT id, name FROM ecmstocks WHERE id = '".$stockId."'")); + $stock = $db->fetchByAssoc($db->query("SELECT id, name FROM ecmstocks WHERE id = '" . $stockId . "'")); if ($stock == null) { die("Wskazano błedny magazyn"); } } $curl = curl_init(); - curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET' ); + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($curl, CURLOPT_VERBOSE, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); - curl_setopt($curl, CURLOPT_URL, "https://crm.e5.pl/REST/index.php?key=7e50a8a5-f01f-4fbc-8c1b-59f3fc474bb5&action=getInvoice&record=".$record); + curl_setopt($curl, CURLOPT_URL, "https://crm.e5.pl/REST/index.php?key=7e50a8a5-f01f-4fbc-8c1b-59f3fc474bb5&action=getInvoice&record=" . $record); $res = curl_exec($curl); $inv = json_decode($res); $inv->position_list = json_decode($inv->position_list); echo 'Tworzę dokument PZ w Twinpol
'; - echo 'Numer faktury: '.$inv->document_no.'
'; - echo 'Na magazyn: '.$stock['name'].' (ID: '.$stock['id'].')

'; + echo 'Numer faktury: ' . $inv->document_no . '
'; + echo 'Na magazyn: ' . $stock['name'] . ' (ID: ' . $stock['id'] . ')

'; //check if PZ not exists - $exists = $db->fetchByAssoc($db->query("SELECT id, document_no FROM ecmstockdocins WHERE name='".$inv->document_no."'")); + $exists = $db->fetchByAssoc($db->query("SELECT id, document_no FROM ecmstockdocins WHERE name='" . $inv->document_no . "'")); if ($exists) { - echo "Istnieje już dokument PZ przypisany do tej faktury: ".$exists['document_no'].""; + echo "Istnieje już dokument PZ przypisany do tej faktury: " . $exists['document_no'] . ""; die(); } @@ -74,14 +75,14 @@ function createPzFromInvoice($record, $stockId) { $pz->fromREST = true; $gotAllProducts = true; // hope :) - foreach ( $inv->position_list as $product ) { - echo 'Produkt: '.$product->product_code.'
'; + foreach ($inv->position_list as $product) { + echo 'Produkt: ' . $product->product_code . '
'; $p = getProduct($product->product_code); if (!$p) { echo '  Produkt nie istnieje w bazie TWINPOL
'; $gotAllProducts = false; continue; - } + } // add to pz $prod = array(); $prod['date_entered'] = date('Y-m-d H:i:s'); @@ -96,9 +97,9 @@ function createPzFromInvoice($record, $stockId) { $prod['product_code'] = $p->code; $prod['name'] = $p->name; $prod['quantity'] = $product->quantity; - $prod['price'] = $product->price_netto; - $prod['price_fk'] = $product->price_netto; - $prod['total'] = $product->total_netto; + $prod['price'] = $product->price_netto; + $prod['price_fk'] = $product->price_netto; + $prod['total'] = $product->total_netto; $prod['unit_id'] = $product->unit_id; $prod['unit_name'] = $product->unit_name; $prod['ecmproductcategory_id'] = $p->product_category_id; @@ -115,7 +116,7 @@ function createPzFromInvoice($record, $stockId) { die(); } else { $new = $pz->save(true); - echo 'Utworzono PZ.'; + echo 'Utworzono PZ.'; die(); } } @@ -133,12 +134,13 @@ function sendStocks() } echo json_encode($stocks); } -function sendSale($record) { +function sendSale($record) +{ require_once('modules/EcmSales/EcmSale.php'); $sale = new EcmSale(); $sale->retrieve($record); $pl = $sale->getPositionList(); - $response = array ( + $response = array( 'document_no' => $sale->document_no, 'name' => $sale->name, 'parent_document_no' => $sale->parent_document_no, @@ -167,15 +169,86 @@ function sendSale($record) { ); echo json_encode($response); } - -function updateSaleE5Number($record, $e5_record, $e5_document_no) { +function updateSaleE5Number($record, $e5_record, $e5_document_no) +{ $db = $GLOBALS['db']; $db->query("UPDATE ecmsales SET edi_zs_id='$e5_record', edi_zs_document_no='$e5_document_no' WHERE id='$record'"); die(); } +function createCostDocumentFromInvoice($record) +{ + global $app_list_strings; + $db = $GLOBALS['db']; + + $curl = curl_init(); + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); + curl_setopt($curl, CURLOPT_VERBOSE, 1); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($curl, CURLOPT_URL, "https://crm.e5.pl/REST/index.php?key=7e50a8a5-f01f-4fbc-8c1b-59f3fc474bb5&action=getInvoice&record=" . $record); + $res = curl_exec($curl); + $inv = json_decode($res); + $inv->position_list = json_decode($inv->position_list); + echo 'Tworzę dokument kosztowy w Twinpol
'; + echo 'Numer faktury: ' . $inv->document_no . '
'; + + removeDocumentIfExists($inv->document_no); + + $doc = new Document(); + $doc->document_name = $inv->document_no; + $doc->document_number = $inv->document_no; + $doc->doc_symbol = $inv->document_no; + $doc->revision = 1; + + $doc->category_id = 'revision_note'; + $doc->status = '2'; + $doc->transaction_type = '1'; + $doc->document_type = 'k'; + + $doc->active_date = $inv->register_date; + $doc->payment_date = $inv->payment_date; + $doc->document_date = $inv->register_date; + $doc->date_entered = date('Y-m-d H:i:s'); + $doc->date_modified = date('Y-m-d H:i:s'); + + $doc->value = $inv->total_brutto; + $doc->left_paid = $inv->total_brutto; + $doc->currency_id = $inv->currency_id; + $doc->currency_value = 1; + + $id = $doc->save(); + + $parents = array(); + $parent = array(); + $parent['id'] = create_guid(); + $parent['name'] = 'E5 Polska Sp. z o.o.'; + $parent['parent_id'] = 'f084e64a-4e63-a3d1-6417-58cbf730df3f'; + $parent['parent_type'] = 'Accounts'; + $parents[] = $parent; + $doc->saveParentList($parents); + + $vats = array(); + $vatList = explode(',', $inv->vats_summary); + foreach ($vatList as $vatItem) { + if (empty($vatItem)) continue; + $parts = explode(':', $vatItem); + if (count($parts) != 5) continue; + $vat = array(); + $vat['netto'] = $parts[1]; + $vat['vat'] = $parts[2]; + $vat['vat_id'] = str_replace('%', '', $parts[0]); + $vat['vat_value'] = $parts[0]; + $vats[] = $vat; + } + $doc->saveVatList($vats); + + echo 'Utworzono dokument kosztowy: ' . $doc->document_name . '
'; +} // local helpers -function getProduct($code) { +function getProduct($code) +{ $db = $GLOBALS['db']; $res = $db->fetchByAssoc($db->query("SELECT * FROM ecmproducts WHERE code='$code' AND deleted=0")); if (!$res) { @@ -187,6 +260,7 @@ function getProduct($code) { return $prod; } } +/* function createProduct($record) { $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET' ); @@ -221,11 +295,21 @@ function createProduct($record) { //$new->save(); return $new; } -function brecho($msg) { +*/ +function removeDocumentIfExists($document_number) +{ + $db = $GLOBALS['db']; + $res = $db->fetchByAssoc($db->query("SELECT id FROM documents WHERE document_number='$document_number'")); + if ($res) { + echo 'Istnieje już dokument kosztowy o numerze ' . $document_number . '. Usuwam go...
'; + $db->query("DELETE FROM documents WHERE id='" . $res['id'] . "'"); + $db->query("DELETE FROM documents_accounts WHERE document_id='" . $res['id'] . "'"); + $db->query("DELETE FROM documents_vat WHERE document_id='" . $res['id'] . "'"); + } +} +function brecho($msg) +{ echo '

'; var_dump($msg); echo '

'; } - -// mysql create table with fields id varchar, created_at datetime, and payload max text -// create table e5_logs (id varchar(255), created_at datetime, payload text); diff --git a/REST/index.php b/REST/index.php index b7d0cdf1..60b4af4d 100644 --- a/REST/index.php +++ b/REST/index.php @@ -35,5 +35,9 @@ case 'updateSaleE5Number': updateSaleE5Number($_GET['record'], $_GET['e5_record'], $_GET['e5_document_no']); break; + case 'createCostDocumentFromInvoice': + createCostDocumentFromInvoice($_GET['record']); + break; } + // https://crm.twinpol.com/REST/index.php?key=d68dac4c-f784-4e1b-8267-9ffcfa0eda4c&action=createCostDocumentFromInvoice&record=c3f6eaa6-0cbd-8c89-1a8c-683ff19a36db ?> \ No newline at end of file diff --git a/modules/Documents/Document.php b/modules/Documents/Document.php index 336b632e..4c783d69 100644 --- a/modules/Documents/Document.php +++ b/modules/Documents/Document.php @@ -67,6 +67,13 @@ class Document extends SugarBean { var $related_doc_rev_number; var $is_template; var $template_type; + var $payment_date; + var $transaction_type; + var $document_type; + var $value; + var $left_paid; + var $currency_id; + var $document_number; //additional fields. var $revision; var $last_rev_create_date; @@ -354,6 +361,7 @@ class Document extends SugarBean { $return_array [] = $w; } $json = getJSONobj(); + var_dump($return_array); return $array ? $return_array : $json->encode($return_array); } } diff --git a/modules/Documents/vardefs.php b/modules/Documents/vardefs.php index ee79a0d6..2ec5f232 100644 --- a/modules/Documents/vardefs.php +++ b/modules/Documents/vardefs.php @@ -1,6 +1,6 @@ 'documents', - 'fields' => array ( - - // add mz - 'value' => array ( - 'name' => 'value', - 'vname' => 'LBL_VALUE', - 'type' => 'varchar', - 'required'=>true, - - ), - 'left_paid' => array ( - 'name' => 'left_paid', - 'vname' => 'LBL_VALUE_PAID', - 'type' => 'varchar', - - ), - 'parent_type' => array ( - 'name' => 'parent_type', - 'vname' => 'LBL_PARENT_NAME', - 'type' => 'varchar', - 'source' => 'non-db', - 'required' => false, - 'reportable' => false, - 'len' => '25', - 'comment' => 'The Sugar object to which the call is related' - ), - 'currency_id' => array ( - 'name' => 'currency_id', - 'type' => 'enum', - 'options' => 'currency_dom', - 'label' => 'LBL_CURRENCY', - 'len' => 36 - ), - 'document_type' => array ( - 'name' => 'document_type', - 'type' => 'enum', - 'options' => 'document_type_enum', - 'default'=>'k', - 'label' => 'Typ faktury', - 'required'=>true, - 'len' => 45 - ), - 'transaction_type' => array ( - 'name' => 'transaction_type', - 'type' => 'enum', - 'options' => 'transaction_type3_dom', - 'size' => 3, - 'default'=>'1', - 'vname'=>'Typ transakcji', - 'label' => 'Typ transakcji', - 'required'=>true, - 'len' => 45 - ), - 'currency_value' => array ( - 'name' => 'currency_value', - 'type' => 'varchar', - 'vname' => 'LBL_CURRENCY_VALUE', - 'reportable' => false, - 'required' => false - ), - 'parent_name' => array ( - 'name' => 'parent_name', - - 'type_name' => 'parent_type', - 'id_name' => 'parent_id', - 'vname' => 'LBL_LIST_RELATED_TO', - 'type' => 'parent', - - 'source' => 'non-db', - 'options' => 'parent_type_display2' - ), - 'corrected_document_name' => array ( - 'name' => 'corrected_document_name', - 'vname' => 'Korekta do dokumentu', - 'rname'=>'document_name', - 'type' => 'varchar', - 'group' => 'corrected_document_name', - 'dbtype' => 'varchar', - 'len' => '255', - 'massupdate' => false, - 'required' => false - ), - 'parent_id' => array ( - 'name' => 'parent_id', - 'type' => 'id', - 'group' => 'parent_name', - 'reportable' => false, - 'source' => 'non-db', - 'vname' => 'LBL_PARENT_ID' - ), - - 'document_name' => array ( - 'name' => 'document_name', - 'vname' => 'LBL_NAME', - 'type' => 'varchar', - - 'len' => '255', - 'required' => true, - 'importable' => 'required' - ), - 'name' => array ( - 'name' => 'name', - 'vname' => 'LBL_NAME', - 'source' => 'non-db', - 'type' => 'varchar' - ), - 'filename' => array ( - 'name' => 'filename', - 'vname' => 'LBL_FILENAME', - 'type' => 'file', - 'source' => 'non-db', - 'comment' => 'The filename of the document attachment', - 'required' => false - ), - - 'uploadfile' => array ( - 'name' => 'uploadfile', - 'required' => false, - 'vname' => 'LBL_FILENAME', - 'type' => 'file', - 'source' => 'non-db' - ), - - 'active_date' => array ( - 'name' => 'active_date', - 'vname' => 'LBL_DOC_ACTIVE_DATE', - 'type' => 'date', - 'importable' => 'required', - 'required' => true - ), - - 'exp_date' => array ( - 'name' => 'exp_date', - 'vname' => 'LBL_DOC_EXP_DATE', - 'type' => 'date' - ), - - 'category_id' => array ( - 'name' => 'category_id', - 'vname' => 'LBL_SF_CATEGORY', - 'type' => 'enum', - 'len' => '25', - 'options' => 'document_category_dom', - 'reportable' => false - ), - - 'subcategory_id' => array ( - 'name' => 'subcategory_id', - 'vname' => 'LBL_SF_SUBCATEGORY', - 'type' => 'enum', - 'len' => '25', - 'options' => 'document_subcategory_dom', - 'reportable' => false - ), - 'payment_date' => array ( - 'name' => 'payment_date', - 'vname' => 'LBL_PAYMENT_DATE', - 'type' => 'date', - 'reportable' => false, - 'showFormats' => true, - 'massupdate' => false, - 'required' => false - ), - 'status_id' => array ( - 'name' => 'status_id', - 'vname' => 'LBL_DOC_STATUS', - 'type' => 'enum', - 'len' => '25', - 'options' => 'document_status_dom', - 'reportable' => false - ), - +$dictionary['Document'] = array( + 'table' => 'documents', + 'fields' => array( + + // add mz + 'value' => array( + 'name' => 'value', + 'vname' => 'LBL_VALUE', + 'type' => 'varchar', + 'required' => true, - - 'document_revision_id' => array ( - 'name' => 'document_revision_id', - 'vname' => 'LBL_LATEST_REVISION', - 'type' => 'varchar', - 'len' => '36', - 'reportable' => false, - 'required' => false - ), - - 'revisions' => array ( - 'name' => 'revisions', - 'type' => 'link', - 'relationship' => 'document_revisions', - 'source' => 'non-db', - 'vname' => 'LBL_REVISIONS', - 'required' => false - ), - - 'revision' => array ( - 'name' => 'revision', - 'vname' => 'LBL_DOC_VERSION', - 'type' => 'varchar', - 'reportable' => false, - 'required' => true, - 'source' => 'non-db', - 'importable' => 'required', - 'required' => true - ), - - 'last_rev_created_name' => array ( - 'name' => 'last_rev_created_name', - 'vname' => 'LBL_LAST_REV_CREATOR', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'last_rev_mime_type' => array ( - 'name' => 'last_rev_mime_type', - 'vname' => 'LBL_LAST_REV_MIME_TYPE', - 'type' => 'varchar', - 'reportable' => false, - 'studio' => 'false', - 'source' => 'non-db' - ), - 'latest_revision' => array ( - 'name' => 'latest_revision', - 'vname' => 'LBL_LATEST_REVISION', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'last_rev_create_date' => array ( - 'name' => 'last_rev_create_date', - 'type' => 'date', - 'table' => 'document_revisions', - 'link' => 'revisions', - 'join_name' => 'document_revisions', - 'vname' => 'LBL_LAST_REV_CREATE_DATE', - 'rname' => 'date_entered', - 'reportable' => false, - 'source' => 'non-db' - ), - 'contracts' => array ( - 'name' => 'contracts', - 'type' => 'link', - 'relationship' => 'contracts_documents', - 'source' => 'non-db', - 'vname' => 'LBL_CONTRACTS' - ), - // todo remove - 'leads' => array ( - 'name' => 'leads', - 'type' => 'link', - 'relationship' => 'leads_documents', - 'source' => 'non-db', - 'vname' => 'LBL_LEADS' - ), - - 'related_doc_id' => array ( - 'name' => 'related_doc_id', - 'vname' => 'LBL_RELATED_DOCUMENT_ID', - 'reportable' => false, - 'dbType' => 'id', - 'type' => 'varchar', - 'len' => '36' - ), - - 'related_doc_name' => array ( - 'name' => 'related_doc_name', - 'vname' => 'LBL_DET_RELATED_DOCUMENT', - 'type' => 'relate', - 'table' => 'documents', - 'id_name' => 'related_doc_id', - 'module' => 'Documents', - 'source' => 'non-db', - 'comment' => 'The related document name for Meta-Data framework' - ), - - 'related_doc_rev_id' => array ( - 'name' => 'related_doc_rev_id', - 'vname' => 'LBL_RELATED_DOCUMENT_REVISION_ID', - 'reportable' => false, - 'dbType' => 'id', - 'type' => 'varchar', - 'len' => '36' - ), - - 'related_doc_rev_number' => array ( - 'name' => 'related_doc_rev_number', - 'vname' => 'LBL_DET_RELATED_DOCUMENT_VERSION', - 'type' => 'varchar', - 'source' => 'non-db', - 'comment' => 'The related document version number for Meta-Data framework' - ), - - 'is_template' => array ( - 'name' => 'is_template', - 'vname' => 'LBL_IS_TEMPLATE', - 'type' => 'bool', - 'default' => 0, - 'reportable' => false - ), - 'accepted' => array ( - 'name' => 'accepted', - 'vname' => 'LBL_TO_ACCEPT', - 'type' => 'enum', - 'source' => 'non-db', - 'default' => 0, - 'options' => 'document_user_status_dom', - 'reportable' => false - ), - 'status' => array ( - 'name' => 'status', - 'vname' => 'Status', - 'type' => 'enum', - - 'options' => 'status_user_status_dom', - 'reportable' => false, - 'required'=>true - ), - 'date_start' => array ( - 'name' => 'date_start', - 'vname' => 'LBL_DATE_START', - 'type' => 'date', - 'source' => 'non-db', - 'default' => 0, - 'reportable' => false - ), - 'date_end' => array ( - 'name' => 'date_end', - 'vname' => 'LBL_DATE_END', - 'type' => 'date', - 'source' => 'non-db', - 'default' => 0, - 'reportable' => false - ), - 'template_type' => array ( - 'name' => 'template_type', - 'vname' => 'LBL_TEMPLATE_TYPE', - 'type' => 'enum', - 'len' => '25', - 'options' => 'document_template_type_dom', - 'reportable' => false - ), - // BEGIN field used for contract document subpanel. - 'latest_revision_name' => array ( - 'name' => 'latest_revision_name', - 'vname' => 'LBL_LASTEST_REVISION_NAME', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - - 'selected_revision_name' => array ( - 'name' => 'selected_revision_name', - 'vname' => 'LBL_SELECTED_REVISION_NAME', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'contract_status' => array ( - 'name' => 'contract_status', - 'vname' => 'LBL_CONTRACT_STATUS', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'contract_name' => array ( - 'name' => 'contract_name', - 'vname' => 'LBL_CONTRACT_NAME', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'linked_id' => array ( - 'name' => 'linked_id', - 'vname' => 'LBL_LINKED_ID', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'selected_revision_id' => array ( - 'name' => 'selected_revision_id', - 'vname' => 'LBL_SELECTED_REVISION_ID', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'latest_revision_id' => array ( - 'name' => 'latest_revision_id', - 'vname' => 'LBL_LATEST_REVISION_ID', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'selected_revision_filename' => array ( - 'name' => 'selected_revision_filename', - 'vname' => 'LBL_SELECTED_REVISION_FILENAME', - 'type' => 'varchar', - 'reportable' => false, - 'source' => 'non-db' - ), - 'document_date' => array ( - 'name' => 'document_date', - 'vname' => 'LBL_DOCUMENT_DATE', - 'type' => 'date', - 'reportable' => false, - 'showFormats' => true, - 'massupdate' => false, - 'required' => true - ) - // END fields used for contract documents subpanel. - ), - - 'indices' => array ( - array ( - 'name' => 'idx_doc_cat', - 'type' => 'index', - 'fields' => array ( - 'category_id', - 'subcategory_id' - ) - ) ), - 'relationships' => array ( - 'document_revisions' => array ( - 'lhs_module' => 'Documents', - 'lhs_table' => 'documents', - 'lhs_key' => 'id', - 'rhs_module' => 'Documents', - 'rhs_table' => 'document_revisions', - 'rhs_key' => 'document_id', - 'relationship_type' => 'one-to-many' - ), - - 'documents_modified_user' => array ( - 'lhs_module' => 'Users', - 'lhs_table' => 'users', - 'lhs_key' => 'id', - 'rhs_module' => 'Documents', - 'rhs_table' => 'documents', - 'rhs_key' => 'modified_user_id', - 'relationship_type' => 'one-to-many' - ), - - 'documents_created_by' => array ( - 'lhs_module' => 'Users', - 'lhs_table' => 'users', - 'lhs_key' => 'id', - 'rhs_module' => 'Documents', - 'rhs_table' => 'documents', - 'rhs_key' => 'created_by', - 'relationship_type' => 'one-to-many' - ) - ) + 'left_paid' => array( + 'name' => 'left_paid', + 'vname' => 'LBL_VALUE_PAID', + 'type' => 'varchar', + + ), + 'parent_type' => array( + 'name' => 'parent_type', + 'vname' => 'LBL_PARENT_NAME', + 'type' => 'varchar', + 'source' => 'non-db', + 'required' => false, + 'reportable' => false, + 'len' => '25', + 'comment' => 'The Sugar object to which the call is related' + ), + 'currency_id' => array( + 'name' => 'currency_id', + 'type' => 'enum', + 'options' => 'currency_dom', + 'label' => 'LBL_CURRENCY', + 'len' => 36 + ), + 'document_type' => array( + 'name' => 'document_type', + 'type' => 'enum', + 'options' => 'document_type_enum', + 'default' => 'k', + 'label' => 'Typ faktury', + 'required' => true, + 'len' => 45 + ), + 'transaction_type' => array( + 'name' => 'transaction_type', + 'type' => 'enum', + 'options' => 'transaction_type3_dom', + 'size' => 3, + 'default' => '1', + 'vname' => 'Typ transakcji', + 'label' => 'Typ transakcji', + 'required' => true, + 'len' => 45 + ), + 'currency_value' => array( + 'name' => 'currency_value', + 'type' => 'varchar', + 'vname' => 'LBL_CURRENCY_VALUE', + 'reportable' => false, + 'required' => false + ), + 'parent_name' => array( + 'name' => 'parent_name', + + 'type_name' => 'parent_type', + 'id_name' => 'parent_id', + 'vname' => 'LBL_LIST_RELATED_TO', + 'type' => 'parent', + + 'source' => 'non-db', + 'options' => 'parent_type_display2' + ), + 'corrected_document_name' => array( + 'name' => 'corrected_document_name', + 'vname' => 'Korekta do dokumentu', + 'rname' => 'document_name', + 'type' => 'varchar', + 'group' => 'corrected_document_name', + 'dbtype' => 'varchar', + 'len' => '255', + 'massupdate' => false, + 'required' => false + ), + 'parent_id' => array( + 'name' => 'parent_id', + 'type' => 'id', + 'group' => 'parent_name', + 'reportable' => false, + 'source' => 'non-db', + 'vname' => 'LBL_PARENT_ID' + ), + + 'document_name' => array( + 'name' => 'document_name', + 'vname' => 'LBL_NAME', + 'type' => 'varchar', + + 'len' => '255', + 'required' => true, + 'importable' => 'required' + ), + 'document_number' => array( + 'name' => 'document_name', + 'type' => 'varchar', + 'len' => '45', + ), + 'name' => array( + 'name' => 'name', + 'vname' => 'LBL_NAME', + 'source' => 'non-db', + 'type' => 'varchar' + ), + 'filename' => array( + 'name' => 'filename', + 'vname' => 'LBL_FILENAME', + 'type' => 'file', + 'source' => 'non-db', + 'comment' => 'The filename of the document attachment', + 'required' => false + ), + + 'uploadfile' => array( + 'name' => 'uploadfile', + 'required' => false, + 'vname' => 'LBL_FILENAME', + 'type' => 'file', + 'source' => 'non-db' + ), + + 'active_date' => array( + 'name' => 'active_date', + 'vname' => 'LBL_DOC_ACTIVE_DATE', + 'type' => 'date', + 'importable' => 'required', + 'required' => true + ), + + 'exp_date' => array( + 'name' => 'exp_date', + 'vname' => 'LBL_DOC_EXP_DATE', + 'type' => 'date' + ), + + 'category_id' => array( + 'name' => 'category_id', + 'vname' => 'LBL_SF_CATEGORY', + 'type' => 'enum', + 'len' => '25', + 'options' => 'document_category_dom', + 'reportable' => false + ), + + 'subcategory_id' => array( + 'name' => 'subcategory_id', + 'vname' => 'LBL_SF_SUBCATEGORY', + 'type' => 'enum', + 'len' => '25', + 'options' => 'document_subcategory_dom', + 'reportable' => false + ), + 'payment_date' => array( + 'name' => 'payment_date', + 'vname' => 'LBL_PAYMENT_DATE', + 'type' => 'date', + 'reportable' => false, + 'showFormats' => true, + 'massupdate' => false, + 'required' => false + ), + 'status_id' => array( + 'name' => 'status_id', + 'vname' => 'LBL_DOC_STATUS', + 'type' => 'enum', + 'len' => '25', + 'options' => 'document_status_dom', + 'reportable' => false + ), + + + + 'document_revision_id' => array( + 'name' => 'document_revision_id', + 'vname' => 'LBL_LATEST_REVISION', + 'type' => 'varchar', + 'len' => '36', + 'reportable' => false, + 'required' => false + ), + + 'revisions' => array( + 'name' => 'revisions', + 'type' => 'link', + 'relationship' => 'document_revisions', + 'source' => 'non-db', + 'vname' => 'LBL_REVISIONS', + 'required' => false + ), + + 'revision' => array( + 'name' => 'revision', + 'vname' => 'LBL_DOC_VERSION', + 'type' => 'varchar', + 'reportable' => false, + 'required' => true, + 'source' => 'non-db', + 'importable' => 'required', + 'required' => true + ), + + 'last_rev_created_name' => array( + 'name' => 'last_rev_created_name', + 'vname' => 'LBL_LAST_REV_CREATOR', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'last_rev_mime_type' => array( + 'name' => 'last_rev_mime_type', + 'vname' => 'LBL_LAST_REV_MIME_TYPE', + 'type' => 'varchar', + 'reportable' => false, + 'studio' => 'false', + 'source' => 'non-db' + ), + 'latest_revision' => array( + 'name' => 'latest_revision', + 'vname' => 'LBL_LATEST_REVISION', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'last_rev_create_date' => array( + 'name' => 'last_rev_create_date', + 'type' => 'date', + 'table' => 'document_revisions', + 'link' => 'revisions', + 'join_name' => 'document_revisions', + 'vname' => 'LBL_LAST_REV_CREATE_DATE', + 'rname' => 'date_entered', + 'reportable' => false, + 'source' => 'non-db' + ), + 'contracts' => array( + 'name' => 'contracts', + 'type' => 'link', + 'relationship' => 'contracts_documents', + 'source' => 'non-db', + 'vname' => 'LBL_CONTRACTS' + ), + // todo remove + 'leads' => array( + 'name' => 'leads', + 'type' => 'link', + 'relationship' => 'leads_documents', + 'source' => 'non-db', + 'vname' => 'LBL_LEADS' + ), + + 'related_doc_id' => array( + 'name' => 'related_doc_id', + 'vname' => 'LBL_RELATED_DOCUMENT_ID', + 'reportable' => false, + 'dbType' => 'id', + 'type' => 'varchar', + 'len' => '36' + ), + + 'related_doc_name' => array( + 'name' => 'related_doc_name', + 'vname' => 'LBL_DET_RELATED_DOCUMENT', + 'type' => 'relate', + 'table' => 'documents', + 'id_name' => 'related_doc_id', + 'module' => 'Documents', + 'source' => 'non-db', + 'comment' => 'The related document name for Meta-Data framework' + ), + + 'related_doc_rev_id' => array( + 'name' => 'related_doc_rev_id', + 'vname' => 'LBL_RELATED_DOCUMENT_REVISION_ID', + 'reportable' => false, + 'dbType' => 'id', + 'type' => 'varchar', + 'len' => '36' + ), + + 'related_doc_rev_number' => array( + 'name' => 'related_doc_rev_number', + 'vname' => 'LBL_DET_RELATED_DOCUMENT_VERSION', + 'type' => 'varchar', + 'source' => 'non-db', + 'comment' => 'The related document version number for Meta-Data framework' + ), + + 'is_template' => array( + 'name' => 'is_template', + 'vname' => 'LBL_IS_TEMPLATE', + 'type' => 'bool', + 'default' => 0, + 'reportable' => false + ), + 'accepted' => array( + 'name' => 'accepted', + 'vname' => 'LBL_TO_ACCEPT', + 'type' => 'enum', + 'source' => 'non-db', + 'default' => 0, + 'options' => 'document_user_status_dom', + 'reportable' => false + ), + 'status' => array( + 'name' => 'status', + 'vname' => 'Status', + 'type' => 'enum', + + 'options' => 'status_user_status_dom', + 'reportable' => false, + 'required' => true + ), + 'date_start' => array( + 'name' => 'date_start', + 'vname' => 'LBL_DATE_START', + 'type' => 'date', + 'source' => 'non-db', + 'default' => 0, + 'reportable' => false + ), + 'date_end' => array( + 'name' => 'date_end', + 'vname' => 'LBL_DATE_END', + 'type' => 'date', + 'source' => 'non-db', + 'default' => 0, + 'reportable' => false + ), + 'template_type' => array( + 'name' => 'template_type', + 'vname' => 'LBL_TEMPLATE_TYPE', + 'type' => 'enum', + 'len' => '25', + 'options' => 'document_template_type_dom', + 'reportable' => false + ), + // BEGIN field used for contract document subpanel. + 'latest_revision_name' => array( + 'name' => 'latest_revision_name', + 'vname' => 'LBL_LASTEST_REVISION_NAME', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + + 'selected_revision_name' => array( + 'name' => 'selected_revision_name', + 'vname' => 'LBL_SELECTED_REVISION_NAME', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'contract_status' => array( + 'name' => 'contract_status', + 'vname' => 'LBL_CONTRACT_STATUS', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'contract_name' => array( + 'name' => 'contract_name', + 'vname' => 'LBL_CONTRACT_NAME', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'linked_id' => array( + 'name' => 'linked_id', + 'vname' => 'LBL_LINKED_ID', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'selected_revision_id' => array( + 'name' => 'selected_revision_id', + 'vname' => 'LBL_SELECTED_REVISION_ID', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'latest_revision_id' => array( + 'name' => 'latest_revision_id', + 'vname' => 'LBL_LATEST_REVISION_ID', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'selected_revision_filename' => array( + 'name' => 'selected_revision_filename', + 'vname' => 'LBL_SELECTED_REVISION_FILENAME', + 'type' => 'varchar', + 'reportable' => false, + 'source' => 'non-db' + ), + 'document_date' => array( + 'name' => 'document_date', + 'vname' => 'LBL_DOCUMENT_DATE', + 'type' => 'date', + 'reportable' => false, + 'showFormats' => true, + 'massupdate' => false, + 'required' => true + ) + // END fields used for contract documents subpanel. + ), + + 'indices' => array( + array( + 'name' => 'idx_doc_cat', + 'type' => 'index', + 'fields' => array( + 'category_id', + 'subcategory_id' + ) + ) + ), + 'relationships' => array( + 'document_revisions' => array( + 'lhs_module' => 'Documents', + 'lhs_table' => 'documents', + 'lhs_key' => 'id', + 'rhs_module' => 'Documents', + 'rhs_table' => 'document_revisions', + 'rhs_key' => 'document_id', + 'relationship_type' => 'one-to-many' + ), + + 'documents_modified_user' => array( + 'lhs_module' => 'Users', + 'lhs_table' => 'users', + 'lhs_key' => 'id', + 'rhs_module' => 'Documents', + 'rhs_table' => 'documents', + 'rhs_key' => 'modified_user_id', + 'relationship_type' => 'one-to-many' + ), + + 'documents_created_by' => array( + 'lhs_module' => 'Users', + 'lhs_table' => 'users', + 'lhs_key' => 'id', + 'rhs_module' => 'Documents', + 'rhs_table' => 'documents', + 'rhs_key' => 'created_by', + 'relationship_type' => 'one-to-many' + ) + ) ); -VardefManager::createVardef ( 'Documents', 'Document', array ( - 'default' -) ); -?> +VardefManager::createVardef('Documents', 'Document', array( + 'default' +)); diff --git a/modules/Documents/views/view.edit.php b/modules/Documents/views/view.edit.php index 075aaa7f..645d716e 100644 --- a/modules/Documents/views/view.edit.php +++ b/modules/Documents/views/view.edit.php @@ -104,6 +104,8 @@ src="modules/Documents/js/Documents13.js">bean->vats); } else { global $timedate; $format = $timedate->get_cal_date_format(); diff --git a/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.js b/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.js index 6938c7aa..e6c2cf2e 100644 --- a/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.js +++ b/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.js @@ -24,22 +24,46 @@ $(document).ready(function () { }); function exportToRewizor(source, date, type) { + if (type == undefined || type == null || type == "") { + alert("Wybierz rodzaj faktur (normalne lub korekty)."); + return; + } + if (source == undefined || source == null || source == "") { + alert("Wybierz źródło faktur."); + return; + } + blockUI("Trwa generowanie pliku..."); - $.ajax({ - url: "index.php?module=EcmInvoiceOuts&action=ecommerce&ajax=exportToRewizor&to_pdf=1&source="+source+"&date="+date+"&type="+type, - type: "GET", - success: function (data) { + + var xhr = new XMLHttpRequest(); + xhr.open('GET', "index.php?module=EcmInvoiceOuts&action=ecommerce&ajax=exportToRewizor&to_pdf=1&source="+source+"&date="+date+"&type="+type, true); + xhr.responseType = 'arraybuffer'; + + xhr.onload = function() { + if (xhr.status === 200) { + var arrayBuffer = xhr.response; + var bytes = new Uint8Array(arrayBuffer); + var data = ''; + for (var i = 0; i < bytes.length; i++) { + data += String.fromCharCode(bytes[i]); + } + data = data.replace(/ {4}/g, ""); data = data.replace(/\n/g, "\r\n"); - var bytes = new TextEncoder("windows-1252", { NONSTANDARD_allowLegacyEncoding: true }).encode(data); - var filename = "rewizor-allegro.epp"; - var blob = new Blob([bytes], { type: "text/csv"}); + + var finalBytes = new Uint8Array(data.length); + for (var i = 0; i < data.length; i++) { + finalBytes[i] = data.charCodeAt(i) & 0xFF; + } + + var filename = `rewizor-${source}-${type}.epp`; + var blob = new Blob([finalBytes], { type: "text/plain;charset=iso-8859-2"}); + if (navigator.msSaveBlob) { // IE 10+ navigator.msSaveBlob(blob, filename); } else { var link = document.createElement("a"); if (link.download !== undefined) { // feature detection - // Browsers that support HTML5 download attribute var url = URL.createObjectURL(blob); link.setAttribute("href", url); link.setAttribute("download", filename); @@ -48,16 +72,21 @@ function exportToRewizor(source, date, type) { link.click(); document.body.removeChild(link); } - $.unblockUI(); } - $.unblockUI(); - }, - error: function () { + + } else { window.alert("Błąd eksportu."); $.unblockUI(); } - }); + }; + + xhr.onerror = function() { + window.alert("Błąd eksportu."); + $.unblockUI(); + }; + + xhr.send(); } function blockUI($msg) { diff --git a/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.php b/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.php index 9aac7b52..8b569cf0 100644 --- a/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.php +++ b/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.php @@ -53,14 +53,20 @@ function show() function getInvoices($source, $date, $type) { $db = $GLOBALS['db']; - if ($source =='') $source = '%'; $date .= '%'; $query = "SELECT i.*, wz.document_no AS wz_document_no, wz.id AS wz_id FROM ecommerce_invoices AS i LEFT JOIN ecmstockdocouts AS wz on wz.id = i.ecmstockdocout_id "; - $query .= " WHERE i.origin LIKE '$source' AND i.register_date LIKE '$date'"; - if ($type !='') { - $query.=" AND i.type='$type'"; + $query .= " WHERE i.register_date LIKE '$date'"; + if ($source != '') { + if ($source == 'baselinker') { + $query .= " AND i.origin IN ('allegro', 'shop')"; + } else { + $query .= " AND i.origin = '$source'"; + } + } + if ($type != '') { + $query .= " AND i.type='$type'"; } $query .= " ORDER BY i.register_date"; $result = $db->query($query); @@ -99,10 +105,11 @@ function getDates() function getSources() { $db = $GLOBALS['db']; $sources = array(); - $res = $db->query("SELECT DISTINCT origin FROM ecommerce_invoices"); + $res = $db->query("SELECT DISTINCT origin FROM ecommerce_invoices WHERE origin NOT IN ('allegro', 'shop')"); while ($row = $db->fetchByAssoc($res)) { $sources[]= $row['origin']; } + $sources[] = 'baselinker'; return $sources; } @@ -125,14 +132,13 @@ function exportToRewizor($source, $date, $type) } $smarty->assign("data", $invoices); + $result = ''; if ($type == 'normal') { - $result = $smarty->display(getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/rewizor.tpl'); + $result = $smarty->fetch(getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/rewizor.tpl'); } else { - $result = $smarty->display(getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/rewizor_fvkor.tpl'); + $result = $smarty->fetch(getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/rewizor_fvkor.tpl'); } - // encode result as ansi - echo $result; - //echo mb_convert_encoding($result, 'ANSI', 'UTF-8'); + echo mb_convert_encoding($result, 'ISO-8859-2', 'UTF-8'); } function brecho($var) diff --git a/modules/EcmProducts/EcmProduct.php b/modules/EcmProducts/EcmProduct.php index 092c5622..7879b39b 100755 --- a/modules/EcmProducts/EcmProduct.php +++ b/modules/EcmProducts/EcmProduct.php @@ -165,6 +165,8 @@ class EcmProduct extends SugarBean { var $position_list; var $th; var $ean; + var $position_list3; + var $modified_user_name; // RELATED FIELDS var $created_by; var $created_by_name; diff --git a/modules/EcmReports/RewizorGT/PurchaseCreator.php b/modules/EcmReports/RewizorGT/PurchaseCreator.php index 226a94cc..c37f4208 100644 --- a/modules/EcmReports/RewizorGT/PurchaseCreator.php +++ b/modules/EcmReports/RewizorGT/PurchaseCreator.php @@ -14,7 +14,8 @@ class PurchaseCreator{ } public function getPurchases($type){ - $query="select * from documents where document_date>='" . $this->date_from . "' and document_date<='" . $this->date_to . "' and category_id in ('invoice','compain_note','return_note') and deleted=0"; + //$query = "SELECT * FROM documents WHERE id='790f2a4d-28d7-e135-9be2-68408ca7279a'"; + //$query="select * from documents where document_date>='" . $this->date_from . "' and document_date<='" . $this->date_to . "' and category_id in ('invoice','compain_note','return_note') and deleted=0"; if ($type == "new") { $query .= " and exported = 0"; } diff --git a/modules/EcmSales/EcmSale.php b/modules/EcmSales/EcmSale.php index 9eef0b71..bcbc4039 100755 --- a/modules/EcmSales/EcmSale.php +++ b/modules/EcmSales/EcmSale.php @@ -148,6 +148,7 @@ class EcmSale extends SugarBean { var $pdf_type; var $pdf_text; var $ecommerce_invoices; + var $vats_summary; // SUBPANELS RELATED // MODULE OBJECT DETAILS var $module_dir = "EcmSales"; diff --git a/modules/EcmStockDocIns/EcmStockDocIn.php b/modules/EcmStockDocIns/EcmStockDocIn.php index 39469816..539b282b 100755 --- a/modules/EcmStockDocIns/EcmStockDocIn.php +++ b/modules/EcmStockDocIns/EcmStockDocIn.php @@ -77,6 +77,28 @@ class EcmStockDocIn extends SugarBean { var $stock_id; var $parent_id; var $parent_name; + var $parent_address_street; + var $parent_address_postalcode; + var $parent_address_city; + var $parent_address_country; + var $parent_nip; + var $status; + var $kind; + var $total_netto; + var $total_brutto; + var $canceled; + var $country_transport_val; + var $foreign_transport_val; + var $foreign_transport_cur_id; + var $country_transport_cur_id; + var $addition_cost_val; + var $addition_cost_cur_id; + var $currency_id; + var $currency_value; + var $currency_sad_value; + var $vats_summary; + var $date_fk; + var $fromREST; // SUBPANELS RELATED // MODULE OBJECT DETAILS var $module_dir = "EcmStockDocIns";