/examples/schemes/v02_05_00/s5011_JsonSchemaEvtCS.php

https://github.com/nfephp-org/sped-esocial · PHP · 705 lines · 669 code · 21 blank · 15 comment · 2 complexity · c3ac12dd46a0d6badae8b621bc241137 MD5 · raw file

  1. <?php
  2. error_reporting(E_ALL);
  3. ini_set('display_errors', 'On');
  4. require_once '../../../bootstrap.php';
  5. use JsonSchema\Constraints\Constraint;
  6. use JsonSchema\Constraints\Factory;
  7. use JsonSchema\SchemaStorage;
  8. use JsonSchema\Validator;
  9. //S-5011
  10. //Grupo {infoComplObra} – alterada condição.
  11. //Campo {vrSuspBcCp00} – alterada descrição da origem.
  12. //Campo {vrSuspBcCp15} – alterada descrição da origem.
  13. //Campo {vrSuspBcCp20} – alterada descrição da origem.
  14. //Campo {vrSuspBcCp25} – alterada descrição da origem.
  15. //Campo {vrCPCalcPR} – alterado cálculo da alínea a).
  16. $evento = 'evtCS';
  17. $version = '02_05_00';
  18. $jsonSchema = '{
  19. "title": "evtCS",
  20. "type": "object",
  21. "properties": {
  22. "sequencial": {
  23. "required": true,
  24. "type": "integer",
  25. "minimum": 1,
  26. "maximum": 99999
  27. },
  28. "indapuracao": {
  29. "required": true,
  30. "type": "integer",
  31. "minimum": 1,
  32. "maximum": 2
  33. },
  34. "perapur": {
  35. "required": true,
  36. "type": "string",
  37. "pattern": "^([0-9]{4}-(0[1-9]{1}|1[0-2]{1}))$"
  38. },
  39. "nrrecarqbase": {
  40. "required": false,
  41. "type": ["string","null"],
  42. "minLength": 1,
  43. "maxLength": 40
  44. },
  45. "indexistinfo": {
  46. "required": true,
  47. "type": "integer",
  48. "minimum": 1,
  49. "maximum": 3
  50. },
  51. "infocpseg": {
  52. "required": false,
  53. "type": ["object","null"],
  54. "properties": {
  55. "vrdesccp": {
  56. "required": true,
  57. "type": "number"
  58. },
  59. "vrcpseg": {
  60. "required": true,
  61. "type": "number"
  62. }
  63. }
  64. },
  65. "infocontrib": {
  66. "required": true,
  67. "type": "object",
  68. "properties": {
  69. "classtrib": {
  70. "required": true,
  71. "type": "string",
  72. "pattern": "^[0-9]{2}$"
  73. },
  74. "infopj": {
  75. "indcoop": {
  76. "required": false,
  77. "type": ["integer","null"],
  78. "minimum": 0,
  79. "maximum": 3
  80. },
  81. "indconstr": {
  82. "required": true,
  83. "type": "integer",
  84. "minimum": 0,
  85. "maximum": 1
  86. },
  87. "indsubstpatr": {
  88. "required": false,
  89. "type": ["integer","null"],
  90. "minimum": 1,
  91. "maximum": 2
  92. },
  93. "percredcontrib": {
  94. "required": false,
  95. "type": ["number","null"]
  96. },
  97. "infoatconc": {
  98. "required": false,
  99. "type": ["object","null"],
  100. "properties": {
  101. "fatormes": {
  102. "required": true,
  103. "type": "number"
  104. },
  105. "fator13": {
  106. "required": true,
  107. "type": "number"
  108. }
  109. }
  110. }
  111. }
  112. }
  113. },
  114. "ideestab": {
  115. "required": false,
  116. "type": ["array","null"],
  117. "minItems": 0,
  118. "maxItems": 9999,
  119. "items": {
  120. "type": "object",
  121. "properties": {
  122. "tpinsc": {
  123. "required": true,
  124. "type": "integer",
  125. "minimum": 1,
  126. "maximum": 4
  127. },
  128. "nrinsc": {
  129. "required": true,
  130. "type": "string",
  131. "pattern": "^[0-9]{8,14}$"
  132. },
  133. "infoestab": {
  134. "required": false,
  135. "type": ["object","null"],
  136. "properties": {
  137. "cnaeprep": {
  138. "required": true,
  139. "type": "integer"
  140. },
  141. "aliqrat": {
  142. "required": true,
  143. "type": "integer",
  144. "minimum": 1,
  145. "maximum": 4
  146. },
  147. "fap": {
  148. "required": true,
  149. "type": "number",
  150. "minimum": 0.5,
  151. "maximum": 2.0
  152. },
  153. "aliqratajust": {
  154. "required": true,
  155. "type": "number",
  156. "maximun": 6
  157. },
  158. "infocomplobra": {
  159. "required": false,
  160. "type": ["object","null"],
  161. "properties": {
  162. "indsubstpatrobra": {
  163. "required": true,
  164. "type": "integer",
  165. "minimum": 1,
  166. "maximum": 2
  167. }
  168. }
  169. }
  170. },
  171. "idelotacao": {
  172. "required": false,
  173. "type": ["array","null"],
  174. "minItems": 0,
  175. "maxItems": 99,
  176. "items": {
  177. "type": "object",
  178. "properties": {
  179. "codlotacao": {
  180. "required": true,
  181. "type": "string",
  182. "minLength": 1,
  183. "maxLength": 30
  184. },
  185. "fpas": {
  186. "required": true,
  187. "type": "integer"
  188. },
  189. "codtercs": {
  190. "required": true,
  191. "type": "string",
  192. "minLength": 4,
  193. "maxLength": 4
  194. },
  195. "codtercssusp": {
  196. "required": false,
  197. "type": ["string","null"],
  198. "minLength": 4,
  199. "maxLength": 4
  200. },
  201. "infotercsusp": {
  202. "required": false,
  203. "type": ["array","null"],
  204. "minItems": 0,
  205. "maxItems": 15,
  206. "items": {
  207. "type": "object",
  208. "properties": {
  209. "codterc": {
  210. "required": true,
  211. "type": "string",
  212. "minLength": 4,
  213. "maxLength": 4
  214. }
  215. }
  216. }
  217. },
  218. "infoemprparcial": {
  219. "required": false,
  220. "type": "object",
  221. "properties": {
  222. "tpinsccontrat": {
  223. "required": true,
  224. "type": "integer",
  225. "minimum": 1,
  226. "maximum": 2
  227. },
  228. "nrinsccontrat": {
  229. "required": true,
  230. "type": "string",
  231. "pattern": "^[0-9]{11,14}$"
  232. },
  233. "tpinscprop": {
  234. "required": true,
  235. "type": "integer",
  236. "minimum": 1,
  237. "maximum": 2
  238. },
  239. "nrinscprop": {
  240. "required": true,
  241. "type": "string",
  242. "pattern": "^[0-9]{11,14}$"
  243. },
  244. "cnoobra": {
  245. "required": true,
  246. "type": "string",
  247. "pattern": "^[0-9]{12}$"
  248. }
  249. }
  250. },
  251. "dadosopport": {
  252. "required": false,
  253. "type": "object",
  254. "properties": {
  255. "cnpjopportuario": {
  256. "required": true,
  257. "type": "string",
  258. "pattern": "^[0-9]{14}$"
  259. },
  260. "aliqrat": {
  261. "required": true,
  262. "type": "integer",
  263. "minimum": 1,
  264. "maximum": 3
  265. },
  266. "fap": {
  267. "required": true,
  268. "type": "number"
  269. },
  270. "aliqratajust": {
  271. "required": true,
  272. "type": "number",
  273. "maximun": 6
  274. }
  275. }
  276. },
  277. "basesremun": {
  278. "required": false,
  279. "type": ["array","null"],
  280. "minItems": 0,
  281. "maxItems": 99,
  282. "items": {
  283. "type": "object",
  284. "properties": {
  285. "indincid": {
  286. "required": true,
  287. "type": "integer",
  288. "minimum": 1,
  289. "maximum": 9
  290. },
  291. "codcateg": {
  292. "required": true,
  293. "type": "integer",
  294. "minumum": 101,
  295. "maximum": 999
  296. }
  297. },
  298. "basescp": {
  299. "required": true,
  300. "type": "object",
  301. "properties": {
  302. "vrbccp00": {
  303. "required": true,
  304. "type": "number"
  305. },
  306. "vrbccp15": {
  307. "required": true,
  308. "type": "number"
  309. },
  310. "vrbccp20": {
  311. "required": true,
  312. "type": "number"
  313. },
  314. "vrbccp25": {
  315. "required": true,
  316. "type": "number"
  317. },
  318. "vrsuspbccp00": {
  319. "required": true,
  320. "type": "number"
  321. },
  322. "vrsuspbccp15": {
  323. "required": true,
  324. "type": "number"
  325. },
  326. "vrsuspbccp20": {
  327. "required": true,
  328. "type": "number"
  329. },
  330. "vrsuspbccp25": {
  331. "required": true,
  332. "type": "number"
  333. },
  334. "vrdescsest": {
  335. "required": true,
  336. "type": "number"
  337. },
  338. "vrcalcsest": {
  339. "required": true,
  340. "type": "number"
  341. },
  342. "vrdescsenat": {
  343. "required": true,
  344. "type": "number"
  345. },
  346. "vrcalcsenat": {
  347. "required": true,
  348. "type": "number"
  349. },
  350. "vrsalfam": {
  351. "required": true,
  352. "type": "number"
  353. },
  354. "vrsalmat": {
  355. "required": true,
  356. "type": "number"
  357. }
  358. }
  359. }
  360. }
  361. },
  362. "basesavnport": {
  363. "required": false,
  364. "type": ["object","null"],
  365. "properties": {
  366. "vrbccp00": {
  367. "required": true,
  368. "type": "number"
  369. },
  370. "vrbccp15": {
  371. "required": true,
  372. "type": "number"
  373. },
  374. "vrbccp20": {
  375. "required": true,
  376. "type": "number"
  377. },
  378. "vrbccp25": {
  379. "required": true,
  380. "type": "number"
  381. },
  382. "vrbccp13": {
  383. "required": true,
  384. "type": "number"
  385. },
  386. "vrbcfgts": {
  387. "required": true,
  388. "type": "number"
  389. },
  390. "vrdesccp": {
  391. "required": true,
  392. "type": "number"
  393. }
  394. }
  395. },
  396. "infosubstpatropport": {
  397. "required": false,
  398. "type": ["array","null"],
  399. "minItems": 0,
  400. "maxItems": 999,
  401. "items": {
  402. "type": "object",
  403. "properties": {
  404. "cnpjopportuario": {
  405. "required": true,
  406. "type": "string",
  407. "pattern": "^[0-9]{14}$"
  408. }
  409. }
  410. }
  411. }
  412. }
  413. }
  414. }
  415. },
  416. "basesaquis": {
  417. "required": false,
  418. "type": ["array","null"],
  419. "minItems": 0,
  420. "maxItems": 3,
  421. "items": {
  422. "type": "object",
  423. "properties": {
  424. "indaquis": {
  425. "required": true,
  426. "type": "integer",
  427. "minimum": 1,
  428. "maximum": 3
  429. },
  430. "vlraquis": {
  431. "required": true,
  432. "type": "number"
  433. },
  434. "vrcpdescpr": {
  435. "required": true,
  436. "type": "number"
  437. },
  438. "vrcpnret": {
  439. "required": true,
  440. "type": "number"
  441. },
  442. "vrratnret": {
  443. "required": true,
  444. "type": "number"
  445. },
  446. "vrsenarnret": {
  447. "required": true,
  448. "type": "number"
  449. },
  450. "vrcpcalcpr": {
  451. "required": true,
  452. "type": "number"
  453. },
  454. "vrratdescpr": {
  455. "required": true,
  456. "type": "number"
  457. },
  458. "vrratcalcpr": {
  459. "required": true,
  460. "type": "number"
  461. },
  462. "vrsenardesc": {
  463. "required": true,
  464. "type": "number"
  465. },
  466. "vrsenarcalc": {
  467. "required": true,
  468. "type": "number"
  469. }
  470. }
  471. }
  472. },
  473. "basescomerc": {
  474. "required": false,
  475. "type": ["array","null"],
  476. "minItems": 0,
  477. "maxItems": 4,
  478. "items": {
  479. "type": "object",
  480. "properties": {
  481. "indcomerc": {
  482. "required": true,
  483. "type": "integer",
  484. "minimum": 2,
  485. "maximum": 9
  486. },
  487. "vrbccompr": {
  488. "required": true,
  489. "type": "number"
  490. },
  491. "vrcpsusp": {
  492. "required": true,
  493. "type": "number"
  494. },
  495. "vrratsusp": {
  496. "required": true,
  497. "type": "number"
  498. },
  499. "vrsenarsusp": {
  500. "required": true,
  501. "type": "number"
  502. }
  503. }
  504. }
  505. },
  506. "infocrestab": {
  507. "required": false,
  508. "type": ["array","null"],
  509. "minItems": 0,
  510. "maxItems": 99,
  511. "items": {
  512. "type": "object",
  513. "properties": {
  514. "tpcr": {
  515. "required": true,
  516. "type": "integer"
  517. },
  518. "vrcr": {
  519. "required": true,
  520. "type": "number"
  521. },
  522. "vrsuspcr": {
  523. "required": true,
  524. "type": "number"
  525. }
  526. }
  527. }
  528. }
  529. }
  530. }
  531. },
  532. "infocrcontrib": {
  533. "required": false,
  534. "type": ["array","null"],
  535. "minItems": 0,
  536. "maxItems": 99,
  537. "items": {
  538. "type": "object",
  539. "properties": {
  540. "tpcr": {
  541. "required": true,
  542. "type": "integer"
  543. },
  544. "vrcr": {
  545. "required": true,
  546. "type": "number"
  547. },
  548. "vrcrsusp": {
  549. "required": true,
  550. "type": "number"
  551. }
  552. }
  553. }
  554. }
  555. }
  556. }';
  557. $std = new \stdClass();
  558. $std->sequencial = 1;
  559. $std->indapuracao = 1;
  560. $std->perapur = '2017-11';
  561. $std->nrrecarqbase = 'ksksksk1211_40';
  562. $std->indexistinfo = 3;
  563. $std->infocpseg = new \stdClass();
  564. $std->infocpseg->vrdesccp = 222.56;
  565. $std->infocpseg->vrcpseg = 333.89;
  566. $std->infocontrib = new \stdClass();
  567. $std->infocontrib->classtrib = '02';
  568. $std->infocontrib->infopj = new \stdClass();
  569. $std->infocontrib->infopj->indcoop = 0;
  570. $std->infocontrib->infopj->indconstr = 1;
  571. $std->infocontrib->infopj->indsubstpatr = 2;
  572. $std->infocontrib->infopj->percredcontrib = 23.45;
  573. $std->infocontrib->infopj->infoatconc = new \stdClass();
  574. $std->infocontrib->infopj->infoatconc->fatormes = 0.96;
  575. $std->infocontrib->infopj->infoatconc->fator13 = 0.01;
  576. $std->ideestab[1] = new \stdClass();
  577. $std->ideestab[1]->tpinsc = 4;
  578. $std->ideestab[1]->nrinsc = '12345678901234';
  579. $std->ideestab[1]->infoestab = new \stdClass();
  580. $std->ideestab[1]->infoestab->cnaeprep = 12345;
  581. $std->ideestab[1]->infoestab->aliqrat = 4;
  582. $std->ideestab[1]->infoestab->fap = 0.5;
  583. $std->ideestab[1]->infoestab->aliqratajust = 2.00;
  584. $std->ideestab[1]->infoestab->infocomplobra = new \stdClass();
  585. $std->ideestab[1]->infoestab->infocomplobra->indsubstpatrobra = 1;
  586. $std->ideestab[1]->idelotacao[1] = new \stdClass();
  587. $std->ideestab[1]->idelotacao[1]->codlotacao = 'kjskjsksj';
  588. $std->ideestab[1]->idelotacao[1]->fpas = 111;
  589. $std->ideestab[1]->idelotacao[1]->codtercs = 'lsls';
  590. $std->ideestab[1]->idelotacao[1]->codtercssusp = 'oeoe';
  591. $std->ideestab[1]->idelotacao[1]->infotercsusp[1] = new \stdClass();
  592. $std->ideestab[1]->idelotacao[1]->infotercsusp[1]->codterc = 'aaaa';
  593. $std->ideestab[1]->idelotacao[1]->infoemprparcial = new \stdClass();
  594. $std->ideestab[1]->idelotacao[1]->infoemprparcial->tpinsccontrat = 1;
  595. $std->ideestab[1]->idelotacao[1]->infoemprparcial->nrinsccontrat = '12345678901234';
  596. $std->ideestab[1]->idelotacao[1]->infoemprparcial->tpinscprop = 2;
  597. $std->ideestab[1]->idelotacao[1]->infoemprparcial->nrinscprop = '12345678901';
  598. $std->ideestab[1]->idelotacao[1]->infoemprparcial->cnoobra = '123456789012';
  599. $std->ideestab[1]->idelotacao[1]->dadosopport = new \stdClass();
  600. $std->ideestab[1]->idelotacao[1]->dadosopport->cnpjopportuario = '12345678901234';
  601. $std->ideestab[1]->idelotacao[1]->dadosopport->aliqrat = 3;
  602. $std->ideestab[1]->idelotacao[1]->dadosopport->fap = 1.0;
  603. $std->ideestab[1]->idelotacao[1]->dadosopport->aliqratajust = 2.99;
  604. $std->ideestab[1]->idelotacao[1]->basesremun[1] = new \stdClass();
  605. $std->ideestab[1]->idelotacao[1]->basesremun[1]->indincid = 9;
  606. $std->ideestab[1]->idelotacao[1]->basesremun[1]->codcateg = 123;
  607. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp = new \stdClass();
  608. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrbccp00 = 100.00;
  609. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrbccp15 = 100.00;
  610. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrbccp20 = 100.00;
  611. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrbccp25 = 100.00;
  612. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrsuspbccp00 = 100.00;
  613. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrsuspbccp15 = 100.00;
  614. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrsuspbccp20 = 100.00;
  615. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrsuspbccp25 = 100.00;
  616. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrdescsest = 100.00;
  617. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrcalcsest = 100.00;
  618. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrdescsenat = 100.00;
  619. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrcalcsenat = 100.00;
  620. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrsalfam = 100.00;
  621. $std->ideestab[1]->idelotacao[1]->basesremun[1]->basescp->vrsalmat = 100.00;
  622. $std->ideestab[1]->idelotacao[1]->basesavnport = new \stdClass();
  623. $std->ideestab[1]->idelotacao[1]->basesavnport->vrbccp00 = 222.22;
  624. $std->ideestab[1]->idelotacao[1]->basesavnport->vrbccp15 = 222.22;
  625. $std->ideestab[1]->idelotacao[1]->basesavnport->vrbccp20 = 222.22;
  626. $std->ideestab[1]->idelotacao[1]->basesavnport->vrbccp25 = 222.22;
  627. $std->ideestab[1]->idelotacao[1]->basesavnport->vrbccp13 = 222.22;
  628. $std->ideestab[1]->idelotacao[1]->basesavnport->vrbcfgts = 222.22;
  629. $std->ideestab[1]->idelotacao[1]->basesavnport->vrdesccp = 222.22;
  630. $std->ideestab[1]->idelotacao[1]->infosubstpatropport[1] = new \stdClass();
  631. $std->ideestab[1]->idelotacao[1]->infosubstpatropport[1]->cnpjopportuario = '12345678901234';
  632. $std->ideestab[1]->basesaquis[1] = new \stdClass();
  633. $std->ideestab[1]->basesaquis[1]->indaquis = 2;
  634. $std->ideestab[1]->basesaquis[1]->vlraquis = 333.33;
  635. $std->ideestab[1]->basesaquis[1]->vrcpdescpr = 333.33;
  636. $std->ideestab[1]->basesaquis[1]->vrcpnret = 333.33;
  637. $std->ideestab[1]->basesaquis[1]->vrratnret = 333.33;
  638. $std->ideestab[1]->basesaquis[1]->vrsenarnret = 333.33;
  639. $std->ideestab[1]->basesaquis[1]->vrcpcalcpr = 333.33;
  640. $std->ideestab[1]->basesaquis[1]->vrratdescpr = 333.33;
  641. $std->ideestab[1]->basesaquis[1]->vrratcalcpr = 333.33;
  642. $std->ideestab[1]->basesaquis[1]->vrsenardesc = 333.33;
  643. $std->ideestab[1]->basesaquis[1]->vrsenarcalc = 333.33;
  644. $std->ideestab[1]->basescomerc[1] = new \stdClass();
  645. $std->ideestab[1]->basescomerc[1]->indcomerc = 8;
  646. $std->ideestab[1]->basescomerc[1]->vrbccompr = 44.44;
  647. $std->ideestab[1]->basescomerc[1]->vrcpsusp = 44.44;
  648. $std->ideestab[1]->basescomerc[1]->vrratsusp = 44.44;
  649. $std->ideestab[1]->basescomerc[1]->vrsenarsusp = 44.44;
  650. $std->ideestab[1]->infocrestab[1] = new \stdClass();
  651. $std->ideestab[1]->infocrestab[1]->tpcr = 12345;
  652. $std->ideestab[1]->infocrestab[1]->vrcr = 55.55;
  653. $std->ideestab[1]->infocrestab[1]->vrsuspcr = 55.55;
  654. $std->infocrcontrib[1] = new \stdClass();
  655. $std->infocrcontrib[1]->tpcr = 122;
  656. $std->infocrcontrib[1]->vrcr = 1458.65;
  657. $std->infocrcontrib[1]->vrcrsusp = 1400.65;
  658. // Schema must be decoded before it can be used for validation
  659. $jsonSchemaObject = json_decode($jsonSchema);
  660. // The SchemaStorage can resolve references, loading additional schemas from file as needed, etc.
  661. $schemaStorage = new SchemaStorage();
  662. // This does two things:
  663. // 1) Mutates $jsonSchemaObject to normalize the references (to file://mySchema#/definitions/integerData, etc)
  664. // 2) Tells $schemaStorage that references to file://mySchema... should be resolved by looking in $jsonSchemaObject
  665. $schemaStorage->addSchema('file://mySchema', $jsonSchemaObject);
  666. // Provide $schemaStorage to the Validator so that references can be resolved during validation
  667. $jsonValidator = new Validator(new Factory($schemaStorage));
  668. // Do validation (use isValid() and getErrors() to check the result)
  669. $jsonValidator->validate(
  670. $std,
  671. $jsonSchemaObject,
  672. Constraint::CHECK_MODE_COERCE_TYPES //tenta converter o dado no tipo indicado no schema
  673. );
  674. if ($jsonValidator->isValid()) {
  675. echo "The supplied JSON validates against the schema.<br/>";
  676. } else {
  677. echo "JSON does not validate. Violations:<br/>";
  678. foreach ($jsonValidator->getErrors() as $error) {
  679. echo sprintf("[%s] %s<br/>", $error['property'], $error['message']);
  680. }
  681. die;
  682. }
  683. //salva se sucesso
  684. file_put_contents("../../../jsonSchemes/v$version/$evento.schema", $jsonSchema);