Преглед изворни кода

fixed Zaliczka::addItem with price, updated schema

Piotr Labudda пре 9 година
родитељ
комит
ea02ca12a7

+ 3 - 2
SE/se-lib/Route/UrlAction/UserProNetMediaZaliczka.php

@@ -229,6 +229,7 @@ class Route_UrlAction_UserProNetMediaZaliczka extends RouteBase {// TODO: UrlAct
 				]));
 			UI::endContainer();
 			UI::dol();
+			DBG::log($e);
 			exit;
 		}
 
@@ -335,8 +336,7 @@ window.location.href='{$redirectUrl}';
 
 			ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'worker');
 			ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'pozycja');
-			ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'projekt');
-			ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'korespondencja');
+			ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'korespondencja');
 			$refZaliczkaTables = DB::getPDO()->fetchAll("
 				select t.*
 				from `CRM_REF_CONFIG` t
@@ -371,6 +371,7 @@ window.location.href='{$redirectUrl}';
 			UI::endContainer();
 		} catch (Exception $e) {
 			UI::alert('danger', $e->getMessage());
+			DBG::log($e);
 		}
 		UI::dol();
 	}

+ 28 - 8
SE/se-lib/Route/UrlAction/UserProNetMediaZaliczka.php.fetchData.js

@@ -4,12 +4,17 @@ function zaliczkaFetchData(query, fieldType, resultCallback) {
   console.warn('TODO: zaliczkaFetchData(query, fieldType, resultCallback)  query('+query+') fieldType:', fieldType);
 
   // fieldType: Object {"@namespace": "default_db:IN7_DZIENNIK_KORESP", id: "xsd:integer", title: "xsd:string", kategoriaKosztu: "xsd:string"}
-  if ('object' === typeof fieldType) {
-    if (!fieldType['@namespace']) {
-      // TODO: log error
-      console.error("BUG: Missing typeName in fieldType");
-      return;
-    }
+  if ('object' !== typeof fieldType) {
+    console.log("BUG: Unsupported type '" + fieldType + "'");
+    return;
+  }
+  if (!fieldType['@namespace'] && !fieldType['xsdType']) {
+    // TODO: log error
+    console.error("BUG: Missing xmlns or xsdType on fieldType");
+    return;
+  }
+
+  if (fieldType['@namespace']) {
     switch (fieldType['@namespace']) {
       case 'default_db/IN7_MK_BAZA_DYSTRYBUCJI/ZaliczkaProjekt':
       case 'default_db/IN7_DZIENNIK_KORESP/ZaliczkaKoresp':
@@ -38,8 +43,23 @@ function zaliczkaFetchData(query, fieldType, resultCallback) {
         console.log("BUG: Unsupported type namespace '" + fieldType['@namespace'] + "'");
       }
     }
-  } else {
-    console.log("BUG: Unsupported type '" + fieldType + "'");
+    return;
+  }
+
+  if (fieldType['xsdType']) {
+    switch (fieldType['xsdType']) {
+      case 'default_db__x3A__ZALICZKA_POZYCJA:kategoria_kosztuType': {
+        var options = [
+          'Koszt-1',
+          'Koszt-2',
+          'Koszt-3',
+        ]
+        resultCallback({options: options});
+      } break;
+      default: {
+        console.warn("BUG: Unsupported xsdType '" + fieldType['xsdType'] + "'");
+      }
+    }
     return;
   }
 }

+ 1 - 0
SE/se-lib/Schema/DefaultDb/in7_dziennik_koresp/ZaliczkaKorespStorageAcl.php

@@ -12,6 +12,7 @@ class Schema_DefaultDb_in7_dziennik_koresp_ZaliczkaKorespStorageAcl extends Core
       'id' => [ '@type' => 'xsd:integer', '@alias' => 'ID' ],
       'title' => [ '@type' => 'xsd:string', '@alias' => 'K_ZAWARTOS' ],
       'kategoriaKosztu' => [ '@type' => 'xsd:string', '@alias' => 'KATEGORIA_KOSZTU' ],
+      'projekt' => [ '@ref' => 'default_db/IN7_MK_BAZA_DYSTRYBUCJI/ZaliczkaProjekt' ],
     ],
   ];
 

+ 82 - 41
SE/se-lib/Schema/DefaultDb/zaliczka/ZaliczkaStorageAcl.php

@@ -2,6 +2,7 @@
 
 Lib::loadClass('Core_AclSimpleSchemaBase');// extends Core_AclBase
 Lib::loadClass('Core_AclHelper');
+Lib::loadClass('DBG');
 
 class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaBase {
 
@@ -14,6 +15,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
       'worker' => [ '@ref' => 'default_objects/AccessOwner' ],// 'alias_ref:default_objects:AccessOwner'
       'kwota' => [ '@type' => 'xsd:decimal', '@totalDigits' => 16, '@fractionDigits' => 2, '@alias' => 'KWOTA' ],
       'nierozliczona_kwota' => [ '@type' => 'xsd:decimal', '@totalDigits' => 16, '@fractionDigits' => 2, '@alias' => 'NIEROZLICZONA_KWOTA' ],
+      'korespondencja' => [ '@ref' => 'default_db/IN7_DZIENNIK_KORESP/ZaliczkaKoresp' ],
       'pozycja' => [ '@ref' => 'default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', '@maxOccurs' => 'unbounded' ]
     ],
   ];
@@ -48,12 +50,14 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
   }
 
   public function addItem($itemTodo) {
-    // TODO: btn "Dodaj Zaliczkę" $acl->addItem($item); // @require only 'worker' => [ 'id', 'login', 'name' ]
-    $DBG = V::get('DBG', '', $_GET);
-    if($DBG){DBG::nicePrint($itemTodo, '$itemTodo');}
+    DBG::log(['msg' => '$itemTodo', 'log' => $itemTodo]);
 
     if (!is_array($itemTodo) || empty($itemTodo['worker'])) throw new Exception("Missing worker");
     if (empty($itemTodo['worker']['id'])) throw new Exception("Missing worker id");
+    if (empty($itemTodo['kwota'])) throw new Exception("Nie podano kwoty");
+    $itemTodo['kwota'] = floatval($itemTodo['kwota']);
+    if ($itemTodo['kwota'] <= 0) throw new Exception("Podano błędną kwotę");
+
     $idUser = intval($itemTodo['worker']['id']);
     if ($idUser <= 0) throw new Exception("Wrong worker id");
 
@@ -64,7 +68,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
       where u.ID = {$idUser}
     ");
     if (empty($userLogin)) throw new Exception("User not exists ID={$idUser}");
-    if($DBG){DBG::nicePrint($userLogin, '$userLogin');}
+    DBG::log(['msg' => '$userLogin', 'log' => $userLogin]);
 
     $idTransaction = Core_AclHelper::startTransaction('ZALICZKA', $idUser, $userLogin);
 
@@ -78,16 +82,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
       where r.ID = {$idUser}
         and t.A_STATUS in('WAITING', 'NORMAL') -- TODO cache use #INSTANCE table
     ");
-    if($DBG){DBG::nicePrint("
-      select MAX(t.ID)
-      from `ZALICZKA` t
-        -- join `ADMIN_USERS` u on(t.L_APPOITMENT_USER = u.ADM_ACCOUNT)
-        left join `{$zaliczkaRefWorker}` ref on(ref.PRIMARY_KEY = t.ID and ref.A_STATUS != 'DELETED')
-        left join `ADMIN_USERS` r on(r.ID = ref.REMOTE_PRIMARY_KEY)
-      where r.ID = {$idUser}
-        and t.A_STATUS in('WAITING', 'NORMAL') -- TODO cache use #INSTANCE table
-    ", 'sql');}
-    if($DBG){DBG::nicePrint($idActiveZaliczka, '$idActiveZaliczka');}
+    DBG::log(['msg' => '$idActiveZaliczka', 'log' => $idActiveZaliczka]);
 
     $userSaldo = 0;
     if ($idActiveZaliczka > 0) {
@@ -100,20 +95,20 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
         where t.ID = {$idActiveZaliczka}
     	");
     }
-    if($DBG){DBG::nicePrint($userSaldo, '$userSaldo');}
+    DBG::log(['msg' => '$userSaldo', 'log' => $userSaldo]);
 
     $usrLogin = User::getLogin();
     $execRet = DB::getPDO()->execSql("
       insert into `ZALICZKA` (A_RECORD_CREATE_AUTHOR, A_RECORD_CREATE_DATE
-          , L_APPOITMENT_USER, NIEROZLICZONA_KWOTA)
+          , L_APPOITMENT_USER, NIEROZLICZONA_KWOTA, KWOTA)
         select '{$usrLogin}' as A_RECORD_CREATE_AUTHOR, NOW() as A_RECORD_CREATE_DATE
-          , u.ADM_ACCOUNT, '{$userSaldo}'
+          , u.ADM_ACCOUNT, '{$userSaldo}', '{$itemTodo['kwota']}'
         from ADMIN_USERS u
         where u.ID = {$idUser}
     ");
-    if($DBG){DBG::nicePrint($execRet, '$execRet');}
+    DBG::log(['msg' => '$execRet', 'log' => $execRet]);
     $id = DB::getPDO()->lastInsertId();
-    if($DBG){DBG::nicePrint($id, '$id');}
+    DBG::log(['msg' => '$id', 'log' => $id]);
     if (!$id) throw new Exception("Wystąpiły błędy podczas dodawania Zaliczki do bazy danych");
 
     DB::getPDO()->execSql("
@@ -128,7 +123,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
       where z.ID != {$id}
         and z.L_APPOITMENT_USER = '{$userLogin}'
     ") as $instance) {
-      if($DBG){DBG::nicePrint($instance, '$instance');}
+      DBG::log(['msg' => 'old $instance', 'log' => $instance]);
 
       // FIX Instance name
       foreach (DB::getPDO()->fetchAll("
@@ -140,21 +135,21 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
         where z.ID != {$id}
           and z.L_APPOITMENT_USER = '{$userLogin}'
       ") as $instance) {
-        if($DBG){DBG::nicePrint($instance, '$instance');}
+        DBG::log(['msg' => 'fix instance name $instance', 'log' => $instance]);
   			if (!$instance['has_instance']) {
-          DB::getPDO()->execSql("
-    				insert into `ZALICZKA__#INSTANCE_HIST` (PRIMARY_KEY, INSTANCE_NAME)
-    					values ({$instance['ID_ZALICZKA']}, 'ZaliczkaArchiwalna')
-    			");
-  				DB::getPDO()->execSql("
-  					insert into `ZALICZKA__#INSTANCE` (PRIMARY_KEY, INSTANCE_NAME)
-  						values ({$instance['ID_ZALICZKA']}, 'ZaliczkaArchiwalna')
-  				");
+          DB::getPDO()->insert('ZALICZKA__#INSTANCE_HIST', [
+            'PRIMARY_KEY' => $instance['ID_ZALICZKA'],
+            'INSTANCE_NAME' => 'ZaliczkaArchiwalna'
+    			]);
+  				DB::getPDO()->insert('ZALICZKA__#INSTANCE', [
+            'PRIMARY_KEY' => $instance['ID_ZALICZKA'],
+            'INSTANCE_NAME' => 'ZaliczkaArchiwalna'
+  				]);
   			} else if ('ZaliczkaAktywna' == $instance['INSTANCE_NAME']) {
-          DB::getPDO()->execSql("
-    				insert into `ZALICZKA__#INSTANCE_HIST` (PRIMARY_KEY, INSTANCE_NAME)
-    					values ({$instance['ID_ZALICZKA']}, 'ZaliczkaArchiwalna')
-    			");
+          DB::getPDO()->insert('ZALICZKA__#INSTANCE_HIST', [
+            'PRIMARY_KEY' => $instance['ID_ZALICZKA'],
+            'INSTANCE_NAME' => 'ZaliczkaArchiwalna'
+    			]);
   				DB::getPDO()->execSql("
   					update `ZALICZKA__#INSTANCE`
   					set INSTANCE_NAME = 'ZaliczkaArchiwalna'
@@ -165,7 +160,13 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
       }
     }
 
-    $this->insertRef('worker', $id, $idUser);
+    $this->insertRef('worker', $id, $idUser);// TODO: add to hist table
+
+    $childTableKwota = $this->getChildHistTable('kwota');
+    DB::getPDO()->insert($childTableKwota, [
+      'VALUE' => $itemTodo['kwota'],
+      'A_TRANSACTION_ID' => $idTransaction
+    ]);
 
     DB::getPDO()->execSql("
       update ZALICZKA
@@ -176,8 +177,8 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
 
     // TODO: legacy fill table ZALICZKA_HIST
     DB::getPDO()->execSql("
-      insert into `ZALICZKA_HIST` (ID_USERS2, L_APPOITMENT_USER, NIEROZLICZONA_KWOTA)
-        select z.ID as ID_USERS2, z.L_APPOITMENT_USER, z.NIEROZLICZONA_KWOTA
+      insert into `ZALICZKA_HIST` (ID_USERS2, L_APPOITMENT_USER, NIEROZLICZONA_KWOTA, KWOTA)
+        select z.ID as ID_USERS2, z.L_APPOITMENT_USER, z.NIEROZLICZONA_KWOTA, z.KWOTA
         from ZALICZKA z
         where z.ID = {$id}
     ");
@@ -268,7 +269,11 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
 				`A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '',
 				`A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '',
 				`L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT '',
-				`KWOTA` decimal(16,2) NOT NULL DEFAULT 0,
+        `nr_faktury` varchar(255) NOT NULL DEFAULT '',
+				`kwota` decimal(16,2) NOT NULL DEFAULT 0,
+				`vat` int(11) NOT NULL DEFAULT 23,
+				`kwota_netto` decimal(16,2) NOT NULL DEFAULT 0,
+        `kategoria_kosztu` varchar(255) NOT NULL DEFAULT '',
 				PRIMARY KEY (`ID`)
 			) ENGINE=MyISAM DEFAULT CHARSET=latin2;
 		");
@@ -284,16 +289,49 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
 				`A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT 'N/S;',
 				`A_CLASSIFIED` varchar(100) NOT NULL DEFAULT 'N/S;',
 				`L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT 'N/S;',
-				`KWOTA` varchar(16) NOT NULL DEFAULT 'N/S;',
+				`nr_faktury` varchar(255) NOT NULL DEFAULT 'N/S;',
+				`kwota` varchar(16) NOT NULL DEFAULT 'N/S;',
+				`vat` varchar(5) NOT NULL DEFAULT 'N/S;',
+				`kwota_netto` varchar(16) NOT NULL DEFAULT 'N/S;',
+        `kategoria_kosztu` varchar(255) NOT NULL DEFAULT 'N/S;',
 				PRIMARY KEY (`ID`),
 			  KEY `ID_USERS2` (`ID_USERS2`)
 			) ENGINE=MyISAM  DEFAULT CHARSET=latin2;
 		");
 
+    echo UI::h('div', [ 'class' => "container", 'style' => "background:#ffe5b6; margin-top:6px" ], "<p style=\"margin:0; padding:6px\">Upgrade schema</p>");
+    UI::startContainer([ 'style' => "max-height:200px; overflow-y:scroll; border:1px solid #ffe5b6" ]);
+    try {
+      DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` ADD `nr_faktury` varchar(255) NOT NULL DEFAULT '' ");
+    } catch (Exception $e) { UI::alert('warning', $e->getMessage()); }
+    try {
+      DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` ADD `vat` int(11) NOT NULL DEFAULT 23 ");
+    } catch (Exception $e) { UI::alert('warning', $e->getMessage()); }
+    try {
+      DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` ADD `kwota_netto` decimal(16,2) NOT NULL DEFAULT 0 ");
+    } catch (Exception $e) { UI::alert('warning', $e->getMessage()); }
+    try {
+      DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` ADD `kategoria_kosztu` varchar(255) NOT NULL DEFAULT '' ");
+    } catch (Exception $e) { UI::alert('warning', $e->getMessage()); }
+    try {
+      DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA_HIST` ADD `nr_faktury` varchar(255) NOT NULL DEFAULT 'N/S;' ");
+    } catch (Exception $e) { UI::alert('warning', $e->getMessage()); }
+    try {
+      DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA_HIST` ADD `vat` varchar(5) NOT NULL DEFAULT 'N/S;' ");
+    } catch (Exception $e) { UI::alert('warning', $e->getMessage()); }
+    try {
+      DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA_HIST` ADD `kwota_netto` varchar(16) NOT NULL DEFAULT 'N/S;' ");
+    } catch (Exception $e) { UI::alert('warning', $e->getMessage()); }
+    try {
+      DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA_HIST` ADD `kategoria_kosztu` varchar(255) NOT NULL DEFAULT 'N/S;' ");
+    } catch (Exception $e) { UI::alert('warning', $e->getMessage()); }
+    UI::endContainer();
+
     ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'worker');
     ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'pozycja');
-    ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'projekt');
-    ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'korespondencja');
+    ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'korespondencja');
+    // ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'projekt');
+    // ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'korespondencja');
 
     Core_AclHelper::getInstanceTable('ZALICZKA');// `ZALICZKA__#INSTANCE`
     // TODO: ZaliczkaOczekujaca   A_STATUS = WAITING  -- dodane przez pracownika
@@ -306,11 +344,14 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
     Core_AclHelper::getTransactionTable('ZALICZKA');// `ZALICZKA__#TRANSACTION`
     Core_AclHelper::getTransactionTable('ZALICZKA_POZYCJA');// `ZALICZKA_POZYCJA__#TRANSACTION`
 
+    echo UI::h('div', [ 'class' => "container", 'style' => "background:#ffe5b6; margin-top:6px" ], "<p style=\"margin:0; padding:6px\">create ChildHistTable</p>");
+    UI::startContainer([ 'style' => "max-height:200px; overflow-y:scroll; border:1px solid #ffe5b6" ]);
     foreach ($this->_simpleSchema['root'] as $childName => $schema) {
       if ('@' == substr($childName, 0, 1)) continue;
-      Core_AclHelper::getChildHistTable('ZALICZKA', $childName, $schema);
+      $this->getChildHistTable($childName);
       DBG::nicePrint($schema, '$childName('.$childName.')');// TODO: DBG
     }
+    UI::endContainer();
 	}
 
 }

+ 19 - 2
SE/se-lib/Schema/DefaultDb/zaliczka_pozycja/ZaliczkaPozycjaStorageAcl.php

@@ -10,10 +10,27 @@ class Schema_DefaultDb_zaliczka_pozycja_ZaliczkaPozycjaStorageAcl extends Core_A
       '@namespace' => 'default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja',// Api_WfsNs::getBaseWfsUri() . '/default_db/Zaliczka'
       '@primaryKey' => 'id',
       'id' => 'xsd:integer',
+      'nr_faktury' => [ '@type' => "xsd:string" ],
       'kwota' => [ '@type' => 'xsd:decimal', '@totalDigits' => 16, '@fractionDigits' => 2 ],
-      'korespondencja' => [ '@ref' => 'default_db/IN7_DZIENNIK_KORESP/ZaliczkaKoresp' ],
-      'projekt' => [ '@ref' => 'default_db/IN7_MK_BAZA_DYSTRYBUCJI/ZaliczkaProjekt' ]
+      'vat' => [ '@type' => "xsd:integer", '@default' => 23 ],
+      'kwota_netto' => [ '@type' => 'xsd:decimal', '@totalDigits' => 16, '@fractionDigits' => 2 ],
+      'kategoria_kosztu' => [ '@type' => 'default_db__x3A__ZALICZKA_POZYCJA:kategoria_kosztuType' ],// default_db__x3A__IN7_DZIENNIK_KORESP:kategoria_kosztuType
+      // 'korespondencja' => [ '@ref' => 'default_db/IN7_DZIENNIK_KORESP/ZaliczkaKoresp' ],
+      // 'projekt' => [ '@ref' => 'default_db/IN7_MK_BAZA_DYSTRYBUCJI/ZaliczkaProjekt' ]
     ],
+    // 'kategoria_kosztuType' => [// TODO: enumeration or config for remote data fetch - Typespecial
+      // <xsd:simpleType name="A_STATUSType">
+      //   <xsd:restriction base="xsd:string">
+      //     <xsd:enumeration value="DELETED"/>
+      //     <xsd:enumeration value="MONITOR"/>
+      //     <xsd:enumeration value="NORMAL"/>
+      //     <xsd:enumeration value="OFF_HARD"/>
+      //     <xsd:enumeration value="OFF_SOFT"/>
+      //     <xsd:enumeration value="WAITING"/>
+      //     <xsd:enumeration value="WARNING"/>
+      //   </xsd:restriction>
+      // </xsd:simpleType>
+    // ]
   ];
 
 }

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
SE/static/zaliczka/main.js


Неке датотеке нису приказане због велике количине промена