czech_post_b2b_client 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rubocop.yml +40 -0
- data/CHANGELOG.md +14 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +8 -0
- data/LICENSE.txt +21 -0
- data/README.md +281 -0
- data/Rakefile +12 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/certs/postsignum_qca4_root.pem +41 -0
- data/certs/postsignum_vca5_sub.pem +44 -0
- data/doc/CzechPostB2bClient.html +479 -0
- data/doc/CzechPostB2bClient/B2BErrors.html +242 -0
- data/doc/CzechPostB2bClient/B2BErrors/BadRequestError.html +145 -0
- data/doc/CzechPostB2bClient/B2BErrors/BaseError.html +376 -0
- data/doc/CzechPostB2bClient/B2BErrors/CustomerRequestsCountOverflowError.html +145 -0
- data/doc/CzechPostB2bClient/B2BErrors/InternalB2BServerError.html +145 -0
- data/doc/CzechPostB2bClient/B2BErrors/InternalBackendServerError.html +145 -0
- data/doc/CzechPostB2bClient/B2BErrors/InternalDataPersistenceServerError.html +145 -0
- data/doc/CzechPostB2bClient/B2BErrors/ProcessingUnfinishedYetError.html +145 -0
- data/doc/CzechPostB2bClient/B2BErrors/ServiceBusyError.html +145 -0
- data/doc/CzechPostB2bClient/B2BErrors/UnauthorizedContractAccessError.html +145 -0
- data/doc/CzechPostB2bClient/B2BErrors/UnauthorizedRoleAccessError.html +145 -0
- data/doc/CzechPostB2bClient/Configuration.html +1005 -0
- data/doc/CzechPostB2bClient/Error.html +128 -0
- data/doc/CzechPostB2bClient/PrintingTemplates.html +199 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AddressData3x8.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel.html +117 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/Blank.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/Blank4OnPage.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/BlankLandscape.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/ForeignPackage.html +115 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/ForeignPackage/EMS.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/ForeignPackage/EMS2x4.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/ForeignPackage/Standard.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/ForeignPackage/Standard4OnPage.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/ForeignPackage/Valuable.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/ForeignPackage/Valuable4OnPage.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/Simple.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/AdressLabel/SimpleWithCODVoucherA.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/Base.html +279 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/CODVoucherA.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/CODVoucherA3OnPage.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/CODVoucherC.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/CODVoucherForCSOB.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/CustomDeclarationCN22.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/CustomDeclarationCN23.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/DeliveryTicket.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/Envelope.html +115 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/Envelope/EnvelopeB4.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/Envelope/EnvelopeC5.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/Envelope/EnvelopeC6.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/Envelope/EnvelopeDL.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/HarmonizedLabel.html +141 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/HarmonizedLabel4OnPage.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/IntegratedDocument.html +129 -0
- data/doc/CzechPostB2bClient/PrintingTemplates/RRLabels3x8.html +129 -0
- data/doc/CzechPostB2bClient/RequestBuilders.html +117 -0
- data/doc/CzechPostB2bClient/RequestBuilders/BaseBuilder.html +396 -0
- data/doc/CzechPostB2bClient/RequestBuilders/GetParcelStateBuilder.html +329 -0
- data/doc/CzechPostB2bClient/RequestBuilders/GetParcelsPrintingBuilder.html +470 -0
- data/doc/CzechPostB2bClient/RequestBuilders/GetResultParcelsBuilder.html +329 -0
- data/doc/CzechPostB2bClient/RequestBuilders/GetStatsBuilder.html +403 -0
- data/doc/CzechPostB2bClient/RequestBuilders/SendParcelsBuilder.html +403 -0
- data/doc/CzechPostB2bClient/ResponseCodes.html +242 -0
- data/doc/CzechPostB2bClient/ResponseCodes/AddressAllowedForBalikovnaOnly.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/AddressIsNotValidForSubject.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/AddressNeedsPhoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/AddressSuitableForLocalDelivery.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/AddressValidOnlyForNaPostu.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/AddressValidOnlyForNaPostuDuplicate.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/AddresseeCityRequired.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/AlreadyAssignedOrderNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadAddressee.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadCODAmount.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadFormatReturnNumberDays.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadHeight.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadLength.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadPrefix.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadPrefixForAddress.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadPrice.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadVariableSymbol.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadWeight.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BadWidth.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BaseCode.html +550 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BatchClosed.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BatchInvalid.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/BatchUnfinished.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/CODAmountOutOfRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/CODAmountTooBig.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/CanceledOrderNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/CustomGoodQuantityOutOfRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/CustomerIDNotInAccordanceWithParcelCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/DensityOutOfRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/DuplicateDuplicateParcelCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/DuplicateParcel.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/DuplicateParcelCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/DuplicitParcelCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/FullSequence.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/FullSequenceDuplicate.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/IllegalCombinationOfServices.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoAddRequiredService75.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoAddService1A.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoAddService1B.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoAddService1D.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoAddService9.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoAddressWasModified.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoAddresseeToLong.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelCustCardNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelCustCardNumberAddresseeDocument.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelHeight.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelLength.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelMobilePhoneOrEmailAddresseeDocument.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelPalettsNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelPersonalIdentificationNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1AB.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1ABForService40.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1AForPostCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1AForService40.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1AWith1B.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1B.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1BAddService1A.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1BForPostCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1BWith1A.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1D.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1E.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService1V.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService25.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService27.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService29.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService30.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService31.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService34.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService34InvalidPhoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService45.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService45InvalidPhoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService46.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService47.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService5B.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService5BAnd5C.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService5BAnd5D.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService5C.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService5CAnd5D.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelService5D.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelVSVoucher.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCancelWidth.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoCityChanged.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInexactAddress.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidAccount.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidBankCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidBirthDay.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidCODAmount.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidCategoryCustomDecalaration.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidEmail.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidMobilePhoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidPhoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidPrefixAccount.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidPrice.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidSpecificSymbol.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidTelephoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoInvalidWeight.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoMissingPartCityServiceDeliveryOnSundayOrHolidayMayNotBeRealized.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoPriceIsNotNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoPriceIsTooBig.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoService29And47.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InfoSpecialPackagingRequest.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InternalApplicationError.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAddressAddresseeDocumentForParcelType.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAddressAddresseeDocumentObjectNotFound.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAddressAddresseeDocumentWrongCity.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAddressForBalikovna.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAddressForBigPackage.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAddressForCODAmountOver20000.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAddressForParcelType.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAddressee.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAmount.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAmountCurrency.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidAmountType.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidCODAmount.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidCODCurrency.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidCODCurrencyAccordance.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidCategoryCustomDecalaration.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidContentCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidCurrencyCustomDecalaration.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidCustomGoodNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidCustomerCardNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidCustomerId.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidDensity.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidEmail.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidHeight.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidHsCodeCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidIsoCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidIsoCustomGoodFormat.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidLength.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidLocation.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidMRNCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidMRNCodeControl.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidNumberClosure.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidOrderNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidParcelBarcode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidParcelBarcodeDuplicate.html +145 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidParcelCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidParcelCodeControl.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidParcelResponseCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidParcelTypeForID.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPartnerCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPayday.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPhoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPostCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPrefixAccordance.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPrefixCombination.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPrefixForDimensionsAndFragile.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPrice.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPriceCurrency.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPriceCurrencyAccordance.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidPriceCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidQuantityCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidResponsibleConsignmentNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidReturnNumberDays.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidService18.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidService19.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidServiceCombination.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidServicesForDimensions.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidSignNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidSubisoCountry.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidTareWeight.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidTiming.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidTransmissionDate.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidTypePrefix.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidUseOfService36.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidUseOfService37.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidUseOfService38.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidWeight.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidWeightCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidWeightCustomGoodSummary.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidWeightForService11.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidWidth.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidZPROOrderNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidZPROOrderNumberFormat.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/InvalidostCodeOrCity.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MIssingParcelCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingAddressee.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingAddresseeCity.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingAddresseeStreet.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingAddresseeZipCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingCODAmount.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingCODAmountType.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingCategoryCustomDecalaration.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingCompanyName.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingContentCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingCurrencyCustomDeclaration.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingHandlingInstructions.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingHeight.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingHsCodeCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingIsoCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingLength.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingPalettsNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingParcelCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingParcelCustomGoods.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingPhoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingPrefix.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingPrice.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingPriceCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingQuantityCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredAddresseeDocument.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredAddresseeDocumentDuplicate.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredAddresseeEmail.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredEmail.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredFirstNameAddresseeDocument.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredMRNCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredMobileNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredMobileNumberOrEmail.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredParcelCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredPayday.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredPhoneNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredPhoneNumberOrEmail.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredPhoneNumberOrWhat.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredPrice.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService10.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService1AB.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService1X.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService2X.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService3X.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService3XTrinity.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService4.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService4X.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredService4x.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredVoucherPrice.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingRequiredZPROOrderNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingReturnInstructions.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingReturnNumberDays.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingSenderEmail.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingSizeCategory.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingSurname.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingVariableSymbol.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingVariableSymbolDuplicate.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingWeightCustomGood.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/MissingWidth.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/NfoCancelService9.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/NoContractService41.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/NoContractServiceReturnReceipt.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/NotExistingOrderNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/Ok.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/OverenoVecerniDorucovani.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/PalettsNumberOutOfRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/ParcelCodeNotAllowed.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/ParcelCodeNotInAssignedRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/ParcelDoesNotMeetTheRequirementsForm.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/PriceAndCODAmountTooBig.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/PriceOutOfRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/PriceTooBig.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/PriceTooLow.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/ResponsibleConsignmentNumberCannotBeImported.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/ResponsibleConsignmentNumberOutOfRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/ServicesCombinationNotAllowed.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/TransmissionAlreadyClosed.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/TransmissionNotExists.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/TransmissionOpened.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/TransmissionUnfinished.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/UnauthorizedAccess.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/UnknownAddresseeCity.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/UnknownAddresseePostCode.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/UnknownPrefix.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/VariableSymbolIsNotNumber.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/WeightCustomGoodOutOfRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/WeightIsOutOfRange.html +134 -0
- data/doc/CzechPostB2bClient/ResponseCodes/WeightIsOutOfRangeDuplicate.html +134 -0
- data/doc/CzechPostB2bClient/ResponseParsers.html +117 -0
- data/doc/CzechPostB2bClient/ResponseParsers/BaseParser.html +283 -0
- data/doc/CzechPostB2bClient/ResponseParsers/GetParcelStateParser.html +533 -0
- data/doc/CzechPostB2bClient/ResponseParsers/GetParcelsPrintingParser.html +463 -0
- data/doc/CzechPostB2bClient/ResponseParsers/GetResultParcelsParser.html +625 -0
- data/doc/CzechPostB2bClient/ResponseParsers/GetStatsParser.html +347 -0
- data/doc/CzechPostB2bClient/ResponseParsers/SendParcelsParser.html +231 -0
- data/doc/CzechPostB2bClient/Services.html +117 -0
- data/doc/CzechPostB2bClient/Services/AddressSheetsGenerator.html +451 -0
- data/doc/CzechPostB2bClient/Services/ApiCaller.html +307 -0
- data/doc/CzechPostB2bClient/Services/Communicator.html +220 -0
- data/doc/CzechPostB2bClient/Services/DeliveringInspector.html +324 -0
- data/doc/CzechPostB2bClient/Services/Orchestrator.html +143 -0
- data/doc/CzechPostB2bClient/Services/ParcelsSendProcessUpdater.html +377 -0
- data/doc/CzechPostB2bClient/Services/ParcelsSender.html +402 -0
- data/doc/CzechPostB2bClient/Services/ParcelsSubmissionCloser.html +337 -0
- data/doc/CzechPostB2bClient/Services/TimePeriodStatisticator.html +398 -0
- data/doc/SteppedService.html +224 -0
- data/doc/SteppedService/Base.html +706 -0
- data/doc/SteppedService/Errors.html +365 -0
- data/doc/_index.html +2607 -0
- data/doc/class_list.html +51 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +496 -0
- data/doc/file.README.html +357 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +17 -0
- data/doc/index.html +357 -0
- data/doc/js/app.js +303 -0
- data/doc/js/full_list.js +216 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +923 -0
- data/doc/top-level-namespace.html +110 -0
- data/lib/czech_post_b2b_client.rb +37 -0
- data/lib/czech_post_b2b_client/b2b_errors.rb +105 -0
- data/lib/czech_post_b2b_client/configuration.rb +34 -0
- data/lib/czech_post_b2b_client/printing_templates.rb +166 -0
- data/lib/czech_post_b2b_client/request_builders.rb +8 -0
- data/lib/czech_post_b2b_client/request_builders/base_builder.rb +90 -0
- data/lib/czech_post_b2b_client/request_builders/get_parcel_state_builder.rb +44 -0
- data/lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb +79 -0
- data/lib/czech_post_b2b_client/request_builders/get_result_parcels_builder.rb +28 -0
- data/lib/czech_post_b2b_client/request_builders/get_stats_builder.rb +30 -0
- data/lib/czech_post_b2b_client/request_builders/send_parcels_builder.rb +294 -0
- data/lib/czech_post_b2b_client/response_codes.rb +1900 -0
- data/lib/czech_post_b2b_client/response_parsers.rb +8 -0
- data/lib/czech_post_b2b_client/response_parsers/base_parser.rb +95 -0
- data/lib/czech_post_b2b_client/response_parsers/get_parcel_state_parser.rb +54 -0
- data/lib/czech_post_b2b_client/response_parsers/get_parcels_printing_parser.rb +42 -0
- data/lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb +56 -0
- data/lib/czech_post_b2b_client/response_parsers/get_stats_parser.rb +27 -0
- data/lib/czech_post_b2b_client/response_parsers/send_parcels_parser.rb +13 -0
- data/lib/czech_post_b2b_client/services.rb +10 -0
- data/lib/czech_post_b2b_client/services/address_sheets_generator.rb +55 -0
- data/lib/czech_post_b2b_client/services/api_caller.rb +115 -0
- data/lib/czech_post_b2b_client/services/communicator.rb +28 -0
- data/lib/czech_post_b2b_client/services/delivering_inspector.rb +50 -0
- data/lib/czech_post_b2b_client/services/orchestrator.rb +27 -0
- data/lib/czech_post_b2b_client/services/parcels_send_process_updater.rb +71 -0
- data/lib/czech_post_b2b_client/services/parcels_sender.rb +53 -0
- data/lib/czech_post_b2b_client/services/parcels_submission_closer.rb +23 -0
- data/lib/czech_post_b2b_client/services/time_period_statisticator.rb +44 -0
- data/lib/czech_post_b2b_client/version.rb +5 -0
- data/lib/stepped_service.rb +4 -0
- data/lib/stepped_service/base.rb +139 -0
- data/lib/stepped_service/errors.rb +29 -0
- metadata +571 -0
@@ -0,0 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'czech_post_b2b_client/request_builders/base_builder'
|
4
|
+
require 'czech_post_b2b_client/request_builders/get_stats_builder'
|
5
|
+
require 'czech_post_b2b_client/request_builders/get_parcels_printing_builder'
|
6
|
+
require 'czech_post_b2b_client/request_builders/get_parcel_state_builder'
|
7
|
+
require 'czech_post_b2b_client/request_builders/get_result_parcels_builder'
|
8
|
+
require 'czech_post_b2b_client/request_builders/send_parcels_builder'
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ox'
|
4
|
+
|
5
|
+
module CzechPostB2bClient
|
6
|
+
module RequestBuilders
|
7
|
+
class BaseBuilder < SteppedService::Base
|
8
|
+
attr_reader :request_id
|
9
|
+
|
10
|
+
TIME_FORMAT = '%FT%T.%L%:z' # '2014-03-12T13:33:34.573+01:00'
|
11
|
+
|
12
|
+
def initialize(request_id: 1)
|
13
|
+
@request_id = request_id
|
14
|
+
end
|
15
|
+
|
16
|
+
def steps
|
17
|
+
%i[validate_data
|
18
|
+
build_xml_struct
|
19
|
+
render_xml]
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
attr_reader :xml_struct
|
25
|
+
|
26
|
+
def validate_data
|
27
|
+
# nothing to validate
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_xml_struct
|
31
|
+
@xml_struct = struct_base
|
32
|
+
add_element_to(@xml_struct, new_instruct(attributes: { version: '1.0', encoding: 'UTF-8', standalone: 'yes' }))
|
33
|
+
|
34
|
+
bb = new_element('b2bRequest', attributes: configuration.namespaces).tap do |b2b_req|
|
35
|
+
add_element_to(b2b_req, b2b_req_header)
|
36
|
+
add_element_to(b2b_req, service_data_struct)
|
37
|
+
end
|
38
|
+
|
39
|
+
add_element_to(@xml_struct, bb)
|
40
|
+
|
41
|
+
@xml_struct
|
42
|
+
end
|
43
|
+
|
44
|
+
def render_xml
|
45
|
+
@result = Ox.dump(xml_struct)
|
46
|
+
end
|
47
|
+
|
48
|
+
def configuration
|
49
|
+
CzechPostB2bClient.configuration
|
50
|
+
end
|
51
|
+
|
52
|
+
def namespaces
|
53
|
+
configuration.namespaces.to_a.collect { |ns, url| "#{ns}=\"#{url}\"" }.join(' ')
|
54
|
+
end
|
55
|
+
|
56
|
+
def struct_base
|
57
|
+
Ox::Document.new(encoding: 'utf-8')
|
58
|
+
end
|
59
|
+
|
60
|
+
def b2b_req_header
|
61
|
+
new_element('header').tap do |header|
|
62
|
+
add_element_to(header, 'idExtTransaction', value: request_id)
|
63
|
+
add_element_to(header, 'timeStamp', value: Time.now.strftime(TIME_FORMAT))
|
64
|
+
add_element_to(header, 'idContract', value: configuration.contract_id)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def add_element_to(parent_element, element, attributes: {}, value: nil)
|
69
|
+
if element.is_a?(String)
|
70
|
+
parent_element << new_element(element, attributes: attributes, value: value) unless value.nil?
|
71
|
+
else
|
72
|
+
parent_element << element unless element.nil?
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def new_element(name, attributes: {}, value: '')
|
77
|
+
Ox::Element.new(name).tap do |elm|
|
78
|
+
attributes.each_pair { |key, val| elm[key] = val }
|
79
|
+
elm << value.to_s
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def new_instruct(attributes: {})
|
84
|
+
Ox::Instruct.new(:xml).tap do |elm|
|
85
|
+
attributes.each_pair { |key, val| elm[key] = val }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CzechPostB2bClient
|
4
|
+
module RequestBuilders
|
5
|
+
class GetParcelStateBuilder < BaseBuilder
|
6
|
+
attr_reader :parcel_codes
|
7
|
+
|
8
|
+
def initialize(parcel_codes:, request_id: 1)
|
9
|
+
@parcel_codes = parcel_codes
|
10
|
+
@request_id = request_id
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def validate_data
|
16
|
+
if parcel_codes.empty?
|
17
|
+
errors.add(:parcel_codes, 'Minimum of 1 parcel code is required!')
|
18
|
+
fail!
|
19
|
+
end
|
20
|
+
|
21
|
+
return if parcel_codes.size <= 10
|
22
|
+
|
23
|
+
errors.add(:parcel_codes, 'Maximum of 10 parcel codes are allowed!')
|
24
|
+
fail!
|
25
|
+
end
|
26
|
+
|
27
|
+
def service_data_struct
|
28
|
+
new_element('serviceData').tap do |srv_data|
|
29
|
+
add_element_to(srv_data, get_parcel_state)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_parcel_state # rubocop:disable Naming/AccessorMethodName
|
34
|
+
new_element('ns2:getParcelState').tap do |parcel_state|
|
35
|
+
parcel_codes.each do |parcel_code|
|
36
|
+
add_element_to(parcel_state, 'ns2:idParcel', value: parcel_code.to_s)
|
37
|
+
end
|
38
|
+
|
39
|
+
add_element_to(parcel_state, 'ns2:language', value: configuration.language.to_s)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CzechPostB2bClient
|
4
|
+
module RequestBuilders
|
5
|
+
class GetParcelsPrintingBuilder < BaseBuilder
|
6
|
+
attr_reader :parcel_codes, :options
|
7
|
+
|
8
|
+
def initialize(parcel_codes:, options:, request_id: 1)
|
9
|
+
@parcel_codes = parcel_codes
|
10
|
+
@options = options
|
11
|
+
@request_id = request_id
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.allowed_printing_template_classes
|
15
|
+
@allowed_printing_template_classes ||= CzechPostB2bClient::PrintingTemplates.all_template_classes
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def validate_data
|
21
|
+
if parcel_codes.empty?
|
22
|
+
errors.add(:parcel_codes, 'Minimum of 1 parcel code is required!')
|
23
|
+
fail!
|
24
|
+
end
|
25
|
+
|
26
|
+
if parcel_codes.size > 500
|
27
|
+
errors.add(:parcel_codes, 'Maximum of 500 parcel codes are allowed!')
|
28
|
+
fail!
|
29
|
+
end
|
30
|
+
|
31
|
+
validate_template_ids
|
32
|
+
end
|
33
|
+
|
34
|
+
def service_data_struct
|
35
|
+
new_element('serviceData').tap do |srv_data|
|
36
|
+
add_element_to(srv_data, get_parcels_printing)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_parcels_printing # rubocop:disable Naming/AccessorMethodName
|
41
|
+
new_element('ns2:getParcelsPrinting').tap do |get_parcels_printing|
|
42
|
+
add_element_to(get_parcels_printing, do_printing_header)
|
43
|
+
add_element_to(get_parcels_printing, do_printing_data)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def do_printing_header
|
48
|
+
new_element('ns2:doPrintingHeader').tap do |printing_header|
|
49
|
+
add_element_to(printing_header, 'ns2:customerID', value: options[:customer_id]) # Technologicke cislo podavatele
|
50
|
+
add_element_to(printing_header, 'ns2:contractNumber', value: options[:contract_number]) # Nepovine: ID CCK slozky podavatele
|
51
|
+
add_element_to(printing_header, 'ns2:idForm', value: options[:template_id]) # Nepovine[0-20x]: ID formulare
|
52
|
+
add_element_to(printing_header, 'ns2:shiftHorizontal', value: options[:margin_in_mm][:left]) # Hodnota posunu doprava v mm
|
53
|
+
add_element_to(printing_header, 'ns2:shiftVertical', value: options[:margin_in_mm][:top]) # Hodnota posunu dolu v mm
|
54
|
+
add_element_to(printing_header, 'ns2:position', value: options[:position_order]) # Nepovinna: Hodnota pozice
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def do_printing_data
|
59
|
+
new_element('ns2:doPrintingData').tap do |printing_data|
|
60
|
+
parcel_codes.each do |parcel_code|
|
61
|
+
add_element_to(printing_data, 'ns2:parcelCode', value: parcel_code.to_s)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def validate_template_ids
|
67
|
+
# TODO: there can be up to 20 `idForm` nodes, but I do not know how it works yet
|
68
|
+
template_id = options[:template_id]
|
69
|
+
return if template_id.to_s == ''
|
70
|
+
|
71
|
+
allowed_ids = self.class.allowed_printing_template_classes.collect(&:id)
|
72
|
+
return if allowed_ids.include?(template_id)
|
73
|
+
|
74
|
+
errors.add(:template_id, "Value '#{template_id}' is not allowed!")
|
75
|
+
fail!
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CzechPostB2bClient
|
4
|
+
module RequestBuilders
|
5
|
+
class GetResultParcelsBuilder < BaseBuilder
|
6
|
+
attr_reader :transaction_id
|
7
|
+
|
8
|
+
def initialize(transaction_id:, request_id: 1)
|
9
|
+
@transaction_id = transaction_id
|
10
|
+
@request_id = request_id
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def validate_data
|
16
|
+
return unless transaction_id.nil? || transaction_id == ''
|
17
|
+
|
18
|
+
errors.add(:transaction_id, 'Must be present!')
|
19
|
+
fail!
|
20
|
+
end
|
21
|
+
|
22
|
+
def service_data_struct
|
23
|
+
# No <serviceDate> element in this case
|
24
|
+
new_element('idTransaction', value: transaction_id)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CzechPostB2bClient
|
4
|
+
module RequestBuilders
|
5
|
+
class GetStatsBuilder < BaseBuilder
|
6
|
+
attr_reader :from_date, :to_date
|
7
|
+
|
8
|
+
def initialize(from_date:, to_date:, request_id: 1)
|
9
|
+
@from_date = from_date.to_time
|
10
|
+
@to_date = to_date.to_time
|
11
|
+
@request_id = request_id
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def service_data_struct
|
17
|
+
new_element('serviceData').tap do |srv_data|
|
18
|
+
add_element_to(srv_data, get_stats)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_stats # rubocop:disable Naming/AccessorMethodName
|
23
|
+
new_element('ns2:getStats').tap do |get_stats|
|
24
|
+
add_element_to(get_stats, 'ns2:dateBegin', value: from_date.strftime(TIME_FORMAT))
|
25
|
+
add_element_to(get_stats, 'ns2:dateEnd', value: to_date.strftime(TIME_FORMAT))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,294 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CzechPostB2bClient
|
4
|
+
module RequestBuilders
|
5
|
+
class SendParcelsBuilder < BaseBuilder
|
6
|
+
attr_reader :common_data, :parcels
|
7
|
+
|
8
|
+
def initialize(common_data:, parcels:, request_id: 1)
|
9
|
+
@common_data = common_data
|
10
|
+
@parcels = parcels
|
11
|
+
@request_id = request_id
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def validate_data
|
17
|
+
errors.add(:parcels, 'Maximum of 1000 parcels are allowed!') if parcels.size > 1000
|
18
|
+
|
19
|
+
validate_common_data_required_fields
|
20
|
+
validate_parcels_required_fields
|
21
|
+
|
22
|
+
fail! unless errors.empty?
|
23
|
+
end
|
24
|
+
|
25
|
+
def service_data_struct
|
26
|
+
new_element('serviceData').tap do |srv_data|
|
27
|
+
add_element_to(srv_data, send_parcels)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def validate_common_data_required_fields
|
32
|
+
[[:parcels_sending_date],
|
33
|
+
[:customer_id],
|
34
|
+
[:sending_post_office_code]].each do |key_chain|
|
35
|
+
value = common_data.dig(*key_chain)
|
36
|
+
if value.nil? || value == ''
|
37
|
+
errors.add(:common_data, "Missing value for key { :#{key_chain.join(' => :') } }!")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def validate_parcels_required_fields
|
43
|
+
return if parcels.empty?
|
44
|
+
|
45
|
+
rq_fields = [
|
46
|
+
%i[params parcel_id],
|
47
|
+
%i[params parcel_code_prefix],
|
48
|
+
%i[addressee address last_name],
|
49
|
+
%i[addressee address street],
|
50
|
+
%i[addressee address house_number],
|
51
|
+
%i[addressee address city],
|
52
|
+
%i[addressee address post_code]
|
53
|
+
]
|
54
|
+
parcels.each_with_index do |parcel_data, index|
|
55
|
+
parcel_id = parcel_data.dig(:params, :parcel_id)
|
56
|
+
rq_fields.each do |key_chain|
|
57
|
+
value = parcel_data.dig(*key_chain)
|
58
|
+
|
59
|
+
if value.nil? || value == ''
|
60
|
+
errors.add(:parcels, "Missing value for key { :#{key_chain.join(' => :')} } for #{index + 1}. parcel (parcel_id: '#{parcel_id}')!")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def send_parcels
|
67
|
+
new_element('ns2:sendParcels').tap do |send_parcels|
|
68
|
+
add_element_to(send_parcels, do_parcel_header) # REQUIRED
|
69
|
+
parcels.each do |parcel|
|
70
|
+
add_element_to(send_parcels, do_parcel_data(parcel)) # optional
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def do_parcel_header
|
76
|
+
new_element('ns2:doParcelHeader').tap do |parcel_header|
|
77
|
+
add_element_to(parcel_header, 'ns2:transmissionDate', value: common_data[:parcels_sending_date].strftime('%d.%m.%Y')) # Predpokladane datum podani (format DD.MM.YYYY !)
|
78
|
+
add_element_to(parcel_header, 'ns2:customerID', value: common_data[:customer_id]) # Technologicke cislo podavatele
|
79
|
+
add_element_to(parcel_header, 'ns2:postCode', value: common_data[:sending_post_office_code]) # PSC podaci posty
|
80
|
+
add_element_to(parcel_header, 'ns2:contractNumber', value: common_data[:contract_number]) # Nepovinne: Cislo zakazky
|
81
|
+
add_element_to(parcel_header, 'ns2:frankingNumber', value: common_data[:franking_machine_number]) # Nepovinne: Cislo vyplatniho stroje
|
82
|
+
add_element_to(parcel_header, 'ns2:transmissionEnd', value: common_data[:close_requests_batch]) # Nepovinna, default true: Indikace zda uzavrit podani, nebo budou jeste nasledovat dalsi requesty pro stejne podani
|
83
|
+
add_element_to(parcel_header, sender_address)
|
84
|
+
add_element_to(parcel_header, cache_on_delivery_address)
|
85
|
+
add_element_to(parcel_header, cache_on_delivery_bank)
|
86
|
+
add_element_to(parcel_header, sender_contacts)
|
87
|
+
add_element_to(parcel_header, 'ns2:senderCustCardNum', value: sender_data[:custom_card_number]) # Nepovinne: cislo zakaznicke karty odesilatele
|
88
|
+
add_element_to(parcel_header, 'ns2:locationNumber', value: common_data[:sending_post_office_location_number]) # Nepovinne: cislo podaciho mista (z nastaveni v Podani Online)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def do_parcel_data(parcel)
|
93
|
+
new_element('ns2:doParcelData').tap do |do_parcel_data|
|
94
|
+
add_element_to(do_parcel_data, do_parcel_params(parcel))
|
95
|
+
add_parcel_services(do_parcel_data, parcel)
|
96
|
+
add_element_to(do_parcel_data, do_parcel_address(parcel))
|
97
|
+
add_element_to(do_parcel_data, do_parcel_address_document(parcel))
|
98
|
+
add_element_to(do_parcel_data, do_parcel_customs_declaration(parcel))
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def sender_address
|
103
|
+
return nil unless sender_data[:address]
|
104
|
+
|
105
|
+
new_element('ns2:senderAddress').tap do |s_address|
|
106
|
+
add_address_elements(s_address, sender_data[:address], without: ['ns2:firstName', 'ns2:surname'])
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def cache_on_delivery_address
|
111
|
+
adr_data = common_data.dig(:cash_on_delivery, :address)
|
112
|
+
return nil unless adr_data
|
113
|
+
|
114
|
+
new_element('ns2:codAddress').tap do |cod_address|
|
115
|
+
add_address_elements(cod_address, adr_data, without: ['ns2:firstName', 'ns2:surname'])
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def cache_on_delivery_bank
|
120
|
+
data = common_data.dig(:cash_on_delivery, :bank_account)
|
121
|
+
return nil unless data
|
122
|
+
|
123
|
+
new_element('ns2:codBank').tap do |cod_bank|
|
124
|
+
add_bank_elements(cod_bank, data)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def sender_contacts
|
129
|
+
return nil unless sender_data
|
130
|
+
|
131
|
+
new_element('ns2:senderContacts').tap do |element|
|
132
|
+
add_contact_elements(element, sender_data) # Nepovinne. Telefon, Mobil a Email
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def do_parcel_params(parcel_data)
|
137
|
+
params = parcel_data[:params]
|
138
|
+
cod = parcel_data[:cash_on_delivery] || {}
|
139
|
+
new_element('ns2:doParcelParams').tap do |parcel_params|
|
140
|
+
add_element_to(parcel_params, 'ns2:recordID', value: params[:parcel_id]) # Unikatni ID zaznamu
|
141
|
+
add_element_to(parcel_params, 'ns2:parcelCode', value: params[:parcel_code]) # Nepovinne: ID zasilky
|
142
|
+
add_element_to(parcel_params, 'ns2:prefixParcelCode', value: params[:parcel_code_prefix]) # Typ zasilky (prefix)
|
143
|
+
add_element_to(parcel_params, 'ns2:weight', value: params[:weight_in_kg]) # Nepovinne: Hmotnost
|
144
|
+
add_element_to(parcel_params, 'ns2:insuredValue', value: params[:insured_value]) # Nepovinne: Udana cena
|
145
|
+
add_element_to(parcel_params, 'ns2:amount', value: cod[:amount]) # Nepovinne: Dobirka
|
146
|
+
add_element_to(parcel_params, 'ns2:currency', value: cod[:currency_iso_code]) # Nepovinne, default CZK: ISO kod meny dobirky
|
147
|
+
add_element_to(parcel_params, 'ns2:vsVoucher', value: params[:voucher_variable_symbol]) # Nepovinne: Variabilni symbol - poukazka
|
148
|
+
add_element_to(parcel_params, 'ns2:vsParcel', value: params[:parcel_variable_symbol]) # Nepovinne: Variabilni symbol - zasilka
|
149
|
+
add_element_to(parcel_params, 'ns2:sequenceParcel', value: params[:parcel_order]) # Nepovinne: Poradi v ramci vicekusove zasilky
|
150
|
+
add_element_to(parcel_params, 'ns2:quantityParcel', value: params[:parcels_count]) # Nepovinne: Celkovy pocet zasilek vicekusove zasilky
|
151
|
+
add_element_to(parcel_params, 'ns2:note', value: params[:note]) # Nepovinne: Poznamka
|
152
|
+
add_element_to(parcel_params, 'ns2:notePrint', value: params[:note_for_print]) # Nepovinne: Poznamka pro tisk
|
153
|
+
add_element_to(parcel_params, 'ns2:length', value: params[:length]) # Nepovinne: Delka
|
154
|
+
add_element_to(parcel_params, 'ns2:width', value: params[:width]) # Nepovinne: Sirka
|
155
|
+
add_element_to(parcel_params, 'ns2:height', value: params[:height]) # Nepovinne: Vyska
|
156
|
+
add_element_to(parcel_params, 'ns2:mrn', value: params[:mrn_code]) # Nepovinne: Kod MRN
|
157
|
+
add_element_to(parcel_params, 'ns2:referenceNumber', value: params[:reference_number]) # Nepovinne: Cislo jednaci
|
158
|
+
add_element_to(parcel_params, 'ns2:pallets', value: params[:pallets_count]) # Nepovinne: Pocet palet
|
159
|
+
add_element_to(parcel_params, 'ns2:specSym', value: params[:specific_symbol]) # Nepovinne: Specificky symbol
|
160
|
+
add_element_to(parcel_params, 'ns2:note2', value: params[:note2]) # Nepovinne: Poznamka 2
|
161
|
+
add_element_to(parcel_params, 'ns2:numSign', value: params[:documents_to_sign_count]) # Nepovinne: Počet dokumentů
|
162
|
+
add_element_to(parcel_params, 'ns2:score', value: params[:score]) # Nepovinne: Napocet ceny sluzby
|
163
|
+
add_element_to(parcel_params, 'ns2:orderNumberZPRO', value: params[:zpro_order_number]) # Nepovinne: Cislo objednavky ZPRO
|
164
|
+
add_element_to(parcel_params, 'ns2:returnNumDays', value: params[:days_to_deposit]) # Nepovinne: Pocet dni pro vraceni zasilky
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def add_parcel_services(parent_element, parcel_data)
|
169
|
+
(parcel_data[:services] || []).each do |p_service|
|
170
|
+
srv_element = new_element('ns2:doParcelServices').tap do |dps|
|
171
|
+
add_element_to(dps, 'ns2:service', value: p_service)
|
172
|
+
end
|
173
|
+
|
174
|
+
add_element_to(parent_element, srv_element)
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def do_parcel_address(parcel_data)
|
179
|
+
add_parcel_adress_element('ns2:doParcelAddress', parcel_data[:addressee])
|
180
|
+
end
|
181
|
+
|
182
|
+
def do_parcel_address_document(parcel_data)
|
183
|
+
add_parcel_adress_element('ns2:doParcelAddressDocument', parcel_data[:document_addressee])
|
184
|
+
end
|
185
|
+
|
186
|
+
def add_parcel_adress_element(element_name, addressee_data)
|
187
|
+
return nil if addressee_data.nil?
|
188
|
+
|
189
|
+
address_data = addressee_data[:address]
|
190
|
+
new_element(element_name).tap do |do_parcel_address|
|
191
|
+
add_element_to(do_parcel_address, 'ns2:recordID', value: addressee_data[:addressee_id]) # Nepovinne: Interni oznaceni adresata
|
192
|
+
|
193
|
+
add_address_elements(do_parcel_address, address_data) # Nepovinne: Adresa
|
194
|
+
|
195
|
+
add_element_to(do_parcel_address, 'ns2:subject', value: addressee_data[:addressee_type]) # Nepovinne: Typ adresata
|
196
|
+
add_element_to(do_parcel_address, 'ns2:ic', value: addressee_data[:ic]) # Nepovinne: ICO
|
197
|
+
add_element_to(do_parcel_address, 'ns2:dic', value: addressee_data[:dic]) # Nepovinne: DIC
|
198
|
+
add_element_to(do_parcel_address, 'ns2:specification', value: addressee_data[:addressee_specification]) # Nepovinne: Specifikace napr. datum narozeni
|
199
|
+
|
200
|
+
add_bank_elements(do_parcel_address, addressee_data[:bank_account]) # Nepovinne. Kod banky, cislo a predcisli uctu
|
201
|
+
add_contact_elements(do_parcel_address, addressee_data) # Nepovinne. Telefon, Mobil a Email
|
202
|
+
|
203
|
+
add_element_to(do_parcel_address, 'ns2:custCardNum', value: addressee_data[:custom_card_number]) # Nepovinne: cislo zakaznicke karty
|
204
|
+
|
205
|
+
(addressee_data[:advice_informations] || []).each_with_index do |adv_info, index|
|
206
|
+
add_element_to(do_parcel_address, 'ns2:adviceInformation' + (index + 1).to_s, value: adv_info) # Nepovinne: Informace 1- 6 k dodejce
|
207
|
+
end
|
208
|
+
|
209
|
+
add_element_to(do_parcel_address, 'ns2:adviceNote', value: addressee_data[:advice_note]) # Nepovinne: Poznamka k dodejce
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
def do_parcel_customs_declaration(parcel_data)
|
214
|
+
declaration_data = parcel_data[:custom_declaration]
|
215
|
+
return nil if declaration_data.nil?
|
216
|
+
|
217
|
+
new_element('ns2:doParcelCustomsDeclaration').tap do |do_p_customs_declaration|
|
218
|
+
add_element_to(do_p_customs_declaration, 'ns2:category', value: declaration_data[:category]) # Kategorie zasilky
|
219
|
+
add_element_to(do_p_customs_declaration, 'ns2:note', value: declaration_data[:note]) # Nepovinne: Poznamka
|
220
|
+
add_element_to(do_p_customs_declaration, 'ns2:customValCur', value: declaration_data[:value_currency_iso_code]) # ISO kod meny celni hodnoty
|
221
|
+
|
222
|
+
(declaration_data[:content_descriptions] || []).each do |dsc|
|
223
|
+
do_p_customs_declaration << custom_goods_for(dsc)
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
def custom_goods_for(description_data)
|
229
|
+
new_element('ns2:doParcelCustomsGoods').tap do |do_p_customs_goods|
|
230
|
+
add_element_to(do_p_customs_goods, 'ns2:sequence', value: description_data[:order]) # Nepovinne: Poradi
|
231
|
+
add_element_to(do_p_customs_goods, 'ns2:customCont', value: description_data[:description]) # Nepovinne: Popis zbozi
|
232
|
+
add_element_to(do_p_customs_goods, 'ns2:quantity', value: description_data[:quantity]) # Nepovinne: Mnozstvi
|
233
|
+
add_element_to(do_p_customs_goods, 'ns2:weight', value: description_data[:weight_in_kg]) # Nepovinne: Hmotnost
|
234
|
+
add_element_to(do_p_customs_goods, 'ns2:customVal', value: description_data[:value]) # Nepovinne: Celni hodnota
|
235
|
+
add_element_to(do_p_customs_goods, 'ns2:hsCode', value: description_data[:hs_code]) # Nepovinne: HS kod
|
236
|
+
add_element_to(do_p_customs_goods, 'ns2:iso', value: description_data[:origin_country_iso_code]) # Nepovinne: Zeme puvodu zbozi
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
def add_address_elements(parent_element, address_data, without: []) # Nepovinne. Adresa
|
241
|
+
return if address_data.nil?
|
242
|
+
|
243
|
+
address_tags_and_values(address_data).each_pair do |xml_tag, value|
|
244
|
+
unless without.include?(xml_tag)
|
245
|
+
add_element_to(parent_element, xml_tag, value: value) unless value.nil?
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
def address_tags_and_values(address_data)
|
251
|
+
{
|
252
|
+
'ns2:firstName' => address_data[:first_name], # Nepovinne: Jmeno
|
253
|
+
'ns2:surname' => address_data[:last_name], # Nepovinne: Prijmeni
|
254
|
+
'ns2:companyName' => address_data[:company_name], # Nepovinne: Nazev spolecnosti
|
255
|
+
'ns2:aditionAddress' => address_data[:addition_to_name], # Nepovinne: Doplnujici iformace k nazvu podavatele
|
256
|
+
'ns2:street' => address_data[:street], # Nepovinne: Ulice
|
257
|
+
'ns2:houseNumber' => address_data[:house_number], # Nepovinne: Cislo popisne
|
258
|
+
'ns2:sequenceNumber' => address_data[:sequence_number], # Nepovinne: Cislo orientacni
|
259
|
+
'ns2:partCity' => address_data[:city_part], # Nepovinne: Cast obce
|
260
|
+
'ns2:city' => address_data[:city], # Nepovinne: Obec
|
261
|
+
'ns2:zipCode' => address_data[:post_code], # Nepovinne: PSC
|
262
|
+
'ns2:isoCountry' => address_data[:country_iso_code], # Nepovinne, default 'CZ': ISO kod zeme
|
263
|
+
'ns2:subIsoCountry' => address_data[:subcountry_iso_code], # Nepovinne: ISO kod uzemi
|
264
|
+
}
|
265
|
+
end
|
266
|
+
|
267
|
+
def add_bank_elements(parent_element, bank_account)
|
268
|
+
return if bank_account.to_s == ''
|
269
|
+
|
270
|
+
if (m = bank_account.match(%r{(?:(\d+)-)?(\d+)\/(\d+)}))
|
271
|
+
prefix = m[1]
|
272
|
+
account = m[2]
|
273
|
+
bank = m[3]
|
274
|
+
else
|
275
|
+
prefix, account, bank = nil
|
276
|
+
end
|
277
|
+
|
278
|
+
add_element_to(parent_element, 'ns2:prefixAccount', value: prefix) # Nepovinne: Predcisli k uctu
|
279
|
+
add_element_to(parent_element, 'ns2:account', value: account) # Nepovinne: cislo uctu
|
280
|
+
add_element_to(parent_element, 'ns2:bank', value: bank) # Nepovinne: kod banky
|
281
|
+
end
|
282
|
+
|
283
|
+
def add_contact_elements(parent_element, data_hash)
|
284
|
+
add_element_to(parent_element, 'ns2:mobileNumber', value: data_hash[:mobile_phone]) # Nepovinne: Mobil
|
285
|
+
add_element_to(parent_element, 'ns2:phoneNumber', value: data_hash[:phone]) # Nepovinne: Telefon
|
286
|
+
add_element_to(parent_element, 'ns2:emailAddress', value: data_hash[:email]) # Nepovinne: Email
|
287
|
+
end
|
288
|
+
|
289
|
+
def sender_data
|
290
|
+
common_data[:sender]
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|
294
|
+
end
|