GARANTIR DESCONTO

Fórum Converter .AsVariant em Asstring #428954

17/11/2012

0

Boa noite amigos, existe alguma forma de converter "CST := Dmnfe.QpedidositensCSTICMS.AsVariant;" em string
pois o campo CSTICMS no banco de dados esta em varchar(5) com o seguinte valor = cst10 ?
Andre Ucella

Andre Ucella

Responder

Posts

17/11/2012

Claudia Nogueira

CST é uma variável do tipo String?
Tentou assim:
 CST :=  Dmnfe.QpedidositensCSTICMS.AsString;


Boa noite amigos, existe alguma forma de converter "CST := Dmnfe.QpedidositensCSTICMS.AsVariant;" em string
pois o campo CSTICMS no banco de dados esta em varchar(5) com o seguinte valor = cst10 ?
Responder

Gostei + 0

17/11/2012

Andre Ucella

Então ja tentei mas quando vou rodar o projeto da o seguinte erro;

[Error] ufrmgeraxml.pas(205): Incompatible types: 'TpcnCSTIcms' and 'String'
[Fatal Error] SOSCommerce.dpr(21): Could not compile used unit 'ufrmgeraxml.pas'
Responder

Gostei + 0

17/11/2012

Claudia Nogueira

Quaia são os retornos possíveis para TpcnCSTIcms?
Esse TpcnCSTIcms é um type?
Responder

Gostei + 0

17/11/2012

Claudia Nogueira

Quaia são os retornos possíveis para TpcnCSTIcms?
Esse TpcnCSTIcms é um type?
Responder

Gostei + 0

18/11/2012

Andre Ucella

Os valores para esse campo sao : cst00, cst10, cst60 etc.. estou tentando mandar esses valores diretos la conforme esta no cadastro de cada produto, ou teria alguma outra forma de mandar isso ? no cadastro ja tentei mandar o valor 000 para o CST de Icms 00 até ai tudo bem mas quando no cadastro esta 060, ele nao manda nenhum valor na hora que gero o Xml, por isso optei mandar cst00, cst10 e assim vai porem encontrei esse problema com a conversao do campo.
Responder

Gostei + 0

18/11/2012

Andre Ucella

Segue abaixo o codigo que gera os itens no XML, o problema esta na linha comentada com //, esse campo irao receber os seguintes valores cst00, cst10, cst60 etc...

// itens da nfe

anumiten :=0;
Dmnfe.Qpedidositens.First;
while not Dmnfe.Qpedidositens.Eof do
begin
inc(anumiten);
with det.Add do
begin
Prod.nItem := anumiten;
Prod.cProd := inttostr(Dmnfe.QpedidositensIDPRODUTO.AsInteger);
Prod.cEAN := Dmnfe.QpedidositensEAN13.AsString;;
Prod.xProd := Dmnfe.QpedidositensDESCRICAO.AsString;
Prod.NCM := Dmnfe.QpedidositensNCM.AsString;
Prod.EXTIPI := '';
Prod.CFOP := Dmnfe.QpedidositensCFOP.AsString;
Prod.uCom := Dmnfe.QpedidositensPRODUTO.AsString;
Prod.qCom := Dmnfe.QpedidositensQUANTIDADE.AsFloat;
Prod.vUnCom := Dmnfe.QpedidositensVALOR.AsFloat;
Prod.vProd := Dmnfe.QpedidositensVALOR_TOTAL.AsFloat;
Prod.cEANTrib := Dmnfe.QpedidositensEAN13.AsString;
Prod.uTrib := Dmnfe.QpedidositensPRODUTO.AsString;
Prod.qTrib := Dmnfe.QpedidositensQUANTIDADE.AsFloat;
Prod.vUnTrib := Dmnfe.QpedidositensVALOR.AsFloat;
Prod.vFrete :=0;
Prod.vSeg :=0;
Prod.vDesc := Dmnfe.QpedidositensDESCONTO.AsFloat;

with imposto do
begin
with ICMS do
begin
if Dmnfe.QpedidositensALIQUOTA.AsString = 'Tributado' then
begin
//CST := Dmnfe.QpedidositensCSTICMS.AsVariant;//
CSOSN := csosn101;
ICMS.orig := oeNacional;
ICMS.modBC := dbiValorOperacao;
ICMS.vBC := Dmnfe.QpedidositensBASE_ICMS.AsFloat;
ICMS.pICMS := Dmnfe.QpedidositensALIQUOTA_ICMS.AsFloat;
ICMS.vICMS := Dmnfe.QpedidositensVALOR_ICMS.AsFloat;
ICMS.modBCST := dbisMargemValorAgregado;
ICMS.pMVAST :=0;
ICMS.pRedBCST :=0;
ICMS.vBCST :=0;
ICMS.pICMSST :=0;
ICMS.vICMSST :=0;
ICMS.pRedBC :=0;
end;
if Dmnfe.QpedidositensALIQUOTA.AsString ='Substituicao' then
begin
//CST := Dmnfe.QpedidositensCSTICMS.AsVariant;//
CSOSN := csosn500;
ICMS.orig := oeNacional;
ICMS.modBC := dbiValorOperacao;
ICMS.vBC := Dmnfe.QpedidositensBASE_ICMS.AsFloat;
ICMS.pICMS := 0;
ICMS.vICMS := 0;
ICMS.modBCST := dbisMargemValorAgregado;
ICMS.pMVAST := Dmnfe.QpedidositensMG_SUBST.AsFloat;
ICMS.pRedBCST :=0;
ICMS.vBCST := Dmnfe.QpedidositensBASE_ST.AsFloat;
ICMS.pICMSST := Dmnfe.QpedidositensMG_SUBST.AsFloat;
ICMS.vICMSST := Dmnfe.QpedidositensVALOR_ST.AsFloat;;
ICMS.pRedBC :=0;
if Dmnfe.QpedidositensALIQUOTA.AsString = 'Isento' then
begin
with II do
begin
vBc :=0;
vDespAdu :=0;
vII := Dmnfe.QpedidositensVALOR_TOTAL.AsFloat;
vIOF := 0;

end;
end;
end;


end;
end;
end;


Dmnfe.Qpedidositens.Next;
end;
Responder

Gostei + 0

18/11/2012

Claudia Nogueira

Se não tem como você declarar a variável CST com mesmo tipo dos possíveia retornos csta010 por exemplo, uma forma é usar IF.
if Dmnfe.QpedidositensCSTICMS.Value = csts10 then
CST = '10'
else if Dmnfe.QpedidositensCSTICMS.Value = csts00 then
CST = '00' 
elae
if Dmnfe.QpedidositensCSTICMS.Value = csts60 then
CST = '60';

E vai fazendo if com todos os CSTs.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar