You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

307 lines
21 KiB

<?xml version="1.0" encoding="UTF-8"?>
<panel-form xmlns="http://www.davinti.com.br/vitruvio/form/panel"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.davinti.com.br/vitruvio/form/panel https://bitbucket.org/davinTI/vitruvio-xds/raw/master/vitruvio-panel-form.xsd"
>
<form formKey="formCadastro" width="100%" height="100%">
<name>Lançar Valor</name>
<description>Regras Contábeis</description>
<initScript language="JavaScript">
<![CDATA[
importClass(Packages.br.com.davinti.base.vaadin.components.icons.IconFactory);
importClass(Packages.br.com.davinti.base.vaadin.components.resources.icons16x16.IconLibraryAPISmall);
function fncLimpaCampos(){
engine.getField('dataLancamento')["setValue(java.lang.Object)"](null);
engine.getField('operacao')["setValue(java.lang.Object)"](null);
engine.getField('placa')["setValue(java.lang.Object)"](null);
engine.getField('funcionario')["setValue(java.lang.Object)"](null);
engine.getField('valorFrete')['setValue(java.lang.String)'](null);
engine.getField('valorImposto')['setValue(java.lang.String)'](null);
engine.getField('valorLiquido')['setValue(java.lang.String)'](null);
}
function fncSubTotal() {
var params = {id: 0};
var db = vScriptService.loadScript('db', 'javascript');
var vitruvio = new db('vitruvio');
var sql = "Select replace(replace(replace(to_char(sum(ccf.valor_frete), 'L9G999G990D99'),',','-' ),'.',','),'-','.') total_frete, " +
"replace(replace(replace(to_char(sum(ccf.valor_imposto), 'L9G999G990D99'),',','-' ),'.',','),'-','.') total_imposto, " +
"replace(replace(replace(to_char(sum(ccf.valor_liquido), 'L9G999G990D99'),',','-' ),'.',','),'-','.') total_liquido " +
"from controle_receitas_fretes ccf where ccf.data between '" + engine.getField('dataInicio') + "' and '" + engine.getField('dataFinal') + "'";
vitruvio.query(sql).each(function (r) {
if (r.total_frete) {
engine.getLabel('sub').setValue('<b><font color="blue">Subtotal Frete <br>R' + r.total_frete + '</font></b>');
} else {
engine.getLabel('sub').setValue('<b><font color="blue">Subtotal Frete <br>R$ 0,00</font></b>');
}
if (r.total_imposto) {
engine.getLabel('subImposto').setValue('<b><font color="red">Subtotal Impostos <br>R' + r.total_imposto + '</font></b>');
} else {
engine.getLabel('subImposto').setValue('<b><font color="red">Subtotal Impostos <br>R$ 0,00</font></b>');
}
if (r.total_liquido) {
engine.getLabel('subLiquido').setValue('<b><font color="green">Subtotal (Frete - Impostos) <br>R' + r.total_liquido + '</font></b>');
} else {
engine.getLabel('subLiquido').setValue('<b><font color="green">Subtotal (Frete - Impostos) <br>R$ 0,00</font></b>');
}
});
}
function run() {
engine.getField('valorImposto').setEnabled(false);
engine.getField('valorLiquido').setEnabled(false);
engine.setGlobalVariable('abertura',1);
var d = new java.util.Date();
engine.setGlobalVariable('fncLimpaCampos', fncLimpaCampos);
engine.setGlobalVariable('fncSubTotal', fncSubTotal);
engine.getField('dataInicio').setValue(d);
engine.getField('dataFinal').setValue(d);
engine.getField('tbLancamentos').refresh();
engine.getGlobalVariable('fncSubTotal')();
// Registrando icones
engine.getWidgetController('btnGravar').getButton().setIcon(IconFactory.instance().getIconAsResource(IconLibraryAPISmall.SALVAR));
engine.getWidgetController('btnFiltrar').getButton().setIcon(IconFactory.instance().getIconAsResource(IconLibraryAPISmall.FILTRAR));
}
]]>
</initScript>
<components>
<VerticalLayout margin="true" width="100%" >
<TabLayout align="BOTTOM_LEFT" id="credito" compact="true" width="100%" height="100%" >
<Tab caption="Fretes">
<VerticalLayout spacing="true" width="100%" height="100%">
<Panel caption=" " width="100%" expandRatio="0.1" align="TOP_LEFT" height="100%">
<VerticalLayout width="100%" margin="true" spacing="true">
<HorizontalLayout width="100%" spacing="true" height="100%">
<ImageWidget id="img1" height="46" width="68" align="TOP_LEFT">
<image>
<base64 extension="jpg">
<![CDATA[
,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVFQTIxQTExOTRFODExRThCQTY5OUIwNzFEMDlCNzIxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVFQTIxQTEyOTRFODExRThCQTY5OUIwNzFEMDlCNzIxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUVBMjFBMEY5NEU4MTFFOEJBNjk5QjA3MUQwOUI3MjEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUVBMjFBMTA5NEU4MTFFOEJBNjk5QjA3MUQwOUI3MjEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYG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
]]>
</base64>
</image>
</ImageWidget>
<DateField type="date" id="dataLancamento" align="TOP_LEFT" caption="Data" width="100%" expandRatio="0.15" required="true" resolution="DAY" description="Informe a data do lançamento" format="dd/MM/yyyy" >
</DateField>
<DBComboBox type="string" id="operacao" required="true" width="100%" expandRatio="0.2" align="TOP_LEFT" caption="Operação">
<datasource>
<freeQuery connection-key="vitruvio">
<![CDATA[
Select * from operacao
]]>
</freeQuery>
</datasource>
<key-field>CODIGO</key-field>
<caption-field>NOME</caption-field>
</DBComboBox>
<DBComboBox type="string" id="placa" width="100%" required="true" expandRatio="0.2" align="TOP_LEFT" caption="Placa">
<datasource>
<freeQuery connection-key="vitruvio">
<![CDATA[
Select * from veiculo
]]>
</freeQuery>
</datasource>
<key-field>CODIGO</key-field>
<caption-field>PLACA</caption-field>
</DBComboBox>
<DBComboBox type="string" id="funcionario" width="100%" expandRatio="0.2" align="TOP_LEFT" caption="Funcionário">
<datasource>
<freeQuery connection-key="vitruvio">
<![CDATA[
Select * from funcionario
]]>
</freeQuery>
</datasource>
<key-field>CODIGO</key-field>
<caption-field>NOME</caption-field>
</DBComboBox>
</HorizontalLayout>
<HorizontalLayout width="100%" spacing="true">
<DecimalField type="decimal" id="valorFrete" required="true" immediate="true" caption="Valor frete (R$)" format="#,##0.00" description="Valor frete" width="100%" expandRatio="0.2" >
<events>
<valueChange>
<script language="JavaScript">
<![CDATA[
function run() {
var impostos = engine.getField('valorFrete').getConvertedValue() * 0.075;
var liquido = engine.getField('valorFrete').getConvertedValue() - impostos;
engine.getField('valorImposto').setValue(impostos);
engine.getField('valorLiquido').setValue(liquido);
}
]]>
</script>
</valueChange>
</events>
</DecimalField>
<DecimalField type="decimal" id="valorImposto" caption="Valor impostos (R$)" format="#,##0.00" description="Valor impostos" width="100%" expandRatio="0.2" />
<DecimalField type="decimal" id="valorLiquido" caption="Frete - Impostos (R$)" format="#,##0.00" description="Valor frete menos o valor dos impostos" width="100%" expandRatio="0.2" />
<ButtonWidget id="btnGravar" caption="Gravar" align="BOTTOM_RIGHT" description="Grava o lançamento" width="100" >
<onClickScript language="JavaScript">
<![CDATA[
importClass(Packages.com.vaadin.ui.Notification);
function run() {
if (engine.isValid()) {
var db = libService.loadScript('db');
var dbVitruvio = new db('vitruvio');
var sql;
dbVitruvio.transaction(function() {
sql = "insert into controle_receitas_fretes (chave_receita_frete,data,chave_operacao,chave_veiculo,chave_funcionario,valor_frete,valor_imposto,valor_liquido) " +
" values (" + dbVitruvio.getSequenceNextValSql('controle_rec_fr_seq') + ",:data,:chave_operacao,:chave_veiculo,:chave_funcionario,:valor_frete,:valor_imposto,:valor_liquido)";
this.update(sql, {
data: engine.getField('dataLancamento').getValue(),
chave_operacao: Number(engine.getField('operacao').getValue()),
chave_veiculo: Number(engine.getField('placa').getValue()),
chave_funcionario: Number(engine.getField('funcionario').getValue()),
valor_frete: engine.getField('valorFrete').getConvertedValue(),
valor_imposto: engine.getField('valorImposto').getConvertedValue(),
valor_liquido: engine.getField('valorLiquido').getConvertedValue()
});
});
engine.getField('tbLancamentos').refresh();
engine.getGlobalVariable('fncLimpaCampos')();
engine.getGlobalVariable('fncSubTotal')();
Notification.show(null, 'Dados salvos', Notification.Type.TRAY_NOTIFICATION);
}
}
]]>
</onClickScript>
</ButtonWidget>
</HorizontalLayout>
</VerticalLayout>
</Panel>
<Panel width="100%" margin="true" >
<VerticalLayout width="100%" spacing="true" align="TOP_LEFT" >
<HorizontalLayout width="70%" spacing="true" align="TOP_LEFT">
<DateField type="date" id="dataInicio" caption="Data inicial" align="TOP_LEFT" width="100%" expandRatio="0.5" description="Data iniacial da exibição" format="dd/MM/yyyy" />
<DateField type="date" id="dataFinal" caption="Data final" align="TOP_LEFT" width="100%" expandRatio="0.5" description="Data final da exibição" format="dd/MM/yyyy" />
<ButtonWidget id="btnFiltrar" caption="Filtrar" align="BOTTOM_RIGHT" description="Aplica filtro de data" width="100" >
<onClickScript language="JavaScript">
<![CDATA[
function run() {
engine.getField('tbLancamentos').refresh();
engine.getGlobalVariable('fncSubTotal')();
}
]]>
</onClickScript>
</ButtonWidget>
<Label id="sub" align="BOTTOM_RIGHT" width="100%" expandRatio="1" contentMode="HTML">
<value>
</value>
</Label>
<Label id="subImposto" align="BOTTOM_RIGHT" width="100%" expandRatio="1" contentMode="HTML">
<value>
</value>
</Label>
<Label id="subLiquido" align="BOTTOM_RIGHT" width="100%" expandRatio="1" contentMode="HTML">
<value>
</value>
</Label>
</HorizontalLayout>
<DBTable id="tbLancamentos" type="number" showRowCount="true" width="100%" rows="9" selectable="false" exportXLS="true" editable="false" >
<datasource>
<sqlBuilderDataSource connection-key="vitruvio" language="JavaScript">
<![CDATA[
function buildSQL(params) {
var sql = "Select ccf.chave_receita_frete, ccf.data, " +
" (select co.nome from operacao co where co.codigo = ccf.chave_operacao) operacao," +
" (select cv.placa from veiculo cv where cv.codigo = ccf.chave_veiculo) veiculo," +
" (select cf.nome from funcionario cf where cf.codigo = ccf.chave_funcionario) funcionario," +
" 'R' || replace(replace(replace(to_char(ccf.valor_frete, 'L9G999G990D99'),',','-' ),'.',','),'-','.') valor_frete, " +
" 'R' || replace(replace(replace(to_char(ccf.valor_imposto, 'L9G999G990D99'),',','-' ),'.',','),'-','.') valor_imposto, " +
" 'R' || replace(replace(replace(to_char(ccf.valor_liquido, 'L9G999G990D99'),',','-' ),'.',','),'-','.') valor_liquido " +
" from controle_receitas_fretes ccf" +
" where 1 = 2";
if (engine) {
sql = "Select ccf.chave_receita_frete, ccf.data, " +
" (select co.nome from operacao co where co.codigo = ccf.chave_operacao) operacao," +
" (select cv.placa from veiculo cv where cv.codigo = ccf.chave_veiculo) veiculo," +
" (select cf.nome from funcionario cf where cf.codigo = ccf.chave_funcionario) funcionario," +
" 'R' || replace(replace(replace(to_char(ccf.valor_frete, 'L9G999G990D99'),',','-' ),'.',','),'-','.') valor_frete, " +
" 'R' || replace(replace(replace(to_char(ccf.valor_imposto, 'L9G999G990D99'),',','-' ),'.',','),'-','.') valor_imposto, " +
" 'R' || replace(replace(replace(to_char(ccf.valor_liquido, 'L9G999G990D99'),',','-' ),'.',','),'-','.') valor_liquido " +
" from controle_receitas_fretes ccf" +
" where ccf.data between '" + engine.getField('dataInicio') + "' and '" + engine.getField('dataFinal') + "' order by data desc";
}
return sql;
}
]]>
</sqlBuilderDataSource>
</datasource>
<key-field>chave_receita_frete</key-field>
<columns>
<column name="DATA" caption="Data" format="dd/MM/yyyy" />
<column name="OPERACAO" caption="Operação" />
<column name="VEICULO" caption="Veículo" />
<column name="FUNCIONARIO" caption="Funcionário" />
<column name="VALOR_FRETE" caption="Valor frete" format="#.##0,00"/>
<column name="VALOR_IMPOSTO" caption="Valor impostos" format="#.##0,00"/>
<column name="VALOR_LIQUIDO" caption="Lucro (Frete - Impostos)" format="#.##0,00"/>
<generated name="EXCLUIR" caption="Excluir">
<scriptColumnGenerator language="JavaScript">
<![CDATA[
importClass(Packages.br.com.davinti.base.vaadin.components.layout.ConfirmationBox);
importClass(Packages.br.com.davinti.base.vaadin.components.resources.icons16x16.IconLibraryAPISmall);
importClass(Packages.br.com.davinti.base.vaadin.components.icons.IconFactory);
importClass(Packages.br.com.davinti.vitruvio.spi.is.DatabaseSnippet);
function Generator() {
var comp = libService.loadScript('vaadinComponents');
this.generate = function (itemId, columnId, item, container) {
var btn = comp.buttonIcon('excluir', function () {
var deletar = function(idRegistro) {
var sql = 'delete from controle_receitas_fretes where chave_receita_frete = :id';
vQueryService.doInTransaction('vitruvio', new DatabaseSnippet() {
execute: function(db, transaction) {
var params = new java.util.HashMap();
params.put('id', idRegistro);
db.update(sql, params);
}
});
engine.getField('tbLancamentos').refresh();
engine.getGlobalVariable('fncSubTotal')();
}
var msg = 'Confirma a exclusão?'
ConfirmationBox.show( 'Confirmar operação'
, msg
, new ConfirmationBox.ConfirmationBoxListener() {
dialogEnd: function(context, action) {
if(action == ConfirmationBox.Action.YES) {
if(deletar){
deletar(itemId);
}
}
}
}
);
}, 'trash');
return btn;
}
}
var script = new Generator();
]]>
</scriptColumnGenerator>
</generated>
</columns>
</DBTable>
</VerticalLayout>
</Panel>
</VerticalLayout>
</Tab>
</TabLayout>
</VerticalLayout>
</components>
</form>
</panel-form>