Пример #1
0
        public static void Write(this SIFTLevelsProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            //SIFTLevelsToMaintain=[{G/L Account No.,Global Dimension 1 Code},
            //          {G/L Account No.,Global Dimension 1 Code,Global Dimension 2 Code},
            //          {G/L Account No.,Global Dimension 1 Code,Global Dimension 2 Code,Posting Date:Year},
            //          {G/L Account No.,Global Dimension 1 Code,Global Dimension 2 Code,Posting Date:Month},
            //          {G/L Account No.,Global Dimension 1 Code,Global Dimension 2 Code,Posting Date:Day}] }

            writer.Write("{0}=[", property.Name);
            writer.Indent(writer.Column);

            foreach (var siftLevel in property.Value)
            {
                writer.Write("{");
                writer.Write(string.Join(",", siftLevel.Components.Select(f => f.FieldName + (!string.IsNullOrEmpty(f.Aspect) ? string.Format(":{0}", f.Aspect) : string.Empty))));

                var isLastLine = (siftLevel == property.Value.Last());

                switch (isLastLine)
                {
                case true:
                    switch (isLastProperty)
                    {
                    case true:
                        writer.Write("}] ");
                        break;

                    default:
                        writer.WriteLine("}];");
                        break;
                    }
                    break;

                default:
                    writer.WriteLine("},");
                    break;
                }
            }

            writer.Unindent();
        }
        public static void Write(this TableKey key, CSideWriter writer)
        {
            writer.Write("{");

            switch (key.Enabled)
            {
            case null: writer.Write("    "); break;

            default:
                writer.Write(writer.CodeStyle.Localization.ConvertBoolToString(key.Enabled).EqualPad(4));
                break;
            }

            writer.Write(";");

            key.Fields.Write(writer);

            if (key.Properties.Any(p => p.HasValue))
            {
                writer.Write(";");

                if (writer.Column > 51)
                {
                    writer.Indent(51);
                    writer.WriteLine("");
                }
                else
                {
                    writer.Indent(writer.Column);
                }

                key.Properties.Write(PropertiesStyle.Field, writer);
                writer.Unindent();
            }
            else
            {
                writer.Write(" ");
            }

            writer.WriteLine("}");
        }
Пример #3
0
        public static void Write(this TableKey key, CSideWriter writer)
        {
            writer.Write("{");

            switch (key.Enabled)
            {
            case null: writer.Write("    "); break;

            case true: writer.Write(" Yes"); break;

            case false: writer.Write(" No "); break;
            }

            writer.Write(";");

            key.Fields.Write(writer);

            if (key.Properties.Any(p => p.HasValue))
            {
                writer.Write(";");

                if (writer.Column > 51)
                {
                    writer.Indent(51);
                    writer.WriteLine("");
                }
                else
                {
                    writer.Indent(writer.Column);
                }

                key.Properties.Write(PropertiesStyle.Field, writer);
                writer.Unindent();
            }
            else
            {
                writer.Write(" ");
            }

            writer.WriteLine("}");
        }
Пример #4
0
/*
 *      public static void Write(this PageControlGroup groupPageControl, CSideWriter writer, int propertyIndentation)
 *      {
 *          var debt = 0;
 *          var controlID = BuildControlPart(groupPageControl.ID.ToString(), 4, ref debt);
 *          var controlIndentation = BuildControlPart(groupPageControl.IndentationLevel.AsString(), 4, ref debt);
 *          var controlType = BuildControlPart("Group", 10, ref debt);
 *          var declaration = string.Format("{{ {0};{1};{2}", controlID, controlIndentation, controlType);
 *
 *          writer.Write(declaration);
 *
 *          if (groupPageControl.Properties.Any(p => p.HasValue))
 *          {
 *              writer.WriteLine(";");
 *              writer.Indent(propertyIndentation);
 *              groupPageControl.Properties.Write(PropertiesStyle.Field, writer);
 *              writer.Unindent();
 *          }
 *          else
 *          {
 *              writer.Write(" ");
 *          }
 *
 *          //var idLength = Math.Max(groupPageControl.ID.ToString().Length, 4);
 *          //var id = groupPageControl.ID.ToString().PadRight(idLength);
 *          //var idAndIndentation = string.Format("{0};{1}", id, groupPageControl.IndentationLevel.ToString()).PadRight(9);
 *          //var idAndIndentationAndType = string.Format("{0};Group", idAndIndentation);
 *
 *          //writer.WriteLine("{{ {0};", idAndIndentationAndType.PadRight(20));
 *
 *          if (groupPageControl.Properties.Where(p => p.HasValue).LastOrDefault() is ActionListProperty)
 *              writer.Write(new string(' ', 13));
 *
 *          writer.WriteLine("}");
 *          writer.InnerWriter.WriteLine();
 *      }
 *
 *      public static void Write(this PageControlPart partPageControl, CSideWriter writer, int propertyIndentation)
 *      {
 *          var debt = 0;
 *          var controlID = BuildControlPart(partPageControl.ID.ToString(), 4, ref debt);
 *          var controlIndentation = BuildControlPart(partPageControl.IndentationLevel.AsString(), 4, ref debt);
 *          var controlType = BuildControlPart("Part", 10, ref debt);
 *          var declaration = string.Format("{{ {0};{1};{2};", controlID, controlIndentation, controlType);
 *          writer.WriteLine(declaration);
 *
 *
 *          //var idLength = Math.Max(partPageControl.ID.ToString().Length, 4);
 *          //var id = partPageControl.ID.ToString().PadRight(idLength);
 *          //var idAndIndentation = string.Format("{0};{1}", id, partPageControl.IndentationLevel.ToString());
 *          //var idAndIndentationAndType = string.Format("{{ {0};Part", idAndIndentation.PadRight(9));
 *
 *          //writer.WriteLine("{0};", idAndIndentationAndType.PadRight(22));
 *
 *          writer.Indent(propertyIndentation);
 *          partPageControl.Properties.Write(PropertiesStyle.Field, writer);
 *          writer.WriteLine("}");
 *          writer.Unindent();
 *          writer.InnerWriter.WriteLine();
 *      }*/

        public static void Write(this FormControl fieldFormControl, CSideWriter writer, int propertyIndentation)
        {
            var debt          = 0;
            var controlID     = BuildControlPart(fieldFormControl.ID.ToString(), 4, ref debt);
            var controlType   = BuildControlPart(fieldFormControl.Type.ToString(), 13, ref debt);
            var controlXPos   = BuildControlPart(fieldFormControl.PosX.ToString(), 5, ref debt);
            var controlYPos   = BuildControlPart(fieldFormControl.PosY.ToString(), 5, ref debt);
            var controlWidth  = BuildControlPart(fieldFormControl.Width.ToString(), 5, ref debt);
            var controlHeight = BuildControlPart(fieldFormControl.Height.ToString(), 5, ref debt);

            var relevantProperties = fieldFormControl.Properties.Where(p => p.HasValue);
            var declaration        = string.Format("{{ {0};{1};{2};{3};{4};{5}", controlID, controlType, controlXPos, controlYPos, controlWidth, controlHeight);

            writer.Write(declaration);
            writer.Write(relevantProperties.Any() ? ";" : " ");

            if ((writer.Column > propertyIndentation) && (relevantProperties.Any()))
            {
                writer.Indent(propertyIndentation);
                writer.WriteLine("");
            }
            else
            {
                writer.Indent(writer.Column);
            }

            relevantProperties.Write(PropertiesStyle.Field, writer);

            var lastProperty = relevantProperties.LastOrDefault();

            if (lastProperty != null)
            {
                if (lastProperty is TriggerProperty)
                {
                    writer.Write(new string(' ', lastProperty.Name.Length + 2));
                }
            }

            writer.WriteLine("}");
            writer.Unindent();
        }
        public static void Write(this PageActionGroup action, CSideWriter writer)
        {
            var idLength         = Math.Max(action.ID.ToString().Length, 8);
            var id               = action.ID.ToString().PadRight(idLength);
            var idAndIndentation = string.Format("{0};{1}", id, action.IndentationLevel.ToString());

            writer.Write("{{ {0};", idAndIndentation.PadRight(13));
            writer.Indent(writer.Column);
            writer.Write("ActionGroup");
            if (action.Properties.Any(p => p.HasValue))
            {
                writer.WriteLine(";");
                action.Properties.Write(PropertiesStyle.Field, writer);
            }
            else
            {
                writer.Write(" ");
            }
            writer.WriteLine("}");
            writer.Unindent();
        }
Пример #6
0
        public static void Write(this TableField field, CSideWriter writer)
        {
            var debt = 0;

            var fieldNo       = BuildFieldPart(field.ID.ToString(), 4, ref debt);
            var fieldEnabled  = BuildFieldPart(field.Enabled.AsString(), 3, ref debt);
            var fieldName     = BuildFieldPart(field.Name, 20, ref debt);
            var fieldTypeName = BuildFieldPart(field.TypeName(), 14, ref debt);
            var declaration   = string.Format("{{ {0};{1};{2};{3}", fieldNo, fieldEnabled, fieldName, fieldTypeName);
            var properties    = field.AllProperties;

            writer.Write("{0}", declaration.PadRight(46));
            writer.Write(properties.Any(p => p.HasValue) ? ";" : " ");

            if ((writer.Column > 51) && (properties.Any(p => p.HasValue)))
            {
                writer.Indent(51);
                writer.WriteLine("");
            }
            else
            {
                writer.Indent(writer.Column);
            }

            properties.Write(PropertiesStyle.Field, writer);

            var relevantProperties = properties.Where(p => p.HasValue);
            var lastProperty       = relevantProperties.LastOrDefault();

            if (lastProperty != null)
            {
                if (lastProperty is TriggerProperty)
                {
                    writer.Write(new string(' ', lastProperty.Name.Length + 2));
                }
            }

            writer.WriteLine("}");
            writer.Unindent();
        }
        public static void Write(this ReportLabel reportLabel, CSideWriter writer)
        {
            var id   = reportLabel.ID.ToString().PadRight(4);
            var debt = id.Length > 4 ? id.Length - 4 : 0;
            var name = reportLabel.Name.PadRight(20 - debt);

            writer.Write("{ ");
            writer.Write(id);
            writer.Write(";");
            writer.Write(name);

            var relevantProperties = reportLabel.Properties.Where(p => p.HasValue);

            switch (relevantProperties.Any())
            {
            case true:
                writer.Write(";");
                break;

            default:
                writer.Write(" ");
                break;
            }

            if (writer.Column > 32)
            {
                writer.Indent(32);
                writer.WriteLine("");
            }
            else
            {
                writer.Indent(writer.Column);
            }

            reportLabel.Properties.Write(PropertiesStyle.Field, writer);

            writer.WriteLine("}");
            writer.Unindent();
        }
Пример #8
0
        public static void Write(this Function function, CSideWriter writer)
        {
            writer.InnerWriter.WriteLine();
#if NAV2016
            WriteSubscriberAttributes(function, writer);
            writer.WriteLineIf(function.TryFunction.GetValueOrDefault(false), "[TryFunction]");
            WritePublisherAttributes(function, writer);
#endif
#if NAV2018
            writer.WriteLineIf(
                function.FunctionVisibility.GetValueOrDefault(Common.FunctionVisibility.Internal) == Common.FunctionVisibility.External &&
                function.ServiceEnabled.GetValueOrDefault(false),
                "[ServiceEnabled]");
#endif
#if NAV2015
            writer.WriteLineIf(function.UpgradeFunctionType.HasValue, "[{0}]", function.UpgradeFunctionType);
#endif
            writer.WriteLineIf(function.TestFunctionType.HasValue, "[{0}]", function.TestFunctionType);
            writer.WriteLineIf(function.HandlerFunctions != null, "[HandlerFunctions({0})]", function.HandlerFunctions);
            writer.WriteLineIf(function.TransactionModel.HasValue, "[TransactionModel({0})]", function.TransactionModel);
#if NAV2017
            writer.WriteLineIf(function.TestPermissions.HasValue, "[TestPermissions({0})]", function.TestPermissions);
#endif
#if NAV2018
            writer.WriteLineIf(function.FunctionVisibility.HasValue, "[{0}]", function.FunctionVisibility);
#endif
            writer.Write("{2}PROCEDURE {0}@{1}(", function.Name, function.ID, function.Local ? "LOCAL " : "");
            function.Parameters.Write(writer);
            writer.Write(")");
            function.ReturnValue.Write(writer);
            writer.WriteLine(";");
            function.Variables.Write(writer);
            writer.WriteLine("BEGIN");
            writer.Indent();
            function.CodeLines.Write(writer);
            writer.Unindent();
            writer.WriteLine("END;");
        }
Пример #9
0
        public static void Write(this ReportDataItemLinkProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            writer.Write("{0}=", property.Name);
            writer.Indent(writer.Column);

            foreach (var line in property.Value)
            {
                var isLastLine = (line == property.Value.Last());

                switch (isLastProperty && isLastLine)
                {
                case true:
                    writer.Write("{0}=FIELD({1}) ", line.FieldName, line.ReferenceFieldName);
                    break;

                case false:
                    writer.WriteLine("{0}=FIELD({1}){2}", line.FieldName, line.ReferenceFieldName, isLastLine ? ";" : ",");
                    break;
                }
            }

            writer.Unindent();
        }
Пример #10
0
        public static void Write(this FormMenuItemBase fieldFormControl, CSideWriter writer)
        {
            var relevantProperties = fieldFormControl.Properties.Where(p => p.HasValue);
            var declaration        = "{ ";

            writer.Write(declaration);
            writer.Indent(writer.Column);

            relevantProperties.Write(PropertiesStyle.Field, writer);

            var lastProperty = relevantProperties.LastOrDefault();

            if (lastProperty != null)
            {
                if (lastProperty is TriggerProperty)
                {
                    writer.Write(new string(' ', lastProperty.Name.Length + 2));
                }
            }

            writer.WriteLine("}");
            writer.Unindent();
        }
        public static void Write(this DataportField dataportField, CSideWriter writer, int propertyIndentation)
        {
            var debt               = 0;
            var startPos           = BuildControlPart(dataportField.StartPosition.HasValue? dataportField.StartPosition.Value.ToString() : "", 5, ref debt);
            var width              = BuildControlPart(dataportField.Width.HasValue? dataportField.Width.Value.ToString() : "", 5, ref debt);
            var sourceExp          = BuildControlPart(dataportField.SourceExpr, 20, ref debt);
            var relevantProperties = dataportField.Properties.Where(p => p.HasValue);
            var declaration        = string.Format("{{ {0};{1};{2}", startPos, width, sourceExp);

            writer.Write(declaration);
            writer.Write(relevantProperties.Any() ? ";" : " ");

            if ((writer.Column > propertyIndentation) && (relevantProperties.Any()))
            {
                writer.Indent(propertyIndentation);
                writer.WriteLine("");
            }
            else
            {
                writer.Indent(writer.Column);
            }

            relevantProperties.Write(PropertiesStyle.Field, writer);

            var lastProperty = relevantProperties.LastOrDefault();

            if (lastProperty != null)
            {
                if (lastProperty is TriggerProperty)
                {
                    writer.Write(new string(' ', lastProperty.Name.Length + 2));
                }
            }

            writer.WriteLine("}");
            writer.Unindent();
        }
        public static void Write(this PageControlGroup groupPageControl, CSideWriter writer, int propertyIndentation)
        {
            var debt               = 0;
            var controlID          = BuildControlPart(groupPageControl.ID.ToString(), 4, ref debt);
            var controlIndentation = BuildControlPart(groupPageControl.IndentationLevel.AsString(), 4, ref debt);
            var controlType        = BuildControlPart("Group", 10, ref debt);
            var declaration        = string.Format("{{ {0};{1};{2}", controlID, controlIndentation, controlType);

            writer.Write(declaration);

            if (groupPageControl.Properties.Any(p => p.HasValue))
            {
                writer.WriteLine(";");
                writer.Indent(propertyIndentation);
                groupPageControl.Properties.Write(PropertiesStyle.Field, writer);
                writer.Unindent();
            }
            else
            {
                writer.Write(" ");
            }

            //var idLength = Math.Max(groupPageControl.ID.ToString().Length, 4);
            //var id = groupPageControl.ID.ToString().PadRight(idLength);
            //var idAndIndentation = string.Format("{0};{1}", id, groupPageControl.IndentationLevel.ToString()).PadRight(9);
            //var idAndIndentationAndType = string.Format("{0};Group", idAndIndentation);

            //writer.WriteLine("{{ {0};", idAndIndentationAndType.PadRight(20));

            if (groupPageControl.Properties.Where(p => p.HasValue).LastOrDefault() is ActionListProperty)
            {
                writer.Write(new string(' ', 13));
            }

            writer.WriteLine("}");
            writer.InnerWriter.WriteLine();
        }
        public static void Write(this PageControlPart partPageControl, CSideWriter writer, int propertyIndentation)
        {
            var debt               = 0;
            var controlID          = BuildControlPart(partPageControl.ID.ToString(), 4, ref debt);
            var controlIndentation = BuildControlPart(partPageControl.IndentationLevel.AsString(), 4, ref debt);
            var controlType        = BuildControlPart("Part", 10, ref debt);
            var declaration        = string.Format("{{ {0};{1};{2};", controlID, controlIndentation, controlType);

            writer.WriteLine(declaration);


            //var idLength = Math.Max(partPageControl.ID.ToString().Length, 4);
            //var id = partPageControl.ID.ToString().PadRight(idLength);
            //var idAndIndentation = string.Format("{0};{1}", id, partPageControl.IndentationLevel.ToString());
            //var idAndIndentationAndType = string.Format("{{ {0};Part", idAndIndentation.PadRight(9));

            //writer.WriteLine("{0};", idAndIndentationAndType.PadRight(22));

            writer.Indent(propertyIndentation);
            partPageControl.Properties.Write(PropertiesStyle.Field, writer);
            writer.WriteLine("}");
            writer.Unindent();
            writer.InnerWriter.WriteLine();
        }
        public static void Write(this PageControl fieldPageControl, CSideWriter writer, int propertyIndentation)
        {
            var debt               = 0;
            var controlID          = BuildControlPart(fieldPageControl.ID.ToString(), 4, ref debt);
            var controlIndentation = BuildControlPart(fieldPageControl.IndentationLevel.AsString(), 4, ref debt);
            var controlType        = BuildControlPart("Field", 10, ref debt);
            var relevantProperties = fieldPageControl.Properties.Where(p => p.HasValue);

            switch (relevantProperties.Any())
            {
            case false:
                writer.WriteLine("{{ {0};{1};{2} }}", controlID, controlIndentation, controlType);
                break;

            default:
                writer.WriteLine("{{ {0};{1};{2};", controlID, controlIndentation, controlType);

                writer.Indent(propertyIndentation);
                fieldPageControl.Properties.Write(PropertiesStyle.Field, writer);

                var lastProperty = relevantProperties.LastOrDefault();
                if (lastProperty != null)
                {
                    if (lastProperty is TriggerProperty)
                    {
                        writer.Write(new string(' ', lastProperty.Name.Length + 2));
                    }
                }

                writer.WriteLine("}");
                writer.Unindent();
                break;
            }

            writer.InnerWriter.WriteLine();
        }
Пример #15
0
        public static void Write(this TableRelationProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            var indentations = 0;

            writer.Write("{0}=", property.Name);
            writer.Indent(writer.Column);
            indentations++;

            foreach (var tableRelationLine in property.Value)
            {
                if (tableRelationLine != property.Value.First())
                {
                    writer.Write("ELSE ");
                }

                if (tableRelationLine.Conditions.Any())
                {
                    writer.Write("IF (");

                    // Only indent if multiple conditions exist. Note that C/SIDE doesn't properly unindent.
                    if (tableRelationLine.Conditions.Count() > 1)
                    {
                        writer.Indent(writer.Column); // conditions
                        indentations++;
                    }

                    foreach (var condition in tableRelationLine.Conditions)
                    {
                        writer.Write("{0}={1}({2})", condition.FieldName, condition.Type.ToString().ToUpper(), condition.Value);

                        var isLastCondition = (condition == tableRelationLine.Conditions.Last());

                        switch (isLastCondition)
                        {
                        case false:
                            writer.WriteLine(",");
                            break;
                        }
                    }

                    writer.Write(") ");
                }

                writer.Write(tableRelationLine.TableName.QuotedExcept('/', '.', '-'));

                if (!string.IsNullOrEmpty(tableRelationLine.FieldName))
                {
                    writer.Write(".{0}", tableRelationLine.FieldName.QuotedExcept('/', '.', '-'));
                }

                if (tableRelationLine.TableFilter.Any())
                {
                    writer.Write(" WHERE (");

                    if (tableRelationLine.TableFilter.Count() > 1)
                    {
                        writer.Indent(writer.Column); // filters
                        indentations++;
                    }

                    foreach (var tableFilterLine in tableRelationLine.TableFilter)
                    {
                        writer.Write("{0}={1}({2})", tableFilterLine.FieldName, tableFilterLine.Type.AsString(), tableFilterLine.Value);

                        switch (tableFilterLine == tableRelationLine.TableFilter.Last())
                        {
                        case true:
                            writer.Write(")");
                            break;

                        default:
                            writer.WriteLine(",");
                            break;
                        }
                    }
                }

                var isLastLine = (tableRelationLine == property.Value.Last());

                if (!isLastLine)
                {
                    writer.WriteLine("");
                }
                else
                if (isLastProperty)
                {
                    writer.Write(" ");
                }
                else
                {
                    writer.WriteLine(";");
                }

                //switch (tableRelationLine == property.Value.Last() && !isLastProperty)
                //{
                //    case true:
                //        writer.WriteLine(";");
                //        break;
                //    default:
                //        writer.Write(" ");
                //        break;
                //}
            }

            for (var i = 0; i < indentations; i++)
            {
                writer.Unindent();
            }
        }