public string GetContents(DeclarationField field, bool except = true) { if (!ColumnOrdering.ContainsField(field)) { if (!except) { return(""); } } Cell c; try { c = GetDeclarationField(field); } catch (SmartParserFieldNotFoundException e) { if (!except) { return(""); } throw e; } if (c == null) { return(""); } return(c.GetText(true)); }
public Cell GetDeclarationField(DeclarationField field) { Cell cell; if (MappedHeader != null && MappedHeader.TryGetValue(field, out cell)) { return(cell); } TColumnInfo colSpan; var exactCell = adapter.GetDeclarationFieldWeak(ColumnOrdering, row, field, out colSpan); if (exactCell.Text.Trim() != "" || exactCell.Col == -1) { return(exactCell); } for (int i = exactCell.Col + exactCell.MergedColsCount; i < colSpan.EndColumn;) { var mergedCell = adapter.GetCell(row, i); if (mergedCell == null) { break; } if (mergedCell.Text.Trim() != "") { return(mergedCell); } i += mergedCell.MergedColsCount; } return(exactCell); }
bool ParseIncomeOneField(DataRow currRow, Person person, DeclarationField field, bool ignoreThousandMultiplier) { if (!currRow.ColumnOrdering.ContainsField(field)) { return(false); } string fieldStr = currRow.GetContents(field); if (DataHelper.IsEmptyValue(fieldStr)) { return(false); } bool fieldInThousands = (field & DeclarationField.DeclaredYearlyIncomeThousandsMask) == DeclarationField.DeclaredYearlyIncomeThousandsMask; person.DeclaredYearlyIncome = DataHelper.ParseDeclaredIncome(fieldStr, fieldInThousands); if (!ignoreThousandMultiplier || fieldStr.Contains("тыс.")) { person.DeclaredYearlyIncome *= 1000; } if (!DataHelper.IsEmptyValue(fieldStr)) { person.DeclaredYearlyIncomeRaw = NormalizeRawDecimalForTest(fieldStr); } return(true); }
void AddRealEstateWithNaturalText(DataRow currRow, DeclarationField fieldName, string ownTypeByColumn, Person person) { if (!currRow.ColumnOrdering.ContainsField(fieldName)) { fieldName = fieldName | DeclarationField.MainDeclarant; } if (!currRow.ColumnOrdering.ContainsField(fieldName)) { return; } string text = currRow.GetContents(fieldName).Trim().Replace("не имеет", "").Trim(); if (DataHelper.IsEmptyValue(text) || text == "0") { return; } var realtyType = GetRealtyTypeFromColumnTitle(fieldName); if (realtyType != null) { ParseRealtiesDistributedByColumns(ownTypeByColumn, realtyType, text, person); } else { ParseRealtiesByAntlr(ownTypeByColumn, text, person); } }
public string GetContents(DeclarationField field, bool except = true) { if (!ColumnOrdering.ContainsField(field)) { if (!except) { return(""); } } Cell c; try { c = GetDeclarationField(field); } catch (SmartParserFieldNotFoundException e) { if (!except) { return(""); } throw new SmartParserFieldNotFoundException(e.Message + String.Format(" Line = {0}", this.DebugString())); } if (c == null) { return(""); } return(c.GetText(true)); }
public void HeaderDetectionTest() { string big_header = "Объекты недвижимости, находящиеся в собственности Вид\nсобствен\nности"; DeclarationField field = GetField(big_header); big_header = "Объекты недвижимости имущества находящиеся в пользовании Вид обьекта"; field = GetField(big_header); }
static void DumpColumn(IAdapter adapter, ColumnOrdering columnOrdering, DeclarationField columnToDump) { int rowOffset = columnOrdering.FirstDataRow; for (var row = rowOffset; row < adapter.GetRowsCount(); row++) { DataRow currRow = adapter.GetRow(columnOrdering, row); var cell = currRow.GetDeclarationField(columnToDump); var s = (cell == null) ? "null" : cell.GetText(); s = s.Replace("\n", "\\n"); Console.WriteLine(s); } }
public DeclarationField FindByPixelIntersection(int start, int end, out int maxInterSize) { DeclarationField field = DeclarationField.None; maxInterSize = 0; foreach (var x in ColumnOrder) { int interSize = PeriodIntersection(start, end, x.Value.ColumnPixelStart, x.Value.ColumnPixelStart + x.Value.ColumnPixelWidth); if (interSize > maxInterSize) { maxInterSize = interSize; field = x.Key; } } return(field); }
static DeclarationField FindMin(Dictionary <DeclarationField, double> freqs) { // Linq is slower double minValue = Double.MaxValue; DeclarationField resultField = DeclarationField.None; foreach (var i in freqs) { if (i.Value < minValue) { minValue = i.Value; resultField = i.Key; } } return(resultField); }
static void FixBadColumnName01_Template(TableHeader c, DeclarationField naturalText, DeclarationField country, DeclarationField square, DeclarationField type) { //move MixedColumnWithNaturalText to MixedRealEstateType if (!c.ContainsField(naturalText)) { return; } if (c.ContainsField(country) && c.ContainsField(square) ) { TColumnInfo s = c.ColumnOrder[naturalText]; s.Field = type; c.Add(s); c.Delete(naturalText); } }
static void AddColumn(ColumnOrdering ordering, DeclarationField field, Cell cell) { TColumnInfo s = new TColumnInfo(); s.BeginColumn = cell.Col; s.EndColumn = cell.Col + cell.MergedColsCount; s.ColumnPixelWidth = cell.CellWidth; //s.ColumnPixelStart is unknown and initialized in FinishOrderingBuilding s.Field = field; if (field == DeclarationField.DeclaredYearlyIncome) { string dummy = ""; ColumnDetector.GetValuesFromTitle(cell.GetText(), ref dummy, ref ordering.YearFromIncome, ref dummy); } ordering.Add(s); }
public static bool TestFieldWithoutOwntypes(DeclarationField field, Cell cell) { if (cell.IsEmpty) { return(false); } string text = cell.GetText(true); if ((field & DeclarationField.SquareMask) > 0 && DataHelper.ParseSquare(text).HasValue) { return(true); } var predictedField = ColumnByDataPredictor.PredictByString(text); return((predictedField & ~DeclarationField.AllOwnTypes) == (field & ~DeclarationField.AllOwnTypes)); }
void CopyRelativeFieldToMainCell(DataRow row, DeclarationField relativeMask, DeclarationField f, ref DataRow childRow) { if ((f & relativeMask) > 0) { var value = row.GetContents(f, false); if (!DataHelper.IsEmptyValue(value)) { if (childRow == null) { childRow = row.DeepClone(); } f = (f & ~relativeMask) | DeclarationField.MainDeclarant; var declarantCell = childRow.GetDeclarationField(f); declarantCell.Text = value; declarantCell.IsEmpty = false; } } }
public static void IncrementTrigrams(DeclarationField field, string words) { if (!Trigrams.ContainsKey(field)) { Trigrams[field] = new Dictionary <string, int>(); } var FieldTrigrams = Trigrams[field]; foreach (var trigram in String2Trigrams(words)) { if (!FieldTrigrams.ContainsKey(trigram)) { FieldTrigrams[trigram] = 1; } else { FieldTrigrams[trigram] = FieldTrigrams[trigram] + 1; } } }
static void AddColumn(TableHeader ordering, DeclarationField field, Cell cell) { TColumnInfo s = new TColumnInfo(); s.BeginColumn = cell.Col; s.EndColumn = cell.Col + cell.MergedColsCount; s.ColumnPixelWidth = cell.CellWidth; //s.ColumnPixelStart is unknown and initialized in FinishOrderingBuilding s.Field = field; if (IsIncomeColumn(field)) { string dummy = ""; int? year = null; if (TableHeaderRecognizer.GetValuesFromTitle(cell.GetText(), ref dummy, ref year, ref dummy) && year.HasValue) { ordering.YearFromIncome = year.Value; } } ordering.Add(s); }
static void FixMissingSubheadersForMergedColumns(IAdapter adapter, TableHeader columnOrdering, DeclarationField mergedField, DeclarationField[] subColumns) { if (!columnOrdering.ContainsField(mergedField)) { return; } TColumnInfo dummy; var headerCell = adapter.GetDeclarationFieldWeak(columnOrdering, columnOrdering.HeaderBegin.Value, mergedField, out dummy); var subCells = FindSubcellsUnder(adapter, headerCell); // we check only the second column, todo check the first one and the third if (subCells.Count != subColumns.Count() || !CheckSquareColumn(adapter, columnOrdering.FirstDataRow, 5, subCells, 1)) { return; } for (int i = 0; i < subColumns.Count(); ++i) { AddColumn(columnOrdering, subColumns[i], subCells[i]); } columnOrdering.Delete(mergedField); }
static bool TestFieldRegexpWeak(DeclarationField field, string text) { if (text.Length == 0) { return(true); } if (text == "п/п" && field == DeclarationField.DeclarantIndex) { return(true); } if (((field & DeclarationField.StartsWithDigitMask) > 0) && !Char.IsNumber(text[0])) { return(false); } if (DataHelper.IsCountryStrict(text) && (field & DeclarationField.CountryMask) == 0) { return(false); } return(true); }
public Cell GetDeclarationField(DeclarationField field, bool except = true) { try { Cell cell; if (MappedHeader != null && MappedHeader.TryGetValue(field, out cell)) { return(cell); } TColumnInfo colSpan; var exactCell = adapter.GetDeclarationFieldWeak(ColumnOrdering, row, field, out colSpan); if (exactCell.Text.Trim() != "") { return(exactCell); } for (int i = colSpan.BeginColumn + exactCell.MergedColsCount; i < colSpan.EndColumn;) { var mergedCell = adapter.GetCell(row, i); if (mergedCell == null) { break; } if (mergedCell.Text.Trim() != "") { return(mergedCell); } i += mergedCell.MergedColsCount; } return(exactCell); } catch (SmartParserFieldNotFoundException e) { if (!except) { return(null); } throw e; } }
string GetRealtyTypeFromColumnTitle(DeclarationField fieldName) { if ((fieldName & DeclarationField.LandArea) > 0) { return("земельный участок"); } if ((fieldName & DeclarationField.LivingHouse) > 0) { return("земельный участок"); } if ((fieldName & DeclarationField.Appartment) > 0) { return("квартира"); } if ((fieldName & DeclarationField.SummerHouse) > 0) { return("дача"); } if ((fieldName & DeclarationField.Garage) > 0) { return("гараж"); } return(null); }
void ParseTypeAndCountry(DataRow currRow, DeclarationField realtyType, string ownTypeByColumn, Person person) { var typeAndCountry = new TRealtyCell(currRow.GetDeclarationField(realtyType)); var cellSquareField = (realtyType == DeclarationField.OwnedRealEstateTypeAndCountry) ? DeclarationField.OwnedRealEstateSquare : DeclarationField.StatePropertySquare; var squareCell = new TRealtyCell(currRow.GetDeclarationField(cellSquareField)); List <int> linesWithNumbers = TRealtyCellSpan.GetLinesStaringWithNumbers(squareCell.DataCell.GetText(true)); if (linesWithNumbers.Count > 0) { typeAndCountry.ParseByEmptyLines(linesWithNumbers); squareCell.ParseByEmptyLines(linesWithNumbers); } for (int i = 0; i < squareCell.ParsedItems.Count; ++i) { var typeAndCountryStr = typeAndCountry.GetParsedItem(i); var type = typeAndCountryStr; var countryStr = ""; if (typeAndCountryStr.Contains('(')) { int bracket = typeAndCountryStr.IndexOf('('); type = typeAndCountryStr.Substring(0, bracket).Trim(); countryStr = typeAndCountryStr.Substring(bracket).Trim(' ', '\n', '(', ')'); } var squareRaw = squareCell.GetParsedItem(i); RealEstateProperty realEstateProperty = new RealEstateProperty(); realEstateProperty.Text = type; realEstateProperty.type_raw = type; realEstateProperty.square = DataHelper.ParseSquare(squareRaw); realEstateProperty.square_raw = ParserBase.NormalizeRawDecimalForTest(squareRaw); realEstateProperty.country_raw = DataHelper.ParseCountry(countryStr).NormSpaces(); realEstateProperty.own_type_by_column = ownTypeByColumn; person.RealEstateProperties.Add(realEstateProperty); } }
public static bool IsNameDeclarationField(DeclarationField f) { return(f == NameAndOccupationOrRelativeType || f == NameOrRelativeType || f == DeclarantIndexAndName); }
public void Delete(DeclarationField field) { ColumnOrder.Remove(field); }
public bool ContainsField(DeclarationField field) { return(ColumnOrder.ContainsKey(field)); }
static string ParseArgs(string[] args) { CMDLineParser parser = new CMDLineParser(); CMDLineParser.Option outputOpt = parser.AddStringParameter("-o", "use file for output", false); CMDLineParser.Option licenseOpt = parser.AddStringParameter("-license", "", false); CMDLineParser.Option mainLogOpt = parser.AddStringParameter("-log", "", false); CMDLineParser.Option skipLoggingOpt = parser.AddBoolSwitch("-skip-logging", ""); CMDLineParser.Option verboseOpt = parser.AddStringParameter("-v", "verbose level: debug, info, error", false); CMDLineParser.Option columnsOnlyOpt = parser.AddBoolSwitch("-columnsonly", ""); CMDLineParser.Option checkJsonOpt = parser.AddBoolSwitch("-checkjson", ""); CMDLineParser.Option adapterOpt = parser.AddStringParameter("-adapter", "can be aspose,npoi, microsoft or prod, by default is aspose", false); CMDLineParser.Option maxRowsToProcessOpt = parser.AddStringParameter("-max-rows", "max rows to process from the input file", false); CMDLineParser.Option dumpColumnOpt = parser.AddStringParameter("-dump-column", "dump column identified by enum DeclarationField and exit", false); CMDLineParser.Option dumpHtmlOpt = parser.AddStringParameter("-dump-html", "dump table to html", false); CMDLineParser.Option tolokaFileNameOpt = parser.AddStringParameter("-toloka", "generate toloka html", false); CMDLineParser.Option skipRelativeOrphanOpt = parser.AddBoolSwitch("-skip-relative-orphan", ""); CMDLineParser.Option apiValidationOpt = parser.AddBoolSwitch("-api-validation", "validate JSON output by API call"); CMDLineParser.Option buildTrigramsOpt = parser.AddBoolSwitch("-build-trigrams", "build trigrams"); CMDLineParser.Option checkPredictorOpt = parser.AddBoolSwitch("-check-predictor", "calc predictor precision"); CMDLineParser.Option docFileIdOpt = parser.AddStringParameter("-docfile-id", "document id to initialize document/documentfile_id", false); CMDLineParser.Option convertedFileStorageUrlOpt = parser.AddStringParameter("-converted-storage-url", "document id to initialize document/documentfile_id for example http://disclosures.ru:8091, the default value is read from env variable DECLARATOR_CONV_URL", false); CMDLineParser.Option fioOnlyOpt = parser.AddBoolSwitch("-fio-only", ""); CMDLineParser.Option useDecimalRawNormalizationOpt = parser.AddBoolSwitch("-decimal-raw-normalization", "print raw floats in Russian traditional format"); CMDLineParser.Option disclosuresOpt = parser.AddBoolSwitch("-disclosures", "use disclosures output format: save sheet id to each each section, do not produce many output files but one"); CMDLineParser.Option versionOpt = parser.AddBoolSwitch("-version", "print version"); parser.AddHelpOption(); try { //parse the command line parser.Parse(args); } catch (Exception ex) { //show available options Console.Write(parser.HelpMessage()); Console.WriteLine(); Console.WriteLine("Error: " + ex.Message); throw; } if (versionOpt.isMatched) { PrintVersion(); System.Environment.Exit(0); } if (licenseOpt.isMatched) { AsposeLicense.SetLicense(licenseOpt.Value.ToString()); if (!AsposeLicense.Licensed) { throw new SmartParserException("Not valid aspose licence " + licenseOpt.Value.ToString()); } } Smart.Parser.Lib.Parser.InitializeSmartParser(); if (maxRowsToProcessOpt.isMatched) { MaxRowsToProcess = System.Convert.ToInt32(maxRowsToProcessOpt.Value.ToString()); } if (docFileIdOpt.isMatched) { UserDocumentFileId = System.Convert.ToInt32(docFileIdOpt.Value.ToString()); } if (disclosuresOpt.isMatched) { DeclarationSerializer.SmartParserJsonFormat = SmartParserJsonFormatEnum.Disclosures; } string logFileName = ""; if (mainLogOpt.isMatched) { logFileName = Path.GetFullPath(mainLogOpt.Value.ToString()); } Logger.Setup(logFileName, skipLoggingOpt.isMatched); if (outputOpt.isMatched) { OutFile = outputOpt.Value.ToString(); } Logger.LogLevel verboseLevel = Logger.LogLevel.Info; if (verboseOpt.isMatched) { switch (verboseOpt.Value.ToString()) { case "info": verboseLevel = Logger.LogLevel.Info; break; case "error": verboseLevel = Logger.LogLevel.Error; break; case "debug": verboseLevel = Logger.LogLevel.Debug; break; default: { throw new Exception("unknown verbose level " + verboseOpt.Value.ToString()); } } } Logger.SetLoggingLevel(verboseLevel); SkipRelativeOrphan = skipRelativeOrphanOpt.isMatched; ValidateByApi = apiValidationOpt.isMatched; if (adapterOpt.isMatched) { AdapterFamily = adapterOpt.Value.ToString(); if (AdapterFamily != "aspose" && AdapterFamily != "npoi" && AdapterFamily != "microsoft" && AdapterFamily != "prod") { throw new Exception("unknown adapter family " + AdapterFamily); } } if (dumpColumnOpt.isMatched) { ColumnToDump = (DeclarationField)Enum.Parse(typeof(DeclarationField), dumpColumnOpt.Value.ToString()); } if (dumpHtmlOpt.isMatched) { HtmlFileName = dumpHtmlOpt.Value.ToString(); } if (convertedFileStorageUrlOpt.isMatched) { IAdapter.ConvertedFileStorageUrl = convertedFileStorageUrlOpt.Value.ToString(); } if (tolokaFileNameOpt.isMatched) { TolokaFileName = tolokaFileNameOpt.Value.ToString(); } if (useDecimalRawNormalizationOpt.isMatched) { Smart.Parser.Lib.Parser.UseDecimalRawNormalization = true; } ColumnsOnly = columnsOnlyOpt.isMatched; ColumnOrdering.SearchForFioColumnOnly = fioOnlyOpt.isMatched; CheckJson = checkJsonOpt.isMatched; BuildTrigrams = buildTrigramsOpt.isMatched; ColumnPredictor.CalcPrecision = checkPredictorOpt.isMatched; var freeArgs = parser.RemainingArgs(); return(String.Join(" ", freeArgs).Trim(new char[] { '"' })); }
public static void PredictForPrecisionCheck(IAdapter adapter, Cell headerCell, DeclarationField field) { var predicted_field = PredictEmptyColumnTitle(adapter, headerCell); if (predicted_field == field) { CorrectCount += 1; } else { Logger.Debug( string.Format("wrong predicted as {0} must be {1} ", predicted_field, field)); } AllCount += 1; }
static bool IsIncomeColumn(DeclarationField d) { return(d == DeclarationField.DeclaredYearlyIncome || d == DeclarationField.DeclaredYearlyIncomeThousands || d == DeclarationField.DeclaredYearlyOtherIncome); }
// напрямую используется, пока ColumnOrdering еще не построен // во всех остальных случаях надо использовать Row.GetDeclarationField virtual public Cell GetDeclarationFieldWeak(ColumnOrdering columnOrdering, int row, DeclarationField field, out TColumnInfo colSpan) { if (!columnOrdering.ColumnOrder.TryGetValue(field, out colSpan)) { throw new SmartParserFieldNotFoundException(String.Format("Field {0} not found, row={1}", field.ToString(), row)); } var exactCell = GetCell(row, colSpan.BeginColumn); if (exactCell == null) { var rowData = GetCells(row); throw new SmartParserFieldNotFoundException(String.Format("Field {0} not found, row={1}, col={2}. Row.Cells.Count = {3}", field.ToString(), row, colSpan.BeginColumn, rowData.Count )); } return(exactCell); }
private void LoadDeclarationFields(Declaration declaration) { //To DO add pair information declaration.Declarations.Add(new DeclarationField("P_10", "Dostawa towarów oraz świadczenie usług, na terytorium kraju, zwolnione od podatku - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_11", "Dostawa towarów oraz świadczenie usług poza terytorium kraju - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_12")); declaration.Declarations.Add(new DeclarationField("P_12", "Świadczenie usług, o których mowa w art.100 ust.1 pkt 4 ustawy - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, false, "P_11")); declaration.Declarations.Add(new DeclarationField("P_13", "Dostawa towarów oraz świadczenie usług, na terytorium kraju, opodatkowane stawką 0% - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_14")); declaration.Declarations.Add(new DeclarationField("P_14", "Dostawa towarów, na terytorium kraju, opodatkowana stawką 0%, o której mowa w art.129 ustawy - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, false, "P_13")); declaration.Declarations.Add(new DeclarationField("P_15", "Dostawa towarów oraz świadczenie usług, na terytorium kraju, opodatkowane stawką 5% - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_16")); declaration.Declarations.Add(new DeclarationField("P_16", "Dostawa towarów oraz świadczenie usług, na terytorium kraju, opodatkowane stawką 5% - podatek należny", DeclarationFieldType.NullableInt, declaration, true, true, "P_15")); declaration.Declarations.Add(new DeclarationField("P_17", "Dostawa towarów oraz świadczenie usług, na terytorium kraju, opodatkowane stawką odpowiednio 7% albo 8% - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_18")); declaration.Declarations.Add(new DeclarationField("P_18", "Dostawa towarów oraz świadczenie usług, na terytorium kraju, opodatkowane stawką odpowiednio 7% albo 8% - podatek należny", DeclarationFieldType.NullableInt, declaration, true, true, "P_17")); declaration.Declarations.Add(new DeclarationField("P_19", "Dostawa towarów oraz świadczenie usług, na terytorium kraju, opodatkowane stawką odpowiednio 22% albo 23% - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_20")); declaration.Declarations.Add(new DeclarationField("P_20", "Dostawa towarów oraz świadczenie usług, na terytorium kraju, opodatkowane stawką odpowiednio 22% albo 23% - podatek należny", DeclarationFieldType.NullableInt, declaration, true, true, "P_19")); declaration.Declarations.Add(new DeclarationField("P_21", "Wewnątrzwspólnotowa dostawa towarów - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_22", "Eksport towarów - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_23", "Wewnątrzwspólnotowe nabycie towarów - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_24")); declaration.Declarations.Add(new DeclarationField("P_24", "Wewnątrzwspólnotowe nabycie towarów - podatek należny", DeclarationFieldType.NullableInt, declaration, true, true, "P_23")); declaration.Declarations.Add(new DeclarationField("P_25", "Import towarów - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_26")); declaration.Declarations.Add(new DeclarationField("P_26", "Import towarów - podatek należny", DeclarationFieldType.NullableInt, declaration, true, true, "P_25")); declaration.Declarations.Add(new DeclarationField("P_27", "Import usług, z wyłączeniem usług, do których stosuje się art.28b ustawy - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_28")); declaration.Declarations.Add(new DeclarationField("P_28", "Import usług, z wyłączeniem usług, do których stosuje się art.28b ustawy - podatek należny", DeclarationFieldType.NullableInt, declaration, true, true, "P_27")); declaration.Declarations.Add(new DeclarationField("P_29", "Import usług, do których stosuje się art.28b ustawy - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_30")); declaration.Declarations.Add(new DeclarationField("P_30", "Import usług, do których stosuje się art.28b ustawy - podatek należny", DeclarationFieldType.NullableInt, declaration, true, true, "P_29")); declaration.Declarations.Add(new DeclarationField("P_31", "Dostawa towarów, dla której podatnikiem jest nabywca (art.17 ust.1 pkt 5 ustawy (wypełnia nabywca)) - podstawa opodatkowania", DeclarationFieldType.NullableInt, declaration, true, true, "P_32")); declaration.Declarations.Add(new DeclarationField("P_32", "Dostawa towarów, dla której podatnikiem jest nabywca (art.17 ust.1 pkt 5 ustawy (wypełnia nabywca)) - podatek należny", DeclarationFieldType.NullableInt, declaration, true, true, "P_31")); declaration.Declarations.Add(new DeclarationField("P_33", "Kwota podatku należnego od towarów i usług objętych spisem z natury", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_34", "Zwrot odliczonej lub zwróconej kwoty wydatkowanej na zakup kas rejestrujących", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_35", "Kwota podatku należnego od wewnątrzwspólnotowego nabycia środków transportu", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_36", "Kwota podatku od wewnątrzwspólnotowego nabycia towarów, o których mowa w art. 103 ust. 5aa ustawy, podlegająca wpłacie w terminach, o których mowa w art. 103 ust. 5a i 5b ustawy", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_37", "Razem podstawa opodatkowania", DeclarationFieldType.Calculable, declaration, true, false, "P_38", true)); declaration.Declarations.Add(new DeclarationField("P_38", "Razem podatek należny", DeclarationFieldType.Calculable, declaration, true, true, "P_37", true)); declaration.Declarations.Add(new DeclarationField("P_39", "Kwota nadwyżki z poprzedniej deklaracji", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_40", "Nabycie towarów i usług zaliczanych u podatnika do środków trwałych - wartość netto", DeclarationFieldType.NullableInt, declaration, true, true, "P_41")); declaration.Declarations.Add(new DeclarationField("P_41", "Nabycie towarów i usług zaliczanych u podatnika do środków trwałych - podatek naliczony", DeclarationFieldType.NullableInt, declaration, true, true, "P_40")); declaration.Declarations.Add(new DeclarationField("P_42", "Nabycie towarów i usług pozostałych - wartość netto", DeclarationFieldType.NullableInt, declaration, true, true, "P_43")); declaration.Declarations.Add(new DeclarationField("P_43", "Nabycie towarów i usług pozostałych - podatek naliczony", DeclarationFieldType.NullableInt, declaration, true, true, "P_42")); declaration.Declarations.Add(new DeclarationField("P_44", "Korekta podatku naliczonego od nabycia środków trwałych", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_45", "Korekta podatku naliczonego od pozostałych nabyć", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_46", "Korekta podatku naliczonego, o której mowa w art. 89b ust. 1 ustawy", DeclarationFieldType.NegativeOrZeroOrNull, declaration)); declaration.Declarations.Add(new DeclarationField("P_47", "Korekta podatku naliczonego, o której mowa w art. 89b ust. 4 ustawy", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_48", "Razem kwota podatku naliczonego do odliczenia", DeclarationFieldType.Calculable, declaration)); declaration.Declarations.Add(new DeclarationField("P_49", "Kwota wydatkowana na zakup kas rejestrujących - do odliczenia", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_50", "Kwota podatku objęta zaniechaniem poboru", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_51", "Kwota podatku podlegającego wpłacie do urzędu skarbowego", DeclarationFieldType.IntOrZero, declaration)); declaration.Declarations.Add(new DeclarationField("P_52", "Kwota wydatkowana na zakup kas rejestrujących - do zwrotu", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_53", "Nadwyżka podatku naliczonego nad należnym", DeclarationFieldType.NullableInt, declaration)); var P_54 = new DeclarationField("P_54", "Kwota do zwrotu na rachunek bankowy", DeclarationFieldType.NullableInt, declaration) { IsInNestedPair = true, IsRequiredInNestedPair = true, IsChoicePair = true }; (P_54 as IFieldMultiplePair).PairsFieldNames = new string[] { }; var P_55 = new DeclarationField("P_55", "Kwota do zwrotu na rachunek VAT", DeclarationFieldType.OneOrNull, declaration) { IsInNestedPair = true, IsRequiredInNestedPair = true, IsChoicePair = true, ChoicePairs = new IFieldMultiplePair[] { P_54 } }; (P_55 as IFieldMultiplePair).IsInPair = true; (P_55 as IFieldMultiplePair).PairsFieldNames = new string[] { "P_56", "P_57", "P_58" }; (P_55 as IFieldMultiplePair).IsRequiredInPair = true; var P_56 = new DeclarationField("P_56", "Kwota do zwrotu w terminie 25 dni", DeclarationFieldType.OneOrNull, declaration) { IsInNestedPair = true, IsRequiredInNestedPair = true, IsChoicePair = true, ChoicePairs = new IFieldMultiplePair[] { P_54 } }; (P_56 as IFieldMultiplePair).IsInPair = true; (P_56 as IFieldMultiplePair).PairsFieldNames = new string[] { "P_55", "P_57", "P_58" }; (P_56 as IFieldMultiplePair).IsRequiredInPair = true; var P_57 = new DeclarationField("P_57", "Kwota do zwrotu w terminie 60 dni", DeclarationFieldType.OneOrNull, declaration) { IsInNestedPair = true, IsRequiredInNestedPair = true, IsChoicePair = true, ChoicePairs = new IFieldMultiplePair[] { P_54 } }; (P_57 as IFieldMultiplePair).IsInPair = true; (P_57 as IFieldMultiplePair).PairsFieldNames = new string[] { "P_55", "P_56", "P_58" }; (P_57 as IFieldMultiplePair).IsRequiredInPair = true; var P_58 = new DeclarationField("P_58", "Kwota do zwrotu w terminie 180 dni", DeclarationFieldType.OneOrNull, declaration) { IsInNestedPair = true, IsRequiredInNestedPair = true, IsChoicePair = true, ChoicePairs = new IFieldMultiplePair[] { P_54 } }; (P_58 as IFieldMultiplePair).IsInPair = true; (P_58 as IFieldMultiplePair).PairsFieldNames = new string[] { "P_55", "P_56", "P_57" }; (P_58 as IFieldMultiplePair).IsRequiredInPair = true; var P_59 = new DeclarationField("P_59", "Zaliczenie zwrotu podatku na poczet przyszłych zobowiązań podatkowych", DeclarationFieldType.OneOrNull, declaration) { IsInNestedPair = true, IsRequiredInNestedPair = false, IsChoicePair = false, Pair = P_55, }; (P_59 as IFieldMultiplePair).IsInPair = true; (P_59 as IFieldMultiplePair).PairsFieldNames = new string[] { "P_60", "P_61" }; (P_59 as IFieldMultiplePair).IsRequiredInPair = true; var P_60 = new DeclarationField("P_60", "Wysokość zwrotu do zaliczenia na poczet przyszłych zobowiązań podatkowych", DeclarationFieldType.NullableInt, declaration) { IsInNestedPair = true, IsRequiredInNestedPair = false, IsChoicePair = false, Pair = P_55 }; (P_60 as IFieldMultiplePair).IsInPair = true; (P_60 as IFieldMultiplePair).PairsFieldNames = new string[] { "P_59", "P_61" }; (P_60 as IFieldMultiplePair).IsRequiredInPair = true; var P_61 = new DeclarationField("P_61", "Rodzaj przyszłego zobowiązania podatkowego", DeclarationFieldType.NullableInt, declaration) { IsInNestedPair = true, IsRequiredInNestedPair = false, IsChoicePair = false, Pair = P_55 }; (P_61 as IFieldMultiplePair).IsInPair = true; (P_61 as IFieldMultiplePair).PairsFieldNames = new string[] { "P_59", "P_60" }; (P_61 as IFieldMultiplePair).IsRequiredInPair = true; P_54.ChoicePairs = new IFieldMultiplePair[] { P_55, P_56, P_57, P_58 }; P_54.Pair = P_59; P_55.Pair = P_59; P_56.Pair = P_59; P_57.Pair = P_59; P_58.Pair = P_59; declaration.Declarations.Add(P_54); declaration.Declarations.Add(P_55); declaration.Declarations.Add(P_56); declaration.Declarations.Add(P_57); declaration.Declarations.Add(P_58); declaration.Declarations.Add(P_59); declaration.Declarations.Add(P_60); declaration.Declarations.Add(P_61); declaration.Declarations.Add(new DeclarationField("P_62", "Kwota do przeniesienia na następny okres rozliczeniowy", DeclarationFieldType.NullableInt, declaration)); declaration.Declarations.Add(new DeclarationField("P_63", "Czynności jakie wykonywał podatnik - art.119 ustawy", DeclarationFieldType.OneOrNull, declaration)); declaration.Declarations.Add(new DeclarationField("P_64", "Czynności jakie wykonywał podatnik - art.120 ust.4 lub 5 ustawy", DeclarationFieldType.OneOrNull, declaration)); declaration.Declarations.Add(new DeclarationField("P_65", "Czynności jakie wykonywał podatnik - art.122 ustawy", DeclarationFieldType.OneOrNull, declaration)); declaration.Declarations.Add(new DeclarationField("P_66", "Czynności jakie wykonywał podatnik - art.136 ustawy", DeclarationFieldType.OneOrNull, declaration)); declaration.Declarations.Add(new DeclarationField("P_67", "Podatnik korzysta z obniżenia zobowiązania podatkowego", DeclarationFieldType.OneOrNull, declaration)); declaration.Declarations.Add(new DeclarationField("P_68", "Wysokość korekty podstawy opodatkowania, o której mowa w art. 89a ust. 1 ustawy", DeclarationFieldType.NegativeOrZeroOrNull, declaration, true, true, "P_69")); declaration.Declarations.Add(new DeclarationField("P_69", "Wysokość korekty podatku należnego, o której mowa w art. 89a ust. 1 ustawy", DeclarationFieldType.NullableInt, declaration, true, true, "P_68")); declaration.Declarations.Add(new DeclarationField("P_ORDZU", "Uzasadnienie przyczyn złożenia korekty", DeclarationFieldType.String, declaration)); }