Child pages
  • Conversor XML/JSON

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Estamos em Devido ao processo de migrar todas as nossas migração das mensagens padronizadas para o formato JSON. Consequentemente, também estamos adaptando os , e consequentemente, a adaptação dos EAIs que as utilizam. Durante esse período de transição, faz, fez-se necessária a existência de uma camada de conversão automática .

O conversor recebe uma mensagem em XML e a retorna na nova estrutura definida em JSON, e vice-versa. Estão disponibilizados dois métodos públicos estáticos na classe Conversor

...

até que a migração esteja completa.

Para atender essa necessidade, disponibilizamos esse serviço via API REST no http://api.totvs.com.br, através dos seguintes endpoints

  • /XMLToJSON
  • /JSONToXML

O conversor recebe uma mensagem em XML e a retorna na nova estrutura definida em JSON, e vice-versa. 


Convertendo de XML para JSON 

http://api.totvs.com.br:8082/api/totvseai/Converter/v1/XMLToJSON

Realizar uma requisição através do verbo POST na URL acima, enviando o XML no corpo. A resposta será o seu valor correspondente convertido em JSON.

O cabeçalho "Content-Type" deve ser definido como "Text-Plain". A resposta obtida também será  "Text-Plain".

Exemplo Requisição:

Code Block
languagec#
titleXML to JSON
POST http://api.totvs.com.br:8082/api/totvseai/Converter/v1/XMLToJSON
Content-Type: text/plain
Body Request: 
<TOTVSMessage>
	<MessageInformation version="1.001">
		<UUID>c18535da-75b8-4925-9e32-b6445d4f2927</UUID>
		<Type>BusinessMessage</Type>
		<Transaction>Warehouse</Transaction>
		<StandardVersion>1.001</StandardVersion>
		<SourceApplication>RM</SourceApplication>
		<CompanyId>2</CompanyId>
		<BranchId>2</BranchId>
		<Product name="RM" version="11.83.55" />
		<GeneratedOn>2016-06-21T19:41:21</GeneratedOn>
		<DeliveryType>Sync</DeliveryType>
	</MessageInformation>
	<BusinessMessage>
		<BusinessEvent>
			<Entity>Warehouse</Entity>
			<Event>upsert</Event>
		</BusinessEvent>
		<BusinessContent>
			<CompanyId>CompanyId1</CompanyId>
			<BranchId>BranchId1</BranchId>
			<CompanyInternalId>CompanyInternalId1</CompanyInternalId>
			<Code>Code1</Code>
			<InternalId>InternalId1</InternalId>
			<Description>Description1</Description>
			<Active>true</Active>
			<Type>1</Type>
			<IsFinalItem>true</IsFinalItem>
			<IsQualityControl>true</IsQualityControl>
			<IsProcess>true</IsProcess>
			<IsWaste>true</IsWaste>
			<IsRecycled>true</IsRecycled>
			<IsBalanceAvailable>true</IsBalanceAvailable>
			<WarehouseClassification>1</WarehouseClassification>
		</BusinessContent>
	</BusinessMessage>
</TOTVSMessage>

Exemplo Resposta:

Code Block
languagec#
titleXML to JSON
POST http://api.totvs.com.br:8082/api/totvseai/Converter/v1/XMLToJSON
Content-Type: text/plain
Body Response: 
{"Header":{"UUID":"c18535da-75b8-4925-9e32-b6445d4f2927","Type":"BusinessMessage","Transaction":"Warehouse","StandardVersion":"1.001","SourceApplication":"RM","CompanyId":"2","BranchId":"2","GeneratedOn":"2016-06-21T19:41:21","DeliveryType":"Sync","Version":"1.001","ProductName":"RM","ProductVersion":"11.83.55"},"Content":{"CompanyId":"CompanyId1","BranchId":"BranchId1","CompanyInternalId":"CompanyInternalId1","Code":"Code1","InternalId":"InternalId1","Description":"Description1","Active":true,"Type":1,"IsFinalItem":true,"IsQualityControl":true,"IsProcess":true,"IsWaste":true,"IsRecycled":true,"IsBalanceAvailable":true,"WarehouseClassification":1}}


Convertendo de JSON para XML

http://api.totvs.com.br:8082/api/totvseai/Converter/v1/JSONToXML/?tagevent=upsert|delete|request

Realizar uma requisição através do verbo POST na URL acima, enviando o JSON no corpo. A resposta será o seu valor correspondente convertido em XML.

O cabeçalho "Content-Type" deve ser definido como "Text-Plain". A resposta obtida também será  "Text-Plain".

Nesse caso, também é preciso especificar qual é o evento da mensagem (Para ser o valor da tag <event></event), no parâmetro de query tagevent, evidenciado na URL. 
Os possíveis valores são:

  • Upsert
  • Delete
  • Request 

Exemplo Requisição:

Code Block
languagec#
titleJSON to XML
POST http://api.totvs.com.br:8082/api/totvseai/Converter/v1/JSONToXML/?tagevent=upsert
Content-Type: text/plain
Body Request: 
{"Header":{"UUID":"c18535da-75b8-4925-9e32-b6445d4f2927","Type":"BusinessMessage","Transaction":"Warehouse","StandardVersion":"1.001","SourceApplication":"RM","CompanyId":"2","BranchId":"2","GeneratedOn":"2016-06-21T19:41:21","DeliveryType":"Sync","Version":"1.001","ProductName":"RM","ProductVersion":"11.83.55"},"Content":{"CompanyId":"CompanyId1","BranchId":"BranchId1","CompanyInternalId":"CompanyInternalId1","Code":"Code1","InternalId":"InternalId1","Description":"Description1","Active":true,"Type":1,"IsFinalItem":true,"IsQualityControl":true,"IsProcess":true,"IsWaste":true,"IsRecycled":true,"IsBalanceAvailable":true,"WarehouseClassification":1}}

Exemplo Resposta:

Download da DLL do conversor

Trata-se de uma DLL desenvolvida em .Net CORE, e portanto pode ser importada em qualquer programa que tenha suporte para tal.

StandardMessageConversor.dll

Importando o Conversor em um projeto .Net

  • Clique direito em "Dependencies" → "Add Reference"

Image Removed 

  • Clicar em "Browse..."

Image Removed

  • Buscar a DLL do conversor (StandardMessageConversor.dll).

Image Removed

  • Agora já adicionamos a referência ao Conversor. 
  • A próxima etapa é adicionar o Newtonsoft.Json. É possível fazer esse processo através do NuGet.
  • Clique direito no projeto → "Manage NuGet Packages"    

Image Removed

  • Buscar Newtonsoft.Json.
  • Clicar em "Install" para instalar o pacote no projeto.

Image Removed

  • O conversor está importado e pronto para uso.

Importando o Conversor em um projeto ADVPL

Note
titleEm construção

Essa seção do artigo estará disponível futuramente      

Para projetos em ADVPL, precisa ser utilizada a versão 9.0.1. do Newtonsoft

Importando o Conversor em um projeto Progress

Note
titleEm construção

Essa seção do artigo estará disponível futuramente

Convertendo de XML para JSON 

Code Block
languagec#
titleXML to JSON
  string generatedMsg = Conversor.ConvertXMLToJSON(message);
Code Block
languagec#
titleXML to JSON
    /// <summary>
    /// Recebe uma mensagem padronizada em XML e a retorna em JSON
    /// </summary>
    /// <param name="message">Mensagem no formato XML</param>
    /// <returns>Mensagem padronizada no formato JSON</returns>
    public static string ConvertXMLToJSON(string message);

Convertendo de JSON para XML

Code Block
languagec#
titleJSON to XML
  string generatedMsg = Conversor.ConvertJSONToXML(message, "upsert");
JSON to XML
POST http://api.totvs.com.br:8082/api/totvseai/Converter/v1/JSONToXML/?tagevent=upsert
Content-Type: text/plain
Body Request: 
<?xml version="1.0" encoding="utf-8"?>
<TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MessageInformation version="1.001">
    <UUID>c18535da-75b8-4925-9e32-b6445d4f2927</UUID>
    <Type>BusinessMessage</Type>
    <Transaction>Warehouse</Transaction>
    <StandardVersion>1.001</StandardVersion>
    <SourceApplication>RM</SourceApplication>
    <CompanyId>2</CompanyId>
    <BranchId>2</BranchId>
    <Product name="RM" version="11.83.55" />
    <GeneratedOn>2016-06-21T19:41:21</GeneratedOn>
    <DeliveryType>Sync</DeliveryType>
  </MessageInformation>
  <BusinessMessage>
    <BusinessEvent>
      <Entity>Warehouse</Entity>
      <Event>upsert</Event>
    </BusinessEvent>
    <BusinessContent>
      <CompanyId>CompanyId1</CompanyId>
      <BranchId>BranchId1</BranchId>
      <CompanyInternalId>CompanyInternalId1</CompanyInternalId>
      <Code>Code1</Code>
      <InternalId>InternalId1</InternalId>
      <Description>Description1</Description>
      <Active>true</Active>
      <Type>1</Type>
      <IsFinalItem>true</IsFinalItem>
      <IsQualityControl>true</IsQualityControl>
      <IsProcess>true</IsProcess>
      <IsWaste>true</IsWaste>
      <IsRecycled>true</IsRecycled>
      <IsBalanceAvailable>true</IsBalanceAvailable>
      <WarehouseClassification>1</WarehouseClassification>
    </BusinessContent>
  </BusinessMessage>
</TOTVSMessage>
Code Block
languagec#
titleJSON to XML
    /// <summary>
    /// Recebe uma mensagem padronizada em JSON e a retorna em XML
    /// </summary>
    /// <param name="message"> Mensagem no formato JSON</param>
    /// <param name="restVerb">
	/// Esse parâmetro é importante para mensagens do tipo "BusinessMessage", e não será levado em consideração para mensagens do tipo "Response"
	/// Dependendo do verbo em que a mensagem foi recebida pela API Rest, devemos colocar algum dos seguintes valores:
	/// POST = "request"
 	/// PUT = "upsert"
	/// DELETE = "delete"
	/// Se o valor for "request", será criado o elemento BusinessRequest
    /// Se o valor for "upsert" ou "delete", será criado o elemento BusinessEvent	
    /// </param>
    /// <returns>Mensagem padronizada no formato XML</returns>
    public static string ConvertJSONToXML(string message, string restVerb);


Transações suportadas

Abaixo encontram-se as transações que estão sendo suportadas pelo conversor.

...

Em TestesEm TestesEm Testes
TransaçãoVersõesStatus
AbsenceApenas 1.000Em TestesOK
AccountantAccountAté 2.002Em TestesOK
AccountantDefaultHistoryAté 2.000Em TestesOK
AccountingBalanceApenas 1.000Em TestesOK
AccountingCalendarApenas 1.000Em TestesOK
AccountingClosingDateApenas 1.000Em TestesOK
AccountingEntryAté 2.001Em TestesOK
AccountingItemApenas 1.000Em TestesOK
AccountPayableDocumentAté 2.002Em TestesOK
AccountPayableDocumentDischargeAté 2.003Em TestesOK
AccountPayableDocumentReplaceApenas 1.000Em TestesOK
AccountReceivableCancellationAllowanceApenas 1.000Em TestesOK
AccountReceivableDocumentAté 2.002006Em TestesOK
AccountReceivableDocumentDischargeAté 2.002Em TestesOK
AccountReceivableDocumentReplaceApenas 1.000Em TestesOK
AccountssReceivableOffseting Apenas 2.000OK
ActivityApenas 1.000Em TestesOK
AdditionalEntityApenas 1.000Em TestesOK
AdditionalEntityTypeApenas 1.000Em TestesOK
AddressStockApenas 1.000OK
AdjustmentsinTaxCalculationEFDApenas 1.000OK
AgencyCreditCardApenas 1.000Em TestesOK
AgriculturalOwnerApenas 1.000Em TestesOK
AgriculturalSectorApenas 1.000Em TestesOK
AgriculturalVarietyApenas 1.000Em TestesOK
AgriculturalYearApenas 1.000Em TestesOK
ApartmentTypeApenas 1.000Em TestesOK
AppointmentCostAté 1.001Em TestesOK
AreaAndLineOfBusinessApenas 1.000Em TestesOK
AssetDepreciationApenas 1.000Em TestesOK
AssetsAté 1.001Em TestesOK
AssetsValuationApenas 1.000Em TestesOK
AssignmentGradeApenas 1.000Em TestesOK
BalanceBaselineEntryApenas 1.000Em TestesOK
BankAté 2.002Em TestesOK
BankTransactionApenas 2.000Em TestesOK
BankTransactionsApenas 1.000Em TestesOK
BranchAté 2.001Em TestesOK
BroadcastTypeApenas 1.000Em TestesOK
BrokerSystemApenas 1.000Em TestesOK
BudgetItemsApenas 1.000Em TestesOK
CabintypeApenas 1.000Em TestesOK
CalculatedTransApenas 1.000Em TestesOK
CancelRequestApenas 1.000Em TestesOK
CardClassificationApenas 1.000Em TestesOK
CarrierAté 2.000Em TestesOK
CashierConferenceApenas 2.000Em TestesOK
CityAté 2.000Em TestesOK
ClassValueApenas 1.000Em TestesOK
CommercialFamilyApenas 1.000Em TestesOK
CompanyAté 2.002Em TestesOK
ContactApenas 1.000Em TestesOK
ContactRelationshipApenas 1.000Em TestesOK
ContractApenas 1Até 2.000Em TestesOK
ControlItemApenas 1.000Em TestesOK
ControlItemReportApenas 1.000OK
ControlSpinApenas 2.000Ok
CorporateGroupApenas 1.000Em TestesOK
CostCenterAté 2.001Em TestesOK
CoverageDocumentAté 2.004Em TestesOK
CreditRiskAnalysisApenas Até 1.000001Em TestesOK
CurrencyAté 2.002Em TestesOK
CurrencyQuotationAté 2.001Em TestesOK
CustomerCreditCardApenas 1.000Em TestesOK
CustomerEstablishmentApenas 1.000Em TestesOK
CustomerShippingAddressAté 1.001Em TestesOK
CustomerVendorAté 2.005Em TestesOK
CustomerVendorReserveIDApenas 1.001Em TestesOK
DeleteBranchApenas 1.000Em TestesOK
DeleteCourseApenas 1.000Em TestesOK
DeliveryScheduleApenas 1.000Em TestesOK
DepartamentAté 2.001Em TestesOK
DirectionTypeApenas 1.000Em TestesOK
DisciplineApenas 1.000Em TestesOK
DisciplineClassApenas 1.000Em TestesOK
DisciplineEnrollmentApenas 1.000Em TestesOK
DocumentOnCouponApenas 1.000Em TestesOK
DocumentNumberingNullificationApenas 1.000OK
DocumentTraceabilityOrderApenas 1.000Em TestesOK
DocumentTraceabilityRequestsApenas 1.000Em TestesOK
DocumentTypeApenas 1.000Em TestesOK
EAIEnvironmentTestApenas 1.000Em TestesOK
EDIDocumentForTransportationApenas 1.000Em TestesOK
ElectronicTransportDocumentApenas 1.000Em TestesOK
EmployeeAté 3.002Em TestesOK
EmployeeExceptionApenas 1.000Em TestesOK
EmployeeHistorySalaryPositionApenas 1.000Em TestesOK
EmployeeHistoryWorkShiftApenas 1.000Em TestesOK
EmployeePositionAté 1.001Em TestesOK
EmployeeSituationsApenas 1.000Em TestesOK
EnrollmentAté 2.000Em TestesOK
EquipmentAté 1.001Em TestesOK
EquipmentsCostApenas 1.000Em TestesOK
EstablishmentApenas 1.000Em TestesOK
ExportOfAccountMovementsAté 1.002Em TestesOK
ExportOfSingleInvoiceIssueApenas 1.000Em TestesOK
ExportSINTEGRAApenas 1.000Em TestesOK
ExportSPEDFISCALApenas 1.000Em TestesOK
ExternalAutonomousPaymentAté 1.002Em TestesOK
FamilyAté 2.002Em TestesOK
FarmApenas 1.000Em TestesOK
FinancialManagerAté 2.001Em TestesOK
FinancialNatureAté 2.000Em TestesOK
FinancingAté 1.002Em TestesOK
FinancingTradingApenas 2.000Em TestesOK
FrontSystemApenas 1.000Em TestesOK
FuelTypeApenas 1.000Em TestesOK
GeneralStopReportApenas 1.000Em TestesOK
GenericCalendarApenas 1.000Em TestesOK
GeographicReferenceApenas 1.000Em TestesOK
GetAccountBalancesApenas 1.000Em TestesOK
GetApportionmentOfPayrollApenas 1.000Em TestesOK
GetAssignmentsApenas 1.000Em TestesOK
GetCoursesAté 4.100Em TestesOK
GetEmployeeCostApenas 1.000Em TestesOK
GetEmployeeSituationsApenas 1.000Em TestesOK
GetEmployeeTimeSheetApenas 1.000Em TestesOK
GetEmployeeWorkedHoursApenas 1.000Em TestesOK
GetHarvestOrderAté 1.001Em TestesOK
HolidayApenas 1.000Em TestesOK
HotelInvoiceApenas Até 1.000002Em TestesOK
HotelInvoiceCancellationAllowanceApenas 1.000Em TestesOK
ImplementKilometrageApenas 1.000Em TestesOK
InfoOfParcelValuesApenas 1.000Em TestesOK
InputDocumentAté 2.004005Em TestesOK
InsurancePlanApenas 1.000Em TestesOK
InternalIdLoadApenas 1.000Em TestesOK
InventoryAté 23.001000Em TestesOK
InventoryGroupApenas 1.000Em TestesOK
InvoiceAté 3.010Em TestesOK
InvoiceTransferApenas 1.000Em TestesOK
ItemAté 4.001005Em TestesOK
ItemCostingApenas 1.000Em TestesOK
ItemGridApenas 1.000OK
ItemReferenceApenas 1.000Em TestesOK
ItemReserveApenas 1.000OK
ItemScriptApenas 1.000Em TestesOK
ItemSiteApenas 1.000Em TestesOK
ItemStockLevelApenas 1.000Em TestesOK
ItemStructureApenas 1.002Em TestesOK
ItemTypeApenas 1.000Em TestesOK
LaborUnionAté 1.001Em TestesOK
ListOfAccountantAccountApenas 2.002Em TestesOK
ListOfAccountantDefaultHistoryApenas 2.000Em TestesOK
ListOfAccountPayableDocumentApenas 1.000Em TestesOK
ListOfAccountReceivableSettlementsAté 1.001Em TestesOK
ListOfComplementaryValueApenas 1.000Em TestesOK
ListOfCostCenterApenas 2.001Em TestesOK
ListOfManagerialAccountingEntityApenas 1.000Em TestesOK
ListOfStationSalePointAté 1.001Em TestesOK
MachineAté 1.001002Em TestesOK
MacroApenas 1.000Em TestesOK
MaintenanceOrderAté 1.001002Em TestesOK
MaintenanceRequestApenas 1.000Em TestesOK
MaintenanceSupplyContractApenas 1.000Em TestesOK
MarkingPointApenas 1.000Em TestesOK
MarksApenas 1.000Em TestesOK
ModelsApenas 1.000Em TestesOK
MonthlyPayrollApenas 1.000Em TestesOK
MovementsInternalAté 1.001Em TestesOK
OperationalCategoryApenas 1.000Em TestesOK
OperationSplitApenas 1.000Em TestesOK
OperativeGroupApenas 1.000Em TestesOK
OrderAté 4.002004Em TestesOK
OtherDocumentsF100Apenas 1.000Em TestesOK
OurNumberBankingApenas 1.000Em TestesOK
PackagingAté 1.001Em TestesOK
PackagingRelationshipAté 1.001Em TestesOK
PartOfLandApenas 1.000Em TestesOK
PartOfLandVarietyRelationshipApenas 1.000Em TestesOK
PassengerTerminalApenas 1.000Em TestesOK
PaymentConditionAté 2.002Em TestesOK
PaymentMethodApenas 1.000Em TestesOK
PayrollAmountApenas 1.000Em TestesOK
PeopleAté 1.001Em TestesOK
PeriodGlBalanceApenas 1.000Em TestesOK
PlannedStopApenas 1.000Em TestesOK
PositionApenas 1.000Em TestesOK
PriceListHeaderItemAté 12.002Em TestesOK
ProductionAppointmentAté 2.002003Em TestesOK
ProductionAreaApenas 1.000Em TestesOK
ProductionOrderAté 2.005Em TestesOK
ProductionPeriodApenas 1.000Em TestesOK
ProductionResultsTableApenas 1.000Em TestesOK
ProductionShift_1_000Apenas 1.000Em TestesOK
ProductSupplierRelationshipAté 2.004Em TestesOK
ProfessorApenas 1.000Em TestesOK
ProgramPlanApenas 1.000Em TestesOK
ProjectAté 2.000Em TestesOK
ProrationProgramming_1_000Apenas 1.000Em TestesOK
QuotationAté 1.002Em TestesOK
ReductionAté 1.001Em TestesOK
ReferenceApenas 1.000Em TestesOK
RefuelingApenas 1.000Em TestesOK
RefundReasonApenas 1.000Em TestesOK
RefusalApenas 1.000Em TestesOK
RequestAté 1.009010Em TestesOK
ResourceApenas 1.000Em TestesOK
RetailSalesAté 12.002003Em TestesOK
RetailSalesCancellationApenas 1.000Em TestesOK
RetailSalesCancellationAllowanceApenas 1.000Em TestesOK
ReversalOfAccountPayableDocumentDischargeApenas 1.000Em TestesOK
ReversalOfAccountReceivableDocumentDischargeApenas 1.000Em TestesOK
ReversalOfFinancingTradingApenas 1.000Em TestesOK
RoadLineStrechApenas 1.000Em TestesOK
RoleApenas 1.000Em TestesOK
RouteApenas 1.000Em TestesOK
RuralCarrierApenas 1.000Em TestesOK
RuralMovementApenas 1.000Em TestesOK
RuralServiceApenas 1.000Em TestesOK
RuralShiftWorkApenas 1.000OK
SalesChargeRuralShiftWorkApenas 1.000Em TestesOK
SaleItemCancelationApenas 1.000OK
SaleItemFinderApenas 1.000Em TestesOK
SalesOrderAté 2.000Em TestesOK
ScheduleWorkApenas 1.000Em TestesOK
ScoreAté 2.000Em TestesOK
SellerAté 2.001003Em TestesOK
ServiceClassApenas 1.000Em TestesOK
ServiceStationApenas 1.000Em TestesOK
SetEmployeeBranchTranferApenas 1.000Em TestesOK
SettingsApenas 1.000Em TestesOK
ShiftWorkApenas 1.000Em TestesOK
ShipApenas 1.000Em TestesOK
ShipmentOfExportInvoiceApenas 1.000Em TestesOK
SplitUpdateApenas 1.000Em TestesOK
StepProjectAté 2.000Em TestesOK
StockGroupApenas 1.000Em TestesOK
StockLevelAté 2.000Em TestesOK
StockTurnoverAté 2.001Em TestesOK
StopReportAté 1.002003Em TestesOK
StudentApenas 1.000Em TestesOK
SubProjectAté 2.000Em TestesOK
TaskProjectAté 2.000Em TestesOK
TaxApenas 1.000Em TestesOK
TaxGroupApenas 1.000Em TestesOK
TeamOperatorApenas 1.000Em TestesOK
TourismCreditEvaluationApenas 1.000Em TestesOK
TransferWarehouseAté 1.003Em TestesOK
TransportDocumentApenas 2.000Em TestesOK
TransportDocumentStatusApenas 2.000Em TestesOK
TransportInvoiceApenas 2.000Em TestesOK
TransportInvoiceStatusApenas 2.000Em TestesOK
TravelAgentApenas 1.000Em TestesOK
TravelCustomerApenas 1.000Em TestesOK
TravelPaymentTermApenas 1.000Em TestesOK
TravelRateApenas 1.000Em TestesOK
TravelVendorApenas 1.000Em TestesOK
TWSImportExportApenas 1.000Em TestesOK
UnitOfMeasureAté 2.002Em TestesOK
UnitOfMeasureConversionApenas 1.000Em TestesOK
UnsubscribeApenas 1.000Em TestesOK
UpdateContractParcelAté 1.002Em TestesOK
UserAté 4.003Em TestesOK
VacationApenas 1.000Em TestesOK
VacationScheduleApenas 1.000Em TestesOK
ValidateCustomerVendorApenas 1.000Em TestesOK
ValidityLotApenas 1.000Em TestesOK
VehicleCategoryApenas 1.000Em TestesOK
VehiclesApenas 1.000Em TestesOK
VehicleTypeApenas 1.000Em TestesOK
VendorGroupApenas 1.000Em TestesOK
VisaTypeApenas 1.000Em TestesOK
WageTableApenas 1.000Em TestesOK
WarehouseAté 1.001003Em TestesOK
WasteReasonApenas 1.000Em TestesOK
WeighingRawMaterialsAté 1.001Em TestesOK
WhoisApenas 1.000Em TestesOK
WorkCenterApenas 1.000Em TestesOK
WorkforceAndOverheadAppointmentApenas 1.000Em TestesOK