/// <summary> /// Gera a tabela com os totais e escreve-a num ficheiro /// </summary> /// <param name="totaisTipoPagamento"></param> /// <param name="totaisTipoAdiantamento"></param> /// <param name="totaisTipoAdiantamentoPagamento"></param> /// <param name="totaisAnulados"></param> /// <param name="tipo">Prestador ou Adquirente</param> private static void GeraTabelaTxtTotais(RecibosVerdesValores totaisTipoPagamento, RecibosVerdesValores totaisTipoAdiantamento, RecibosVerdesValores totaisTipoAdiantamentoPagamento, RecibosVerdesValores totaisAnulados, int mes, TipoReciboVerdePrestOUAdquir tipo) { //Gera a tabela para txt RecibosVerdesValores total = totaisTipoPagamento + totaisTipoAdiantamento + totaisTipoAdiantamentoPagamento; DataTable table = new DataTable(); table.Columns.Add("Tipo", typeof(string)); table.Columns.Add("Valor base", typeof(decimal)); table.Columns.Add("IVA", typeof(decimal)); table.Columns.Add("Imp. Selo", typeof(decimal)); table.Columns.Add("IRS", typeof(decimal)); table.Columns.Add("Recebido", typeof(decimal)); table.Rows.Add("Pagamento", totaisTipoPagamento.valorBase, totaisTipoPagamento.valorIvaContinente, totaisTipoPagamento.impostoSelo, totaisTipoPagamento.irsSemRetencao, totaisTipoPagamento.importanciaRecebida); table.Rows.Add("Adiantamento", totaisTipoAdiantamento.valorBase, totaisTipoAdiantamento.valorIvaContinente, totaisTipoAdiantamento.impostoSelo, totaisTipoAdiantamento.irsSemRetencao, totaisTipoAdiantamento.importanciaRecebida); table.Rows.Add("Adiant. para despesas", totaisTipoAdiantamentoPagamento.valorBase, totaisTipoAdiantamentoPagamento.valorIvaContinente, totaisTipoAdiantamentoPagamento.impostoSelo, totaisTipoAdiantamentoPagamento.irsSemRetencao, totaisTipoAdiantamentoPagamento.importanciaRecebida); table.Rows.Add("Total", total.valorBase, total.valorIvaContinente, total.impostoSelo, total.irsSemRetencao, total.importanciaRecebida); table.Rows.Add("Total anulados", totaisAnulados.valorBase, totaisAnulados.valorIvaContinente, totaisAnulados.impostoSelo, totaisAnulados.irsSemRetencao, totaisAnulados.importanciaRecebida); var text = ConsoleTableBuilder.From(table).Export().ToString(); var diretorio = Path.Combine(DownloadFolder, GetFolderTipoDeclaracao(Declaracao.AT_LISTA_RECIBOS_VERDES_PARA_WINTOUCH_PRESTADOS, mes), empresaAutenticada.Codigo + "-" + empresaAutenticada.NIF); Directory.CreateDirectory(diretorio); string nomeFicheiro; if (tipo == TipoReciboVerdePrestOUAdquir.Adquirente) { nomeFicheiro = "Totais adquiridos.txt"; } else { nomeFicheiro = "Totais emitidos.txt"; } File.WriteAllText(Path.Combine(diretorio, nomeFicheiro), text); }
//Tipo: Prestador e Adquirente internal static void DownloadRecibosVerdesEmitidosWintouch(int ano, int mes, TipoReciboVerdePrestOUAdquir tipo) { List <string> detailsURLs = new List <string>(); //Vai à lista de recibos verdes, para obter o URL de detalhes de cada um RecibosVerdesEmitidosNavegarPorCadaRecibo(ano, mes, tipo, (string downloadURL, string numRecibo, string nomeCliente) => { //Para cada recibo, regista o URL para obter os detalhes string detailsUrl = downloadURL.Replace("/imprimir/", "/detalhe/").Replace("/normal", ""); detailsURLs.Add(detailsUrl); }); //Para contar os totais por tipo de recibo RecibosVerdesValores totaisTipoPagamento = new RecibosVerdesValores(); RecibosVerdesValores totaisTipoAdiantamento = new RecibosVerdesValores(); RecibosVerdesValores totaisTipoAdiantamentoPagamento = new RecibosVerdesValores(); RecibosVerdesValores totaisAnulados = new RecibosVerdesValores(); List <ReciboVerde> recibosVerdes = new List <ReciboVerde>(detailsURLs.Count); //List<ReciboVerde> recibosVerdes = (List<ReciboVerde>)new BinaryFormatter().Deserialize(new FileStream(@"C:\users\miguel\desktop\a.txt", FileMode.Open, FileAccess.Read));//TEMP //Depois de obtidos os URLs, navegar até à pagina de detalhes de cada um foreach (string detailsUrl in detailsURLs) { //Obtem os dados do recibo verde, navegado até à página de detalhes ReciboVerde reciboVerde = ObterDadosReciboVerde(detailsUrl, tipo); recibosVerdes.Add(reciboVerde); //Soma os valores para obter um total por tipo de recibo verde if (!reciboVerde.anulado) { if (reciboVerde.tipoReciboVerde == TipoReciboVerde.Pagamento) { totaisTipoPagamento += reciboVerde.valores; } if (reciboVerde.tipoReciboVerde == TipoReciboVerde.Adiantamento) { totaisTipoAdiantamento += reciboVerde.valores; } if (reciboVerde.tipoReciboVerde == TipoReciboVerde.AdiantamentoPagamento) { totaisTipoAdiantamentoPagamento += reciboVerde.valores; } } else { totaisAnulados += reciboVerde.valores; } } //new BinaryFormatter().Serialize(new FileStream(@"c:\users\miguel\desktop\b.txt", FileMode.Create), recibosVerdes); GeraTabelaTxtTotais(totaisTipoPagamento, totaisTipoAdiantamento, totaisTipoAdiantamentoPagamento, totaisAnulados, mes, tipo); ExportarFicheiroWintouch(recibosVerdes, mes, tipo); }
public static RecibosVerdesValores operator +(RecibosVerdesValores a, RecibosVerdesValores b) { RecibosVerdesValores soma = new RecibosVerdesValores(); soma.valorBase = a.valorBase + b.valorBase; soma.valorIvaContinente = a.valorIvaContinente + b.valorIvaContinente; soma.impostoSelo = a.impostoSelo + b.impostoSelo; soma.irsSemRetencao = a.irsSemRetencao + b.irsSemRetencao; soma.importanciaRecebida = a.importanciaRecebida + b.importanciaRecebida; return(soma); }